From e04fb4b465178e4fe1d1b8e80c41516979e9702f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 22 Jul 2023 10:03:39 +0200 Subject: [PATCH 001/565] chore(ci): invert client and react (alpha) --- ...e-static-web-apps-black-rock-0dc6b0d03.yml | 10 +- ...-static-web-apps-icy-glacier-004ab4303.yml | 10 +- .github/workflows/npm-publish.yml | 94 +++++++++++++------ .../oidc-client-service-worker/package.json | 16 +++- packages/oidc-client/package-lock.json | 4 +- packages/oidc-client/package.json | 4 +- packages/react-oidc/package.json | 3 +- pnpm-lock.yaml | 15 ++- 8 files changed, 117 insertions(+), 39 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index 1d00995a0..c03d0a57e 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -9,6 +9,9 @@ on: branches: - main +env: + PNPM_VERSION: 8.5.1 + NODE_VERSION: 18 jobs: skip_ci: runs-on: ubuntu-latest @@ -27,7 +30,12 @@ jobs: submodules: true - uses: actions/setup-node@v2 with: - node-version: 18 + node-version: ${{ env.NODE_VERSION }} + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: ${{ env.PNPM_VERSION }} + run_install: false - name: pnpm install run: pnpm i --frozen-lockfile working-directory: ./packages/react-oidc diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index 33e3657df..cc8d7410d 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -9,6 +9,9 @@ on: branches: - main +env: + PNPM_VERSION: 8.5.1 + NODE_VERSION: 18 jobs: skip_ci: runs-on: ubuntu-latest @@ -27,7 +30,12 @@ jobs: submodules: true - uses: actions/setup-node@v2 with: - node-version: 18 + node-version: ${{ env.NODE_VERSION }} + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: ${{ env.PNPM_VERSION }} + run_install: false - name: pnpm install run: pnpm i --frozen-lockfile working-directory: ./examples/react-oidc-demo diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index bce42b6f2..77d60464d 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -126,12 +126,45 @@ jobs: with: version: ${{ env.PNPM_VERSION }} run_install: false + + # oidc-client-service-worker + - name: pnpm version ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: pnpm version ${{ steps.tag.outputs.new_version }} + working-directory: ./packages/oidc-client-service-worker + + - name: pnpm ci + run: pnpm i --frozen-lockfile + working-directory: ./packages/oidc-client-service-worker + + - name: pnpm prepare + run: pnpm run prepare + working-directory: ./packages/oidc-client-service-worker + + - name: pnpm test + run: pnpm test -- --run + working-directory: ./packages/oidc-client-service-worker + + # oidc-client + - name: pnpm version ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: pnpm version ${{ steps.tag.outputs.new_version }} + working-directory: ./packages/oidc-client + + - name: pnpm ci + run: pnpm i --frozen-lockfile + working-directory: ./packages/oidc-client + - name: pnpm prepare + run: pnpm run prepare + working-directory: ./packages/oidc-client + + # React-oidc - name: npm version ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' run: npm version ${{ steps.tag.outputs.new_version }} working-directory: ./packages/react-oidc - + - name: pnpm i run: pnpm i --frozen-lockfile working-directory: ./packages/react-oidc @@ -139,37 +172,54 @@ jobs: - name: pnpm prepare run: pnpm run prepare working-directory: ./packages/react-oidc - + - name: pnpm test run: pnpm test -- --run working-directory: ./packages/react-oidc - - id: publish-react + - name: Commit updates package.json + uses: stefanzweifel/git-auto-commit-action@v4 + if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' + with: + commit_message: "[skip ci] Update version package.json" + commit_user_name: GitHub + commit_user_email: github-action@bot.com + commit_author: GitHub + push_options: '--force' + + # oidc-client-service-worker + - id: publish-oidc-client-service-worker uses: JS-DevTools/npm-publish@v1 if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' with: token: ${{ secrets.NPM_TOKEN }} - package: ./packages/react-oidc/package.json - - - name: pnpm version ${{ steps.tag.outputs.new_version }} - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: pnpm version ${{ steps.tag.outputs.new_version }} - working-directory: ./packages/oidc-client + package: ./packages/oidc-client-service-worker/package.json - - name: pnpm ci - run: pnpm i --frozen-lockfile - working-directory: ./packages/oidc-client - - - name: pnpm prepare - run: pnpm run prepare + # oidc-client + - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json working-directory: ./packages/oidc-client - + - id: publish-oidc-client uses: JS-DevTools/npm-publish@v1 if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' with: token: ${{ secrets.NPM_TOKEN }} package: ./packages/oidc-client/package.json + + # react-oidc + - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json + working-directory: ./packages/react-oidc + + - id: publish-react + uses: JS-DevTools/npm-publish@v1 + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + with: + token: ${{ secrets.NPM_TOKEN }} + package: ./packages/react-oidc/package.json - name: SonarCloud Scan uses: sonarsource/sonarcloud-github-action@master @@ -183,20 +233,10 @@ jobs: -Dsonar.projectKey=AxaGuilDEv_react-oidc -Dsonar.exclusions=**/*.spec.js,**/*.stories.js,Scripts/**,**/*.scss,**/__snapshots__/**,**/*[Tt]ests.cs,**/node_modules/**,**/ClientApp/build/**,**/ClientApp/.storybook/**,**/ClientApp/storybook-static/**,**/obj/**,**/__mocks__/**,**/ClientApp/src/serviceWorker.ts -Dsonar.javascript.lcov.reportPaths=**/coverage/lcov.info - - - name: Commit updates package.json - uses: stefanzweifel/git-auto-commit-action@v4 - if: github.ref == 'refs/heads/main' - with: - commit_message: "[skip ci] Update version package.json" - commit_user_name: GitHub - commit_user_email: github-action@bot.com - commit_author: GitHub - push_options: '--force' - name: Create a GitHub release uses: ncipollo/release-action@v1 - if: github.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' with: tag: ${{ steps.tag_version.outputs.new_tag }} name: Release ${{ steps.tag_version.outputs.new_tag }} diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 399a8169c..dcd21abc1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,8 +1,8 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.16.1", - "private": true, + "version": "6.24.1", "type": "module", + "private": false, "main": "dist/OidcServiceWorker.js", "types": "dist/OidcServiceWorker.d.ts", "description": "OpenID Connect & OAuth authentication service worker", @@ -19,6 +19,10 @@ "oauth2", "oauth" ], + "repository": { + "type": "git", + "url": "https://github.com/AxaGuilDEv/react-oidc.git" + }, "scripts": { "copy": "cpy --flat ./src/OidcTrustedDomains.js ./dist/", "build": "tsc && vite build && pnpm run copy", @@ -41,13 +45,17 @@ "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-react": "^7.32.2", "eslint-plugin-simple-import-sort": "^10.0.0", - "rimraf": "5.0.1", + "rimraf": "5.0.1", "msw": "1.2.2", "typescript": "5.1.6", "vite": "^4.4.4", "vite-plugin-dts": "^3.3.0", "vitest": "^0.33.0" }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, "license": "MIT", "browserslist": { "production": [ @@ -61,4 +69,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/packages/oidc-client/package-lock.json b/packages/oidc-client/package-lock.json index 65ddfd28d..edc2f0212 100644 --- a/packages/oidc-client/package-lock.json +++ b/packages/oidc-client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.24.1", + "version": "6.25.3-alpha950", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@axa-fr/vanilla-oidc", - "version": "6.24.1", + "version": "6.25.3-alpha950", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b566b1bfd..6a6e0e4bd 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -19,8 +19,10 @@ "type": "git", "url": "https://github.com/AxaGuilDEv/react-oidc.git" }, + "dependencies": { + "@axa-fr/oidc-client-service-worker": "workspace:*" + }, "devDependencies": { - "@axa-fr/oidc-client-service-worker": "workspace:*", "@testing-library/dom": "^9.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "13.3.0", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b2d851439..44f0d21d4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -41,7 +41,8 @@ }, "dependencies": { "@axa-fr/oidc-client-service-worker": "workspace:*", - "@axa-fr/vanilla-oidc": "workspace:*" + "@axa-fr/vanilla-oidc": "workspace:*", + "base64-js": "1.5.1" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23941c819..7096bd3a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: @@ -178,10 +182,11 @@ importers: version: 0.33.0(jsdom@22.1.0) packages/oidc-client: - devDependencies: + dependencies: '@axa-fr/oidc-client-service-worker': specifier: workspace:* version: link:../oidc-client-service-worker + devDependencies: '@testing-library/dom': specifier: ^9.3.1 version: 9.3.1 @@ -299,6 +304,9 @@ importers: '@axa-fr/vanilla-oidc': specifier: workspace:* version: link:../oidc-client + base64-js: + specifier: 1.5.1 + version: 1.5.1 react-router-dom: specifier: ^6.0.0 version: 6.14.1(react-dom@18.2.0)(react@18.2.0) @@ -1251,6 +1259,7 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] requiresBuild: true dev: false optional: true @@ -1260,6 +1269,7 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] requiresBuild: true dev: false optional: true @@ -1269,6 +1279,7 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] requiresBuild: true dev: false optional: true @@ -1278,6 +1289,7 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] requiresBuild: true dev: false optional: true @@ -2170,7 +2182,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} From 254b9f945bff154e127782522244378a3a224f94 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 24 Jul 2023 17:35:53 +1000 Subject: [PATCH 002/565] refactor(post-install): Alter post-install to not have a dependency on 'cpy' (#1106) --- packages/oidc-client/bin/post-install.mjs | 55 ++++++++++++++--------- packages/react-oidc/bin/post-install.js | 35 --------------- packages/react-oidc/bin/post-install.mjs | 48 ++++++++++++++++++++ packages/react-oidc/package.json | 2 +- 4 files changed, 82 insertions(+), 58 deletions(-) delete mode 100644 packages/react-oidc/bin/post-install.js create mode 100644 packages/react-oidc/bin/post-install.mjs diff --git a/packages/oidc-client/bin/post-install.mjs b/packages/oidc-client/bin/post-install.mjs index e6dde94e8..ef873a078 100644 --- a/packages/oidc-client/bin/post-install.mjs +++ b/packages/oidc-client/bin/post-install.mjs @@ -1,37 +1,48 @@ -import cpy from 'cpy'; import path from 'path'; +import fs from 'fs'; /** * Script to run after npm install * * Copy selected files to user's directory */ +const script_prefix= 'oidc-client'; -const initPath = process.env.INIT_CWD; -// console.log('current dir:', process.cwd()); -// console.log('userPath:', initPath); +const copyFile = async (src, dest, overwrite) => { + if (!overwrite) { + if (fileExists(dest)) { + console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); + return; + } + } + await fs.promises.copyFile(src, dest); + console.log(`[${script_prefix}:copy] ${dest}`); +}; -function copyProgress(progress) { - console.log('✓ [oidc-client:copy] ', progress.destinationPath); -} +const fileExists = (path) => { + return !!fs.existsSync(path); +}; + +const initPath = process.env.INIT_CWD; -//TODO: Fragile.. need to find a better way to get the path const srcDir = '../oidc-client-service-worker/dist/'; const destinationDir = path.join(initPath, 'public'); -const FILE_EXISTS_CODE = 'EEXIST'; - -await cpy([path.join(srcDir,'OidcServiceWorker.js')], destinationDir, { - overwrite: true, -}).on('progress', copyProgress); -try { - await cpy([path.join(srcDir,'OidcTrustedDomains.js')], destinationDir, { +const files = [ + { + fileName: 'OidcServiceWorker.js', + overwrite: true, + }, + { + fileName: 'OidcTrustedDomains.js', overwrite: false, - }).on('progress', copyProgress); -} catch (e) { - if (e.code === FILE_EXISTS_CODE) { - console.log( - `✗ [oidc-client:skip] OidcTrustedDomains.js not copied, already exists in ${destinationDir}` - ); - } else throw e; + }, +]; + +for await (const f of files) { + await copyFile( + path.join(srcDir, f.fileName), + path.join(destinationDir, f.fileName), + f.overwrite + ); } diff --git a/packages/react-oidc/bin/post-install.js b/packages/react-oidc/bin/post-install.js deleted file mode 100644 index 49f138d49..000000000 --- a/packages/react-oidc/bin/post-install.js +++ /dev/null @@ -1,35 +0,0 @@ -import cpy from 'cpy'; -import path from 'path'; - -/** - * Script to run after npm install - * - * Copy selected files to user's directory - */ - -const initPath = process.env.INIT_CWD; -// console.log('currentdir:', process.cwd()); -// console.log('userPath:', initPath); - -function copyProgress(progress) { - console.log('✓ [react-oidc:copy] ', progress.destinationPath); -} - -const srcDir = '../oidc-client-service-worker/dist/'; -const destinationDir = path.join(initPath, 'public'); - -await cpy([path.join(srcDir,'OidcServiceWorker.js')], destinationDir, { - overwrite: true, -}).on('progress', copyProgress); - -try { - await cpy([path.join(srcDir,'OidcTrustedDomains.js')], destinationDir, { - overwrite: false, - }).on('progress', copyProgress); -} catch (e) { - if (e.code === 'EEXIST') { //file exists - console.log( - `✗ [react-oidc:skip] OidcTrustedDomains.js not copied, already exists in ${destinationDir}` - ); - } else throw e; -} diff --git a/packages/react-oidc/bin/post-install.mjs b/packages/react-oidc/bin/post-install.mjs new file mode 100644 index 000000000..b9fda60d9 --- /dev/null +++ b/packages/react-oidc/bin/post-install.mjs @@ -0,0 +1,48 @@ +import path from 'path'; +import fs from 'fs'; + +/** + * Script to run after npm install + * + * Copy selected files to user's directory + */ +const script_prefix= 'react-oidc'; + +const copyFile = async (src, dest, overwrite) => { + if (!overwrite) { + if (fileExists(dest)) { + console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); + return; + } + } + await fs.promises.copyFile(src, dest); + console.log(`[${script_prefix}:copy] ${dest}`); +}; + +const fileExists = (path) => { + return !!fs.existsSync(path); +}; + +const initPath = process.env.INIT_CWD; + +const srcDir = '../oidc-client-service-worker/dist/'; +const destinationDir = path.join(initPath, 'public'); + +const files = [ + { + fileName: 'OidcServiceWorker.js', + overwrite: true, + }, + { + fileName: 'OidcTrustedDomains.js', + overwrite: false, + }, +]; + +for await (const f of files) { + await copyFile( + path.join(srcDir, f.fileName), + path.join(destinationDir, f.fileName), + f.overwrite + ); +} diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 44f0d21d4..9f57a8023 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -35,7 +35,7 @@ "serve": "vite preview", "test": "vitest --root . --coverage", "clean": "rimraf dist", - "postinstall": "node ./bin/post-install.js", + "postinstall": "node ./bin/post-install.mjs", "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "lint": "eslint src" }, From d0ede07c1cd1aaf8526917df299d7a308eb7ea9d Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 24 Jul 2023 17:36:22 +1000 Subject: [PATCH 003/565] ci(version): Add a period between version alpha|beta and run_number (#1107) (alpha) --- .github/workflows/npm-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 77d60464d..e2f92b316 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -111,10 +111,10 @@ jobs: echo "new_version=$version" >> $GITHUB_OUTPUT fi if [[ '${{ steps.which_tag.outputs.tag }}' = 'alpha' ]]; then - echo "new_version=$version-alpha${{ github.run_number }}" >> $GITHUB_OUTPUT + echo "new_version=$version-alpha.${{ github.run_number }}" >> $GITHUB_OUTPUT fi if [[ '${{ steps.which_tag.outputs.tag }}' = 'beta' ]]; then - echo "new_version=$version-beta${{ github.run_number }}" >> $GITHUB_OUTPUT + echo "new_version=$version-beta.${{ github.run_number }}" >> $GITHUB_OUTPUT fi - uses: actions/setup-node@v2 From ccc7c429cde1da743993d16db17ef343f374f00b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 24 Jul 2023 11:21:43 +0200 Subject: [PATCH 004/565] fix(ci): website and packages psotinstall error when pnpm from root (#1108) --- ...e-static-web-apps-black-rock-0dc6b0d03.yml | 10 +- ...-static-web-apps-icy-glacier-004ab4303.yml | 12 ++- packages/oidc-client/bin/post-install.mjs | 94 ++++++++++--------- packages/react-oidc/bin/post-install.mjs | 94 ++++++++++--------- 4 files changed, 119 insertions(+), 91 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index c03d0a57e..68c99a0ce 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -38,10 +38,12 @@ jobs: run_install: false - name: pnpm install run: pnpm i --frozen-lockfile - working-directory: ./packages/react-oidc + - name: pnpm install + run: pnpm i --frozen-lockfile + working-directory: ./examples/react-oidc-demo - name: pnpm run build run: pnpm run build - working-directory: ./packages/react-oidc + working-directory: ./examples/react-oidc-demo - name: Build And Deploy id: builddeploy uses: Azure/static-web-apps-deploy@v1 @@ -52,9 +54,9 @@ jobs: skip_app_build: true ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: "/packages/react-oidc/build" # App source code path + app_location: "/examples/react-oidc-demo/dist" # App source code path api_location: "" # Api source code path - optional - output_location: "build" # Built app content directory - optional + output_location: "dist" # Built app content directory - optional ###### End of Repository/Build Configurations ###### close_pull_request_job: diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index cc8d7410d..938ba00dd 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -36,9 +36,14 @@ jobs: with: version: ${{ env.PNPM_VERSION }} run_install: false + - name: pnpm install root + run: pnpm i --frozen-lockfile - name: pnpm install run: pnpm i --frozen-lockfile - working-directory: ./examples/react-oidc-demo + working-directory: ./examples/oidc-client-demo + - name: pnpm run build + run: pnpm run build + working-directory: ./examples/oidc-client-demo - name: Build And Deploy id: builddeploy uses: Azure/static-web-apps-deploy@v1 @@ -46,11 +51,12 @@ jobs: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_ICY_GLACIER_004AB4303 }} repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) action: "upload" + skip_app_build: true ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: "/examples/react-oidc-demo" # App source code path + app_location: "/examples/oidc-client-demo/dist" # App source code path api_location: "" # Api source code path - optional - output_location: "build" # Built app content directory - optional + output_location: "dist" # Built app content directory - optional ###### End of Repository/Build Configurations ###### close_pull_request_job: diff --git a/packages/oidc-client/bin/post-install.mjs b/packages/oidc-client/bin/post-install.mjs index ef873a078..ce0c6bc88 100644 --- a/packages/oidc-client/bin/post-install.mjs +++ b/packages/oidc-client/bin/post-install.mjs @@ -1,48 +1,58 @@ import path from 'path'; import fs from 'fs'; -/** - * Script to run after npm install - * - * Copy selected files to user's directory - */ -const script_prefix= 'oidc-client'; - -const copyFile = async (src, dest, overwrite) => { - if (!overwrite) { - if (fileExists(dest)) { - console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); - return; +try { + + /** + * Script to run after npm install + * + * Copy selected files to user's directory + */ + const script_prefix= 'oidc-client'; + + const copyFile = async (src, dest, overwrite) => { + if(!fileExists(src)) { + console.log(`[${script_prefix}:skip] file does not exist ${src}`); + return; + } + if (!overwrite) { + if (fileExists(dest)) { + console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); + return; + } } + await fs.promises.copyFile(src, dest); + console.log(`[${script_prefix}:copy] ${dest}`); + }; + + const fileExists = (path) => { + return !!fs.existsSync(path); + }; + + const initPath = process.env.INIT_CWD; + + const srcDir = '../oidc-client-service-worker/dist/'; + const destinationDir = path.join(initPath, 'public'); + + const files = [ + { + fileName: 'OidcServiceWorker.js', + overwrite: true, + }, + { + fileName: 'OidcTrustedDomains.js', + overwrite: false, + }, + ]; + + for await (const file of files) { + await copyFile( + path.join(srcDir, file.fileName), + path.join(destinationDir, file.fileName), + file.overwrite + ); } - await fs.promises.copyFile(src, dest); - console.log(`[${script_prefix}:copy] ${dest}`); -}; - -const fileExists = (path) => { - return !!fs.existsSync(path); -}; - -const initPath = process.env.INIT_CWD; - -const srcDir = '../oidc-client-service-worker/dist/'; -const destinationDir = path.join(initPath, 'public'); - -const files = [ - { - fileName: 'OidcServiceWorker.js', - overwrite: true, - }, - { - fileName: 'OidcTrustedDomains.js', - overwrite: false, - }, -]; -for await (const f of files) { - await copyFile( - path.join(srcDir, f.fileName), - path.join(destinationDir, f.fileName), - f.overwrite - ); -} +} catch (err) { + console.warn(err); +} \ No newline at end of file diff --git a/packages/react-oidc/bin/post-install.mjs b/packages/react-oidc/bin/post-install.mjs index b9fda60d9..67c64c9db 100644 --- a/packages/react-oidc/bin/post-install.mjs +++ b/packages/react-oidc/bin/post-install.mjs @@ -1,48 +1,58 @@ import path from 'path'; import fs from 'fs'; -/** - * Script to run after npm install - * - * Copy selected files to user's directory - */ -const script_prefix= 'react-oidc'; - -const copyFile = async (src, dest, overwrite) => { - if (!overwrite) { - if (fileExists(dest)) { - console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); +try { + + /** + * Script to run after npm install + * + * Copy selected files to user's directory + */ + const script_prefix= 'oidc-client'; + + const copyFile = async (src, dest, overwrite) => { + if(!fileExists(src)) { + console.log(`[${script_prefix}:skip] file does not exist ${src}`); return; } + if (!overwrite) { + if (fileExists(dest)) { + console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); + return; + } + } + await fs.promises.copyFile(src, dest); + console.log(`[${script_prefix}:copy] ${dest}`); + }; + + const fileExists = (path) => { + return !!fs.existsSync(path); + }; + + const initPath = process.env.INIT_CWD; + + const srcDir = '../oidc-client-service-worker/dist/'; + const destinationDir = path.join(initPath, 'public'); + + const files = [ + { + fileName: 'OidcServiceWorker.js', + overwrite: true, + }, + { + fileName: 'OidcTrustedDomains.js', + overwrite: false, + }, + ]; + + for await (const file of files) { + await copyFile( + path.join(srcDir, file.fileName), + path.join(destinationDir, file.fileName), + file.overwrite + ); } - await fs.promises.copyFile(src, dest); - console.log(`[${script_prefix}:copy] ${dest}`); -}; - -const fileExists = (path) => { - return !!fs.existsSync(path); -}; - -const initPath = process.env.INIT_CWD; - -const srcDir = '../oidc-client-service-worker/dist/'; -const destinationDir = path.join(initPath, 'public'); - -const files = [ - { - fileName: 'OidcServiceWorker.js', - overwrite: true, - }, - { - fileName: 'OidcTrustedDomains.js', - overwrite: false, - }, -]; - -for await (const f of files) { - await copyFile( - path.join(srcDir, f.fileName), - path.join(destinationDir, f.fileName), - f.overwrite - ); -} + +} catch (err) { + console.warn(err); +} \ No newline at end of file From 9139393069142b05708f73a64ee81afdfaf0104f Mon Sep 17 00:00:00 2001 From: kosciolek <45483493+kosciolek@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:24:47 +0200 Subject: [PATCH 005/565] fix(oidc): Service Worker improper token revocation when logging out and showAccessToken=true (#1104) (release) fixes #1095 --- .../src/OidcServiceWorker.ts | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 22c940865..e3777ef67 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -239,24 +239,30 @@ const handleFetch = async (event: FetchEvent) => { integrity: clonedRequest.integrity, }).then(hideTokens(currentDatabase)); } - return undefined; + + // if showAccessToken=true, the token is already in the body + // of the request, and it does not need to be injected + // and we can simply clone the request + return fetch(originalRequest, { + body: actualBody, + method: clonedRequest.method, + headers: { + ...serializeHeaders(originalRequest.headers), + }, + mode: clonedRequest.mode, + cache: clonedRequest.cache, + redirect: clonedRequest.redirect, + referrer: clonedRequest.referrer, + credentials: clonedRequest.credentials, + integrity: clonedRequest.integrity, + }); }); response .then((r) => { - if (r !== undefined) { - resolve(r); - } else { - console.log('success undefined'); - reject(new Error('Response is undefined inside a success')); - } + resolve(r); }) .catch((err) => { - if (err !== undefined) { - reject(err); - } else { - console.log('error undefined'); - reject(new Error('Response is undefined inside a error')); - } + reject(err); }); }); From 34ac877f2a82c9e048896bec8d077274216b8619 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 24 Jul 2023 10:27:14 +0000 Subject: [PATCH 006/565] [skip ci] Update version package.json --- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package-lock.json | 4 +-- packages/oidc-client/package.json | 2 +- .../oidc-client/public/OidcServiceWorker.js | 28 ++++++++++--------- packages/react-oidc/package.json | 2 +- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index dcd21abc1..2913ca8d9 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.24.1", + "version": "6.25.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package-lock.json b/packages/oidc-client/package-lock.json index edc2f0212..a7c64ed61 100644 --- a/packages/oidc-client/package-lock.json +++ b/packages/oidc-client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.3-alpha950", + "version": "6.25.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.3-alpha950", + "version": "6.25.4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6a6e0e4bd..7f7689826 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.24.1", + "version": "6.25.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/public/OidcServiceWorker.js b/packages/oidc-client/public/OidcServiceWorker.js index b70fc4b42..0d3e97871 100644 --- a/packages/oidc-client/public/OidcServiceWorker.js +++ b/packages/oidc-client/public/OidcServiceWorker.js @@ -396,22 +396,24 @@ const handleFetch = async (event) => { integrity: clonedRequest.integrity }).then(hideTokens(currentDatabase)); } - return void 0; + return fetch(originalRequest, { + body: actualBody, + method: clonedRequest.method, + headers: { + ...serializeHeaders(originalRequest.headers) + }, + mode: clonedRequest.mode, + cache: clonedRequest.cache, + redirect: clonedRequest.redirect, + referrer: clonedRequest.referrer, + credentials: clonedRequest.credentials, + integrity: clonedRequest.integrity + }); }); response.then((r) => { - if (r !== void 0) { - resolve(r); - } else { - console.log("success undefined"); - reject(new Error("Response is undefined inside a success")); - } + resolve(r); }).catch((err) => { - if (err !== void 0) { - reject(err); - } else { - console.log("error undefined"); - reject(new Error("Response is undefined inside a error")); - } + reject(err); }); }); event.waitUntil(event.respondWith(maPromesse)); diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9f57a8023..261f2a4c2 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "6.24.1", + "version": "6.25.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 8786e85190dbc23de4311381b1c59f08673b0436 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 24 Jul 2023 12:50:06 +0200 Subject: [PATCH 007/565] fix(ci): github release (release) --- .github/workflows/npm-publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index e2f92b316..b5f637fa1 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -238,6 +238,6 @@ jobs: uses: ncipollo/release-action@v1 if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' with: - tag: ${{ steps.tag_version.outputs.new_tag }} - name: Release ${{ steps.tag_version.outputs.new_tag }} - body: ${{ steps.tag_version.outputs.changelog }} + tag: ${{ steps.tag_release.outputs.new_tag }} + name: Release ${{ steps.tag_release.outputs.new_tag }} + body: ${{ steps.tag_release.outputs.changelog }} From 7c86bd73d0e880a8ebbdfcad70ed5f2492cc0bc3 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 24 Jul 2023 10:52:50 +0000 Subject: [PATCH 008/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package-lock.json | 4 ++-- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 2913ca8d9..b25f8c36f 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.25.4", + "version": "6.25.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package-lock.json b/packages/oidc-client/package-lock.json index a7c64ed61..866d07577 100644 --- a/packages/oidc-client/package-lock.json +++ b/packages/oidc-client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.4", + "version": "6.25.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.4", + "version": "6.25.5", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7f7689826..a7ddaa4d7 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.4", + "version": "6.25.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 261f2a4c2..e11073a2a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "6.25.4", + "version": "6.25.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 288ce9937e6e1cb8c1b7c7f6909ebef8a48f12e5 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 24 Jul 2023 14:30:23 +0200 Subject: [PATCH 009/565] fix(react): ajust peerDependencies (release) --- packages/react-oidc/package.json | 4 +--- pnpm-lock.yaml | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e11073a2a..03699790a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -45,9 +45,7 @@ "base64-js": "1.5.1" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" + "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { "@testing-library/jest-dom": "5.16.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7096bd3a6..0c5cf5ee6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -307,9 +307,6 @@ importers: base64-js: specifier: 1.5.1 version: 1.5.1 - react-router-dom: - specifier: ^6.0.0 - version: 6.14.1(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': specifier: 5.16.5 @@ -1368,6 +1365,7 @@ packages: /@remix-run/router@1.7.1: resolution: {integrity: sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==} engines: {node: '>=14'} + dev: true /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} @@ -5104,6 +5102,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-router: 6.14.1(react@18.2.0) + dev: true /react-router@6.14.1(react@18.2.0): resolution: {integrity: sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==} @@ -5113,6 +5112,7 @@ packages: dependencies: '@remix-run/router': 1.7.1 react: 18.2.0 + dev: true /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} From 6b5ba95db3549c4cfd5ea0412c6f0de046256a57 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 24 Jul 2023 12:33:22 +0000 Subject: [PATCH 010/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package-lock.json | 4 ++-- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index b25f8c36f..ab36e0a56 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.25.5", + "version": "6.25.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package-lock.json b/packages/oidc-client/package-lock.json index 866d07577..f123ccb70 100644 --- a/packages/oidc-client/package-lock.json +++ b/packages/oidc-client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.5", + "version": "6.25.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.5", + "version": "6.25.6", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a7ddaa4d7..7b07d22b9 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/vanilla-oidc", - "version": "6.25.5", + "version": "6.25.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 03699790a..228993310 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "6.25.5", + "version": "6.25.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 762ca423a2efe946d4213a3c482638a386a5b555 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Thu, 27 Jul 2023 00:11:29 +1000 Subject: [PATCH 011/565] ci(lint): Move eslint config to root. Add GH workflow to run lint. (#1109) - auto-fix minor lint warnings. --- .eslintignore | 13 + .eslintrc.cjs | 170 +- .github/workflows/lint.yml | 45 + .prettierignore | 11 + .prettierrc.cjs | 18 + .prettierrc.json | 4 - __mocks__/fileMock.js | 1 - __mocks__/styleMock.js | 1 - config/defaultEslintConfig.cjs | 151 - examples/nextjs-demo/package-lock.json | 611 --- examples/react-oidc-demo/.eslintrc.cjs | 18 - examples/react-oidc-demo/package.json | 8 - package.json | 9 + .../oidc-client-service-worker/.eslintrc.cjs | 18 - .../config/defaultEslintConfig.cjs | 148 - .../oidc-client-service-worker/package.json | 8 - packages/oidc-client/.eslintrc.cjs | 17 - .../config/defaultEslintConfig.cjs | 148 - packages/oidc-client/package-lock.json | 4725 ----------------- packages/oidc-client/package.json | 6 - packages/oidc-client/src/iniWorker.spec.ts | 4 +- packages/oidc-client/src/logout.spec.ts | 18 +- packages/oidc-client/src/parseTokens.spec.ts | 17 +- packages/oidc-client/src/requests.spec.ts | 2 +- packages/oidc-client/src/route-utils.spec.ts | 5 +- packages/oidc-client/tests/setup.js | 4 +- packages/oidc-client/vite.config.ts | 9 +- packages/react-oidc/.eslintrc.cjs | 18 - .../react-oidc/config/defaultEslintConfig.cjs | 148 - packages/react-oidc/package.json | 8 - .../src/core/routes/OidcRoutes.spec.tsx | 7 +- .../src/core/routes/withRouter.spec.tsx | 7 +- packages/react-oidc/tests/setup.js | 4 +- packages/react-oidc/vite.config.ts | 7 +- pnpm-lock.yaml | 423 +- pnpm-workspace.yaml | 2 +- tsconfig.base.json | 13 + tsconfig.eslint.json | 3 + tsconfig.json | 5 + 39 files changed, 475 insertions(+), 6359 deletions(-) create mode 100644 .eslintignore create mode 100644 .github/workflows/lint.yml create mode 100644 .prettierignore create mode 100644 .prettierrc.cjs delete mode 100644 .prettierrc.json delete mode 100644 __mocks__/fileMock.js delete mode 100644 __mocks__/styleMock.js delete mode 100644 config/defaultEslintConfig.cjs delete mode 100644 examples/nextjs-demo/package-lock.json delete mode 100644 examples/react-oidc-demo/.eslintrc.cjs delete mode 100644 packages/oidc-client-service-worker/.eslintrc.cjs delete mode 100644 packages/oidc-client-service-worker/config/defaultEslintConfig.cjs delete mode 100644 packages/oidc-client/.eslintrc.cjs delete mode 100644 packages/oidc-client/config/defaultEslintConfig.cjs delete mode 100644 packages/oidc-client/package-lock.json delete mode 100644 packages/react-oidc/.eslintrc.cjs delete mode 100644 packages/react-oidc/config/defaultEslintConfig.cjs create mode 100644 tsconfig.base.json create mode 100644 tsconfig.eslint.json create mode 100644 tsconfig.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..21c3cdfe7 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +**/*.d.ts +packages/**/dist/**/* +packages/**/public/**/* +packages/**/coverage/**/* +packages/**/fixtures/**/* +node_modules +# TODO Disable examples, we want to include it. +examples/**/* +public/**/* +scripts/**/* +.github +.changeset +vite.config.js \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 968c0320f..48970a76b 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,18 +1,156 @@ module.exports = { - extends: [__dirname+'/config/defaultEslintConfig.cjs'], - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: __dirname, + parser: '@typescript-eslint/parser', + root: true, + extends: [ + // 'standard', + 'plugin:react/recommended', + 'plugin:react-hooks/recommended', + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + //'plugin:@typescript-eslint/recommended-type-checked', //ideally we want this on + // 'plugin:@typescript-eslint/stylistic-type-checked', + 'plugin:import/typescript', + 'plugin:jsx-a11y/recommended', + 'prettier', // must be last + ], + plugins: ['@typescript-eslint', 'simple-import-sort', 'testing-library', 'react', 'prettier'], + parserOptions: { + project: ['./tsconfig.eslint.json', './packages/*/tsconfig.eslint.json'], + ecmaVersion: 2022, + sourceType: 'module', + ecmaFeatures: { + jsx: true, }, - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - 'selector': 'variable', - 'types': ['boolean'], - 'format': ['PascalCase'], - 'prefix': ['is', 'with', 'should', 'has', 'can', 'did', 'will'] - } - ] - } - } \ No newline at end of file + warnOnUnsupportedTypeScriptVersion: true, + }, + rules: { + // '@typescript-eslint/naming-convention': [ + // 'error', + // { + // selector: 'variable', + // types: ['boolean'], + // format: ['PascalCase'], + // prefix: ['is', 'with', 'should', 'has', 'can', 'did', 'will'], + // }, + // ], + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info|index|data', + ignoreRestSiblings: true, + }, + ], + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'warn', + 'no-redeclare': 'off', + '@typescript-eslint/no-redeclare': 'warn', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': [ + 'warn', + { + functions: false, + classes: false, + variables: false, + typedefs: false, + }, + ], + 'no-unused-expressions': 'off', + '@typescript-eslint/no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTernary: true, + allowTaggedTemplates: true, + }, + ], + '@typescript-eslint/triple-slash-reference': 'off', + '@typescript-eslint/member-delimiter-style': [ + 'error', + { + multiline: { + delimiter: 'semi', + requireLast: true, + }, + singleline: { + delimiter: 'semi', + requireLast: false, + }, + }, + ], + camelcase: 'off', + 'comma-dangle': [ + 'error', + { + arrays: 'always-multiline', + objects: 'always-multiline', + imports: 'always-multiline', + exports: 'always-multiline', + functions: 'always-multiline', + }, + ], + 'array-callback-return': 'warn', + 'jsx-quotes': ['error', 'prefer-double'], + // 'max-len': ['error', { code: 120 }], + indent: 'off', + // quotes: ['error', 'single'], + semi: ['error', 'always'], + 'space-before-function-paren': 'off', + + 'import/no-named-as-default': 'off', + 'import/no-named-as-default-member': 'off', + 'import/default': 'off', + 'import/named': 'off', + 'import/namespace': 'off', + 'import/no-unresolved': 'off', + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + 'react/prop-types': 'off', + 'react/jsx-wrap-multilines': 'error', + 'react/react-in-jsx-scope': 'off', + 'react/display-name': 'off', + // https://github.com/facebook/react/tree/master/packages/-react-hooks + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'off', + }, + + overrides: [ + { + files: ['*.js', '*.jsx'], + rules: { + '@typescript-eslint/no-var-requires': 'off', + }, + }, + { + // 3) Now we enable -testing-library rules or preset only for matching files! + files: ['**/?(*.)+(spec|test).[jt]s?(x)'], + extends: ['plugin:testing-library/react'], + rules: { + 'testing-library/await-async-query': 'error', + 'testing-library/no-await-sync-query': 'error', + 'testing-library/no-debugging-utils': 'warn', + 'testing-library/no-dom-import': 'off', + 'testing-library/no-unnecessary-act': 'off', + }, + }, + ], + settings: { + react: { + version: 'detect', + }, + // 'import/parsers': { + // '@typescript-eslint/parser': ['.ts', '.tsx'], + // }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + }, + }, + }, +}; diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..5797ce19a --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,45 @@ +name: Lint + +on: + # Trigger the workflow on push or pull request, + # but only for the main branch + push: + # branches: + # - main + pull_request: + # branches: + # - main + +env: + PNPM_VERSION: 8.5.1 + NODE_VERSION: 18 + +jobs: + run-linters: + name: Run linters + runs-on: ubuntu-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + + - name: Install node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: ${{ env.PNPM_VERSION }} + run_install: false + + # ESLint and Prettier must be in `package.json` + - name: Install dependencies + run: pnpm i + + - name: Run linters + uses: wearerequired/lint-action@v2 + with: + eslint: true + prettier: false #runs part of eslint \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..88b151d4f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,11 @@ +# deep dirs +**/dist +**/node_modules +**/fixtures + +# directories +.github +.changeset + +# files +pnpm-lock.yaml \ No newline at end of file diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 000000000..dbb27c237 --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + printWidth: 100, + semi: true, + singleQuote: true, + jsxSingleQuote: true, + tabWidth: 2, + trailingComma: 'es5', + useTabs: true, + plugins: [], + overrides: [ + { + files: ['.*', '*.json', '*.md', '*.toml', '*.yml'], + options: { + useTabs: false, + }, + }, + ], +}; diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 8de7f847e..000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "jsxSingleQuote": true, - "singleQuote": true -} \ No newline at end of file diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js deleted file mode 100644 index 86059f362..000000000 --- a/__mocks__/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'test-file-stub'; diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js deleted file mode 100644 index f053ebf79..000000000 --- a/__mocks__/styleMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/config/defaultEslintConfig.cjs b/config/defaultEslintConfig.cjs deleted file mode 100644 index 712543dd7..000000000 --- a/config/defaultEslintConfig.cjs +++ /dev/null @@ -1,151 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - extends: [ - 'standard', - // 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - // 'plugin:import/errors', - //'plugin:import/warnings', - 'plugin:import/typescript', - 'plugin:jsx-a11y/recommended', - ], - plugins: ['simple-import-sort', 'testing-library'], - env: { - node: true, - es6: true, - browser: true, - }, - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - // typescript-eslint specific options - warnOnUnsupportedTypeScriptVersion: true, - }, - rules: { - // '@typescript-eslint/indent': ['error', 2], - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info', - ignoreRestSiblings: true, - }, - ], - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }, - ], - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { - delimiter: 'semi', - requireLast: true, - }, - singleline: { - delimiter: 'semi', - requireLast: false, - }, - }, - ], - camelcase: 'off', - 'comma-dangle': [ - 'error', - { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }, - ], - 'array-callback-return': 'warn', - 'jsx-quotes': ['error', 'prefer-double'], - // 'max-len': ['error', { code: 120 }], - indent: 'off', - // quotes: ['error', 'single'], - semi: ['error', 'always'], - 'space-before-function-paren': 'off', - - 'import/no-named-as-default': 'off', - 'import/no-named-as-default-member': 'off', - 'import/default': 'off', - 'import/named': 'off', - 'import/namespace': 'off', - 'import/no-unresolved': 'off', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'react/prop-types': 'off', - 'react/jsx-wrap-multilines': 'error', - 'react/react-in-jsx-scope': 'off', - 'react/display-name': 'off', - // https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'off', - }, - - overrides: [ - { - files: ['*.js', '*.jsx'], - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, - }, - { - // 3) Now we enable eslint-plugin-testing-library rules or preset only for matching files! - files: ['**/?(*.)+(spec|test).[jt]s?(x)'], - extends: ['plugin:testing-library/react'], - rules: { - 'testing-library/await-async-query': 'error', - 'testing-library/no-await-sync-query': 'error', - 'testing-library/no-debugging-utils': 'warn', - 'testing-library/no-dom-import': 'off', - 'testing-library/no-unnecessary-act': 'off', - }, - }, - ], - - settings: { - react: { - version: 'detect', - }, - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, - }, - }, - }; \ No newline at end of file diff --git a/examples/nextjs-demo/package-lock.json b/examples/nextjs-demo/package-lock.json deleted file mode 100644 index 211d03362..000000000 --- a/examples/nextjs-demo/package-lock.json +++ /dev/null @@ -1,611 +0,0 @@ -{ - "name": "nextjs-demo", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "@axa-fr/react-oidc": "6.22.15", - "next": "latest", - "react": "latest", - "react-dom": "latest" - } - }, - "node_modules/@axa-fr/react-oidc": { - "version": "6.22.15", - "resolved": "https://registry.npmjs.org/@axa-fr/react-oidc/-/react-oidc-6.22.15.tgz", - "integrity": "sha512-6/CpYONlBRFyJ8HW98dWkMX8LpdOD6EjGB2PvgL3p1K2fyPk/MVQKTsYGUBWnJILddxsyioqys3kWYprc4Cujw==", - "hasInstallScript": true, - "dependencies": { - "base64-js": "1.5.1" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@next/env": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz", - "integrity": "sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==" - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz", - "integrity": "sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz", - "integrity": "sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz", - "integrity": "sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz", - "integrity": "sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz", - "integrity": "sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz", - "integrity": "sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz", - "integrity": "sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz", - "integrity": "sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz", - "integrity": "sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz", - "integrity": "sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz", - "integrity": "sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz", - "integrity": "sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001359", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz", - "integrity": "sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/next": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.6.tgz", - "integrity": "sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==", - "dependencies": { - "@next/env": "12.1.6", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.5", - "styled-jsx": "5.0.2" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.1.6", - "@next/swc-android-arm64": "12.1.6", - "@next/swc-darwin-arm64": "12.1.6", - "@next/swc-darwin-x64": "12.1.6", - "@next/swc-linux-arm-gnueabihf": "12.1.6", - "@next/swc-linux-arm64-gnu": "12.1.6", - "@next/swc-linux-arm64-musl": "12.1.6", - "@next/swc-linux-x64-gnu": "12.1.6", - "@next/swc-linux-x64-musl": "12.1.6", - "@next/swc-win32-arm64-msvc": "12.1.6", - "@next/swc-win32-ia32-msvc": "12.1.6", - "@next/swc-win32-x64-msvc": "12.1.6" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/styled-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", - "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - } - }, - "dependencies": { - "@axa-fr/react-oidc": { - "version": "6.22.15", - "resolved": "https://registry.npmjs.org/@axa-fr/react-oidc/-/react-oidc-6.22.15.tgz", - "integrity": "sha512-6/CpYONlBRFyJ8HW98dWkMX8LpdOD6EjGB2PvgL3p1K2fyPk/MVQKTsYGUBWnJILddxsyioqys3kWYprc4Cujw==", - "requires": { - "base64-js": "1.5.1" - } - }, - "@next/env": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz", - "integrity": "sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==" - }, - "@next/swc-android-arm-eabi": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz", - "integrity": "sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ==", - "optional": true - }, - "@next/swc-android-arm64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz", - "integrity": "sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew==", - "optional": true - }, - "@next/swc-darwin-arm64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz", - "integrity": "sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz", - "integrity": "sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg==", - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz", - "integrity": "sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz", - "integrity": "sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz", - "integrity": "sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz", - "integrity": "sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz", - "integrity": "sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz", - "integrity": "sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz", - "integrity": "sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz", - "integrity": "sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==", - "optional": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "caniuse-lite": { - "version": "1.0.30001359", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz", - "integrity": "sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "next": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.6.tgz", - "integrity": "sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==", - "requires": { - "@next/env": "12.1.6", - "@next/swc-android-arm-eabi": "12.1.6", - "@next/swc-android-arm64": "12.1.6", - "@next/swc-darwin-arm64": "12.1.6", - "@next/swc-darwin-x64": "12.1.6", - "@next/swc-linux-arm-gnueabihf": "12.1.6", - "@next/swc-linux-arm64-gnu": "12.1.6", - "@next/swc-linux-arm64-musl": "12.1.6", - "@next/swc-linux-x64-gnu": "12.1.6", - "@next/swc-linux-x64-musl": "12.1.6", - "@next/swc-win32-arm64-msvc": "12.1.6", - "@next/swc-win32-ia32-msvc": "12.1.6", - "@next/swc-win32-x64-msvc": "12.1.6", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.5", - "styled-jsx": "5.0.2" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "styled-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", - "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", - "requires": {} - } - } -} diff --git a/examples/react-oidc-demo/.eslintrc.cjs b/examples/react-oidc-demo/.eslintrc.cjs deleted file mode 100644 index 968c0320f..000000000 --- a/examples/react-oidc-demo/.eslintrc.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - extends: [__dirname+'/config/defaultEslintConfig.cjs'], - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - 'selector': 'variable', - 'types': ['boolean'], - 'format': ['PascalCase'], - 'prefix': ['is', 'with', 'should', 'has', 'can', 'did', 'will'] - } - ] - } - } \ No newline at end of file diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 66c06e02f..dc59cabc5 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -24,19 +24,11 @@ "@testing-library/react": "13.3.0", "@testing-library/user-event": "14.4.3", "@types/react": "^18.2.15", - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", "@vitejs/plugin-react": "4.0.3", "@vitest/coverage-c8": "^0.33.0", "bootstrap": "^4.6.2", "copyfiles": "2.4.1", "cross-env": "^7.0.3", - "eslint": "^8.26.0", - "eslint-config-standard": "^17.1.0", - "eslint-config-standard-with-typescript": "^36.1.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-simple-import-sort": "^10.0.0", "jsdom": "22.1.0", "msw": "1.2.2", "react": "^18.2.0", diff --git a/package.json b/package.json index 830679489..cab2827cc 100644 --- a/package.json +++ b/package.json @@ -22,19 +22,28 @@ "preinstall": "npx only-allow pnpm", "format": "prettier --write --cache .", "lint": "eslint --cache .", + "lint-fix": "eslint --cache --fix .", "outdated": "pnpm outdated -r", "test": "pnpm run test --workspaces --if-present", "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", "eslint": "^8.45.0", + "eslint-config-prettier": "^8.8.0", "eslint-define-config": "^1.21.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-n": "^16.0.1", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-regexp": "^1.15.0", + "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-testing-library": "^5.11.0", + "prettier": "^3.0.0", "tslib": "^2.6.0", "tsx": "^3.12.7", "typescript": "^5.1.6", diff --git a/packages/oidc-client-service-worker/.eslintrc.cjs b/packages/oidc-client-service-worker/.eslintrc.cjs deleted file mode 100644 index a37905353..000000000 --- a/packages/oidc-client-service-worker/.eslintrc.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - extends: [__dirname + '/config/defaultEslintConfig.cjs'], - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'variable', - types: ['boolean'], - format: ['PascalCase'], - prefix: ['is', 'with', 'should', 'has', 'can', 'did', 'will'], - }, - ], - }, -}; diff --git a/packages/oidc-client-service-worker/config/defaultEslintConfig.cjs b/packages/oidc-client-service-worker/config/defaultEslintConfig.cjs deleted file mode 100644 index c3fa61f5b..000000000 --- a/packages/oidc-client-service-worker/config/defaultEslintConfig.cjs +++ /dev/null @@ -1,148 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - extends: [ - 'standard', - 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/typescript', - 'plugin:jsx-a11y/recommended', - ], - plugins: ['simple-import-sort', 'testing-library'], - env: { - node: true, - es6: true, - browser: true, - }, - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - // typescript-eslint specific options - warnOnUnsupportedTypeScriptVersion: true, - }, - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info', - ignoreRestSiblings: true, - }, - ], - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }, - ], - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { - delimiter: 'semi', - requireLast: true, - }, - singleline: { - delimiter: 'semi', - requireLast: false, - }, - }, - ], - camelcase: 'off', - 'comma-dangle': [ - 'error', - { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }, - ], - 'array-callback-return': 'warn', - 'jsx-quotes': ['error', 'prefer-double'], - // 'max-len': ['error', { code: 120 }], - indent: 'off', - // quotes: ['error', 'single'], - semi: ['error', 'always'], - 'space-before-function-paren': 'off', - - 'import/no-named-as-default': 'off', - 'import/no-named-as-default-member': 'off', - 'import/default': 'off', - 'import/named': 'off', - 'import/namespace': 'off', - 'import/no-unresolved': 'off', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'react/prop-types': 'off', - 'react/jsx-wrap-multilines': 'error', - 'react/react-in-jsx-scope': 'off', - 'react/display-name': 'off', - // https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'off', - }, - - overrides: [ - { - files: ['*.js', '*.jsx'], - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, - }, - { - // 3) Now we enable eslint-plugin-testing-library rules or preset only for matching files! - files: ['**/?(*.)+(spec|test).[jt]s?(x)'], - extends: ['plugin:testing-library/react'], - rules: { - 'testing-library/await-async-query': 'error', - 'testing-library/no-await-sync-query': 'error', - 'testing-library/no-debugging-utils': 'warn', - 'testing-library/no-dom-import': 'off', - 'testing-library/no-unnecessary-act': 'off', - }, - }, - ], - - settings: { - react: { - version: 'detect', - }, - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, - }, - }, - }; \ No newline at end of file diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ab36e0a56..a57f857f1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,17 +34,9 @@ "lint": "eslint src" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", "@vitest/coverage-c8": "^0.33.0", "cpy": "^10.1.0", "cpy-cli": "^5.0.0", - "eslint": "^8.26.0", - "eslint-config-standard": "^17.1.0", - "eslint-config-standard-with-typescript": "^36.1.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-simple-import-sort": "^10.0.0", "rimraf": "5.0.1", "msw": "1.2.2", "typescript": "5.1.6", diff --git a/packages/oidc-client/.eslintrc.cjs b/packages/oidc-client/.eslintrc.cjs deleted file mode 100644 index 6f9d07624..000000000 --- a/packages/oidc-client/.eslintrc.cjs +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - extends: [__dirname+'/config/defaultEslintConfig.cjs'], - parserOptions: { - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - 'selector': 'variable', - 'types': ['boolean'], - 'format': ['PascalCase'], - 'prefix': ['is', 'with', 'should', 'has', 'can', 'did', 'will'] - } - ] - } - } \ No newline at end of file diff --git a/packages/oidc-client/config/defaultEslintConfig.cjs b/packages/oidc-client/config/defaultEslintConfig.cjs deleted file mode 100644 index c3fa61f5b..000000000 --- a/packages/oidc-client/config/defaultEslintConfig.cjs +++ /dev/null @@ -1,148 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - extends: [ - 'standard', - 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/typescript', - 'plugin:jsx-a11y/recommended', - ], - plugins: ['simple-import-sort', 'testing-library'], - env: { - node: true, - es6: true, - browser: true, - }, - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - // typescript-eslint specific options - warnOnUnsupportedTypeScriptVersion: true, - }, - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info', - ignoreRestSiblings: true, - }, - ], - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }, - ], - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { - delimiter: 'semi', - requireLast: true, - }, - singleline: { - delimiter: 'semi', - requireLast: false, - }, - }, - ], - camelcase: 'off', - 'comma-dangle': [ - 'error', - { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }, - ], - 'array-callback-return': 'warn', - 'jsx-quotes': ['error', 'prefer-double'], - // 'max-len': ['error', { code: 120 }], - indent: 'off', - // quotes: ['error', 'single'], - semi: ['error', 'always'], - 'space-before-function-paren': 'off', - - 'import/no-named-as-default': 'off', - 'import/no-named-as-default-member': 'off', - 'import/default': 'off', - 'import/named': 'off', - 'import/namespace': 'off', - 'import/no-unresolved': 'off', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'react/prop-types': 'off', - 'react/jsx-wrap-multilines': 'error', - 'react/react-in-jsx-scope': 'off', - 'react/display-name': 'off', - // https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'off', - }, - - overrides: [ - { - files: ['*.js', '*.jsx'], - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, - }, - { - // 3) Now we enable eslint-plugin-testing-library rules or preset only for matching files! - files: ['**/?(*.)+(spec|test).[jt]s?(x)'], - extends: ['plugin:testing-library/react'], - rules: { - 'testing-library/await-async-query': 'error', - 'testing-library/no-await-sync-query': 'error', - 'testing-library/no-debugging-utils': 'warn', - 'testing-library/no-dom-import': 'off', - 'testing-library/no-unnecessary-act': 'off', - }, - }, - ], - - settings: { - react: { - version: 'detect', - }, - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, - }, - }, - }; \ No newline at end of file diff --git a/packages/oidc-client/package-lock.json b/packages/oidc-client/package-lock.json deleted file mode 100644 index f123ccb70..000000000 --- a/packages/oidc-client/package-lock.json +++ /dev/null @@ -1,4725 +0,0 @@ -{ - "name": "@axa-fr/vanilla-oidc", - "version": "6.25.6", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@axa-fr/vanilla-oidc", - "version": "6.25.6", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "base64-js": "1.5.1" - }, - "devDependencies": { - "@craco/types": "^7.1.0", - "@types/react": "^18.0.21", - "copyfiles": "2.4.1", - "rimraf": "3.0.2", - "typescript": "4.5.5" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@craco/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@craco/types/-/types-7.1.0.tgz", - "integrity": "sha512-zdyk2G9UfEItrvnB+sd3xDHB5Mf3dsD6wE+Ex6V+Nch+GSXdFGQfXD/l+ZX9hO03R1rmnJPCxrIRPJUib8Q/MQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.19.3", - "@jest/types": "^27.5.1", - "@types/eslint": "^8.4.6", - "autoprefixer": "^10.4.12", - "eslint-webpack-plugin": "^3.2.0", - "webpack": "^5.74.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true, - "peer": true - }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.13.tgz", - "integrity": "sha512-vJ+zElvi/Zn9cVXB5slX2xL8PZodPCwPRDpittQdw43JR2AJ5k3vKdgJJyneV/cYgIbLQUwXa9JVDvUZXGba+Q==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@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" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "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" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@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" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true - }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001506", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001506.tgz", - "integrity": "sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "dev": true, - "dependencies": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "bin": { - "copyfiles": "copyfiles", - "copyup": "copyfiles" - } - }, - "node_modules/copyfiles/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "peer": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "peer": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.437", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.437.tgz", - "integrity": "sha512-ZFekRuBOHUXp21wrR5lshT6pZa/KmjkhKBAtmZz4NN5sCWlHOk3kdhiwFINrDBsRLX6FjyBAb1TRN+KBeNlyzQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", - "dev": true, - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "dev": true, - "dependencies": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "peer": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "peer": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "peer": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "peer": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "peer": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true, - "peer": true - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "peer": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "peer": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "peer": true - }, - "node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "peer": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "peer": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "peer": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "peer": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "node_modules/noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - } - }, - "node_modules/noms/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/noms/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/noms/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "peer": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "peer": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.1.tgz", - "integrity": "sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "peer": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.88.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", - "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", - "dev": true, - "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", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "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", - "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.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@craco/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@craco/types/-/types-7.1.0.tgz", - "integrity": "sha512-zdyk2G9UfEItrvnB+sd3xDHB5Mf3dsD6wE+Ex6V+Nch+GSXdFGQfXD/l+ZX9hO03R1rmnJPCxrIRPJUib8Q/MQ==", - "dev": true, - "requires": { - "@babel/types": "^7.19.3", - "@jest/types": "^27.5.1", - "@types/eslint": "^8.4.6", - "autoprefixer": "^10.4.12", - "eslint-webpack-plugin": "^3.2.0", - "webpack": "^5.74.0" - } - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "peer": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "peer": true - }, - "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "peer": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", - "dev": true, - "peer": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "peer": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "peer": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true, - "peer": true - }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "peer": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "peer": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "peer": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "@types/react": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.13.tgz", - "integrity": "sha512-vJ+zElvi/Zn9cVXB5slX2xL8PZodPCwPRDpittQdw43JR2AJ5k3vKdgJJyneV/cYgIbLQUwXa9JVDvUZXGba+Q==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@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": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "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/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@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": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true - }, - "autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "dev": true, - "requires": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "peer": true - }, - "caniuse-lite": { - "version": "1.0.30001506", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001506.tgz", - "integrity": "sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "dev": true, - "requires": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "peer": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "peer": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.437", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.437.tgz", - "integrity": "sha512-ZFekRuBOHUXp21wrR5lshT6pZa/KmjkhKBAtmZz4NN5sCWlHOk3kdhiwFINrDBsRLX6FjyBAb1TRN+KBeNlyzQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "peer": true - }, - "eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - } - }, - "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "peer": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "peer": true - }, - "eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "dev": true, - "requires": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - } - }, - "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "peer": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "peer": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "peer": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "peer": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "peer": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "peer": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "peer": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true, - "peer": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "peer": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "peer": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "peer": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "peer": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "peer": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "peer": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "peer": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "peer": true - }, - "jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "peer": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "peer": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "peer": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "peer": true - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "peer": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "peer": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "peer": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "peer": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "peer": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "peer": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "peer": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, - "peer": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "peer": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "peer": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "peer": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "peer": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "peer": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "peer": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "peer": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.1.tgz", - "integrity": "sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "dependencies": { - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "peer": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "peer": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "peer": true - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.88.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", - "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", - "dev": true, - "requires": { - "@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", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "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", - "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.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "peer": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "peer": true - } - } -} diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7b07d22b9..0c066bde1 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -30,12 +30,6 @@ "base64-js": "^1.5.1", "cpy": "^10.1.0", "cpy-cli": "^5.0.0", - "eslint": "^8.26.0", - "eslint-config-standard": "^17.1.0", - "eslint-config-standard-with-typescript": "^36.1.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-simple-import-sort": "^10.0.0", "rimraf": "5.0.1", "typescript": "5.1.6", "vite": "^4.4.4", diff --git a/packages/oidc-client/src/iniWorker.spec.ts b/packages/oidc-client/src/iniWorker.spec.ts index a9b00b2a2..a0228aa2b 100644 --- a/packages/oidc-client/src/iniWorker.spec.ts +++ b/packages/oidc-client/src/iniWorker.spec.ts @@ -1,6 +1,6 @@ -import { excludeOs, getOperatingSystem } from './initWorker'; +import { describe, expect,it } from 'vitest'; -import { describe, it, expect } from 'vitest'; +import { excludeOs, getOperatingSystem } from './initWorker'; describe('initWorker test Suite', () => { diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index 82035047c..a87443334 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -1,6 +1,8 @@ -import '@testing-library/jest-dom' +import '@testing-library/jest-dom'; + +import { describe, expect, it, vi } from 'vitest'; + import { logoutAsync } from "./logout"; -import { describe, it, expect, vi } from 'vitest'; describe('Logout test suite', () => { @@ -17,7 +19,7 @@ describe('Logout test suite', () => { scope: 'openid profile email api offline_access', authority: 'http://api', refresh_time_before_tokens_expiration_in_second: 70, - logout_tokens_to_invalidate + logout_tokens_to_invalidate, }; const fetch = (url, data) => { @@ -29,7 +31,7 @@ describe('Logout test suite', () => { }); }; - const mockFetchFn = vi.fn().mockImplementation(fetch) + const mockFetchFn = vi.fn().mockImplementation(fetch); const oidc = { configuration, @@ -47,15 +49,15 @@ describe('Logout test suite', () => { const window = { location: { href: "", - origin: "http://localhost:4200" - } - } + origin: "http://localhost:4200", + }, + }; await logoutAsync(oidc, oidcDatabase, mockFetchFn, window, console)("/logged_out"); // @ts-ignore - const results = mockFetchFn.mock.calls.map((call, index) => call[1].body) + const results = mockFetchFn.mock.calls.map((call, index) => call[1].body); expect(results).toEqual(expectedResults); expect(window.location.href).toBe("http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"); diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index a18db08be..74bc76932 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,5 +1,6 @@ -import {getValidTokenAsync, isTokensOidcValid} from "./parseTokens"; -import { describe, it, expect } from 'vitest'; +import { describe, expect,it } from 'vitest'; + +import {getValidTokenAsync, isTokensOidcValid} from "./parseTokens"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -15,10 +16,10 @@ describe('ParseTokens test Suite', () => { idToken: 'youhou', accessTokenPayload: null, accessToken: 'youhou', - expiresAt: expiresAt, - issuedAt: issuedAt, - } - } + expiresAt, + issuedAt, + }, + }; const result = await getValidTokenAsync(oidc, 1, 1); expect(result.isTokensValid).toEqual(expectIsValidToken); }); @@ -39,8 +40,8 @@ describe('ParseTokens test Suite', () => { ])('isTokensOidcValid', (idTokenPayload, nonce, oidcServerConfiguration, expectIsValidToken, status) => { it('should isTokensOidcValid return ' + status, async () => { const oidc = { - idTokenPayload - } + idTokenPayload, + }; const {isValid} = await isTokensOidcValid(oidc, nonce, oidcServerConfiguration); expect(isValid).toEqual(expectIsValidToken); }); diff --git a/packages/oidc-client/src/requests.spec.ts b/packages/oidc-client/src/requests.spec.ts index 7d3271d7d..3c72fbedc 100644 --- a/packages/oidc-client/src/requests.spec.ts +++ b/packages/oidc-client/src/requests.spec.ts @@ -1,5 +1,5 @@  -import { describe, it, expect } from 'vitest'; +import { describe, expect,it } from 'vitest'; describe('Requests test Suite', () => { diff --git a/packages/oidc-client/src/route-utils.spec.ts b/packages/oidc-client/src/route-utils.spec.ts index 30a1dc60a..5ce7082b0 100644 --- a/packages/oidc-client/src/route-utils.spec.ts +++ b/packages/oidc-client/src/route-utils.spec.ts @@ -1,5 +1,6 @@ +import { describe, expect,it } from 'vitest'; + import { getPath } from './route-utils'; -import { describe, it, expect } from 'vitest'; describe('Route test Suite', () => { it.each([['http://example.com/pathname', '/pathname'], @@ -8,7 +9,7 @@ describe('Route test Suite', () => { ['http://example.com:3000/pathname#hash?search=test', '/pathname#hash'], ['capacitor://localhost/index.html', '/index.html'], ['capacitor://localhost/pathname#hash?search=test', '/pathname#hash'], - ['http://example.com:3000/', ''],])( + ['http://example.com:3000/', '']])( 'getPath should return the full path of an url', (uri, expected) => { diff --git a/packages/oidc-client/tests/setup.js b/packages/oidc-client/tests/setup.js index e022aaa60..47da0ebc4 100644 --- a/packages/oidc-client/tests/setup.js +++ b/packages/oidc-client/tests/setup.js @@ -1,6 +1,6 @@ -import { expect, afterEach } from 'vitest'; +import matchers from '@testing-library/jest-dom/matchers'; import { cleanup } from '@testing-library/react'; -import matchers from '@testing-library/jest-dom/matchers'; +import { afterEach,expect } from 'vitest'; // extends Vitest's expect method with methods from react-testing-library expect.extend(matchers); diff --git a/packages/oidc-client/vite.config.ts b/packages/oidc-client/vite.config.ts index 07867ece3..8442ebe99 100644 --- a/packages/oidc-client/vite.config.ts +++ b/packages/oidc-client/vite.config.ts @@ -1,6 +1,7 @@ -import { defineConfig } from 'vite'; -import { resolve } from 'path'; +import { resolve } from 'path'; +import { defineConfig } from 'vite'; import dts from 'vite-plugin-dts'; + import pkg from './package.json'; const dependencies = externalDependencies(); @@ -20,10 +21,10 @@ export default defineConfig({ }, plugins: [ - dts(), //generate typescript typedefs + dts(), // generate typescript typedefs ], resolve: { - preserveSymlinks: true, //https://github.com/vitejs/vite/issues/11657 + preserveSymlinks: true, // https://github.com/vitejs/vite/issues/11657 }, test: { globals: true, diff --git a/packages/react-oidc/.eslintrc.cjs b/packages/react-oidc/.eslintrc.cjs deleted file mode 100644 index 968c0320f..000000000 --- a/packages/react-oidc/.eslintrc.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - extends: [__dirname+'/config/defaultEslintConfig.cjs'], - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/naming-convention': [ - 'error', - { - 'selector': 'variable', - 'types': ['boolean'], - 'format': ['PascalCase'], - 'prefix': ['is', 'with', 'should', 'has', 'can', 'did', 'will'] - } - ] - } - } \ No newline at end of file diff --git a/packages/react-oidc/config/defaultEslintConfig.cjs b/packages/react-oidc/config/defaultEslintConfig.cjs deleted file mode 100644 index c3fa61f5b..000000000 --- a/packages/react-oidc/config/defaultEslintConfig.cjs +++ /dev/null @@ -1,148 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - extends: [ - 'standard', - 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/typescript', - 'plugin:jsx-a11y/recommended', - ], - plugins: ['simple-import-sort', 'testing-library'], - env: { - node: true, - es6: true, - browser: true, - }, - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - // typescript-eslint specific options - warnOnUnsupportedTypeScriptVersion: true, - }, - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info', - ignoreRestSiblings: true, - }, - ], - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }, - ], - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { - delimiter: 'semi', - requireLast: true, - }, - singleline: { - delimiter: 'semi', - requireLast: false, - }, - }, - ], - camelcase: 'off', - 'comma-dangle': [ - 'error', - { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }, - ], - 'array-callback-return': 'warn', - 'jsx-quotes': ['error', 'prefer-double'], - // 'max-len': ['error', { code: 120 }], - indent: 'off', - // quotes: ['error', 'single'], - semi: ['error', 'always'], - 'space-before-function-paren': 'off', - - 'import/no-named-as-default': 'off', - 'import/no-named-as-default-member': 'off', - 'import/default': 'off', - 'import/named': 'off', - 'import/namespace': 'off', - 'import/no-unresolved': 'off', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'react/prop-types': 'off', - 'react/jsx-wrap-multilines': 'error', - 'react/react-in-jsx-scope': 'off', - 'react/display-name': 'off', - // https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'off', - }, - - overrides: [ - { - files: ['*.js', '*.jsx'], - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, - }, - { - // 3) Now we enable eslint-plugin-testing-library rules or preset only for matching files! - files: ['**/?(*.)+(spec|test).[jt]s?(x)'], - extends: ['plugin:testing-library/react'], - rules: { - 'testing-library/await-async-query': 'error', - 'testing-library/no-await-sync-query': 'error', - 'testing-library/no-debugging-utils': 'warn', - 'testing-library/no-dom-import': 'off', - 'testing-library/no-unnecessary-act': 'off', - }, - }, - ], - - settings: { - react: { - version: 'detect', - }, - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, - }, - }, - }; \ No newline at end of file diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 228993310..585d3e6f0 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -52,19 +52,11 @@ "@testing-library/react": "13.3.0", "@testing-library/user-event": "14.4.3", "@types/react": "^18.2.15", - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", "@vitejs/plugin-react": "4.0.3", "@vitest/coverage-v8": "^0.33.0", "cpy": "^10.1.0", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", - "eslint": "^8.26.0", - "eslint-config-standard": "^17.1.0", - "eslint-config-standard-with-typescript": "^36.1.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-simple-import-sort": "^10.0.0", "jsdom": "22.1.0", "msw": "1.2.2", "react": "^18.2.0", diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.spec.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.spec.tsx index 79a94b540..bfc81bd6b 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.spec.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.spec.tsx @@ -1,7 +1,8 @@ +import { render } from "@testing-library/react"; import React from 'react'; +import { describe, expect,it } from 'vitest'; + import OidcRoutes from './OidcRoutes'; -import { render } from "@testing-library/react"; -import { describe, it, expect } from 'vitest'; describe('Authenticating test suite', () => { it('renders correctly', () => { @@ -9,7 +10,7 @@ describe('Authenticating test suite', () => { children: 'http://url.com', callbackComponent: () =>
tcallback component
, redirect_uri: 'http://example.com:3000/authentication/callback', - configurationName: '' + configurationName: '', }; const { asFragment } = render(); expect(asFragment()).toMatchSnapshot(); diff --git a/packages/react-oidc/src/core/routes/withRouter.spec.tsx b/packages/react-oidc/src/core/routes/withRouter.spec.tsx index 3cea580a0..494af6e4f 100644 --- a/packages/react-oidc/src/core/routes/withRouter.spec.tsx +++ b/packages/react-oidc/src/core/routes/withRouter.spec.tsx @@ -1,5 +1,6 @@ +import { beforeEach,describe, expect, it, vi } from 'vitest'; + import { CreateEvent, WindowInternal } from './withRouter'; -import { describe, it, expect, vi, beforeEach } from 'vitest'; describe('WithRouter test Suite', () => { const paramsMock = { bubbles: false, cancelable: false, detail: 'detail' }; @@ -13,7 +14,7 @@ describe('WithRouter test Suite', () => { const documentMock = {} as Document; const res = CreateEvent((windowMock as unknown) as WindowInternal, documentMock)( 'event test', - paramsMock + paramsMock, ); expect(res).toEqual({ event: 'event test', @@ -36,7 +37,7 @@ describe('WithRouter test Suite', () => { const typedDocumentMock = (documentMock as unknown) as Document; const res = CreateEvent((windowMock as unknown) as WindowInternal, typedDocumentMock)( 'event test', - paramsMock + paramsMock, ); expect(res).toEqual({ ...evtMock }); expect(documentMock.createEvent).toHaveBeenCalledWith('CustomEvent'); diff --git a/packages/react-oidc/tests/setup.js b/packages/react-oidc/tests/setup.js index e022aaa60..47da0ebc4 100644 --- a/packages/react-oidc/tests/setup.js +++ b/packages/react-oidc/tests/setup.js @@ -1,6 +1,6 @@ -import { expect, afterEach } from 'vitest'; +import matchers from '@testing-library/jest-dom/matchers'; import { cleanup } from '@testing-library/react'; -import matchers from '@testing-library/jest-dom/matchers'; +import { afterEach,expect } from 'vitest'; // extends Vitest's expect method with methods from react-testing-library expect.extend(matchers); diff --git a/packages/react-oidc/vite.config.ts b/packages/react-oidc/vite.config.ts index 247d9617a..04536f12c 100644 --- a/packages/react-oidc/vite.config.ts +++ b/packages/react-oidc/vite.config.ts @@ -1,7 +1,8 @@ -import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; import { resolve } from 'path'; -import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; import dts from 'vite-plugin-dts'; + import pkg from './package.json'; const dependencies = externalDependencies(); @@ -31,7 +32,7 @@ export default defineConfig({ react(), ], resolve: { - preserveSymlinks: true, //https://github.com/vitejs/vite/issues/11657 + preserveSymlinks: true, // https://github.com/vitejs/vite/issues/11657 }, test: { globals: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c5cf5ee6..ea4915839 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,37 +1,57 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - importers: .: devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) eslint: specifier: ^8.45.0 version: 8.45.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.45.0) eslint-define-config: specifier: ^1.21.0 version: 1.21.0 eslint-plugin-import: specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) + version: 2.27.5(@typescript-eslint/parser@6.0.0)(eslint@8.45.0) eslint-plugin-jsx-a11y: specifier: ^6.7.1 version: 6.7.1(eslint@8.45.0) eslint-plugin-n: specifier: ^16.0.1 version: 16.0.1(eslint@8.45.0) + eslint-plugin-no-only-tests: + specifier: ^3.1.0 + version: 3.1.0 + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0) + eslint-plugin-react: + specifier: ^7.32.2 + version: 7.32.2(eslint@8.45.0) eslint-plugin-react-hooks: specifier: ^4.6.0 version: 4.6.0(eslint@8.45.0) eslint-plugin-regexp: specifier: ^1.15.0 version: 1.15.0(eslint@8.45.0) + eslint-plugin-simple-import-sort: + specifier: ^10.0.0 + version: 10.0.0(eslint@8.45.0) eslint-plugin-testing-library: specifier: ^5.11.0 version: 5.11.0(eslint@8.45.0)(typescript@5.1.6) + prettier: + specifier: ^3.0.0 + version: 3.0.0 tslib: specifier: ^2.6.0 version: 2.6.0 @@ -114,12 +134,6 @@ importers: '@types/react': specifier: ^18.2.15 version: 18.2.15 - '@typescript-eslint/eslint-plugin': - specifier: ^5.50.0 - version: 5.50.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: ^5.50.0 - version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) '@vitejs/plugin-react': specifier: 4.0.3 version: 4.0.3(vite@4.4.4) @@ -135,24 +149,6 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 - eslint: - specifier: ^8.26.0 - version: 8.45.0 - eslint-config-standard: - specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) - eslint-config-standard-with-typescript: - specifier: ^36.1.0 - version: 36.1.0(@typescript-eslint/eslint-plugin@5.50.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6) - eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.45.0) jsdom: specifier: 22.1.0 version: 22.1.0 @@ -208,24 +204,6 @@ importers: cpy-cli: specifier: ^5.0.0 version: 5.0.0 - eslint: - specifier: ^8.26.0 - version: 8.45.0 - eslint-config-standard: - specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) - eslint-config-standard-with-typescript: - specifier: ^36.1.0 - version: 36.1.0(@typescript-eslint/eslint-plugin@5.50.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6) - eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.45.0) rimraf: specifier: 5.0.1 version: 5.0.1 @@ -244,12 +222,6 @@ importers: packages/oidc-client-service-worker: devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: ^5.50.0 - version: 5.50.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: ^5.50.0 - version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) '@vitest/coverage-c8': specifier: ^0.33.0 version: 0.33.0(vitest@0.33.0) @@ -259,24 +231,6 @@ importers: cpy-cli: specifier: ^5.0.0 version: 5.0.0 - eslint: - specifier: ^8.26.0 - version: 8.45.0 - eslint-config-standard: - specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) - eslint-config-standard-with-typescript: - specifier: ^36.1.0 - version: 36.1.0(@typescript-eslint/eslint-plugin@5.50.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6) - eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.45.0) msw: specifier: 1.2.2 version: 1.2.2(typescript@5.1.6) @@ -320,12 +274,6 @@ importers: '@types/react': specifier: ^18.2.15 version: 18.2.15 - '@typescript-eslint/eslint-plugin': - specifier: ^5.50.0 - version: 5.50.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: ^5.50.0 - version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) '@vitejs/plugin-react': specifier: 4.0.3 version: 4.0.3(vite@4.4.4) @@ -341,24 +289,6 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 - eslint: - specifier: ^8.26.0 - version: 8.45.0 - eslint-config-standard: - specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) - eslint-config-standard-with-typescript: - specifier: ^36.1.0 - version: 36.1.0(@typescript-eslint/eslint-plugin@5.50.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6) - eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.45.0) jsdom: specifier: 22.1.0 version: 22.1.0 @@ -1256,7 +1186,6 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true @@ -1266,7 +1195,6 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true @@ -1276,7 +1204,6 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true @@ -1286,7 +1213,6 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true @@ -1609,47 +1535,51 @@ packages: dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin@5.50.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/type-utils': 5.50.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.50.0(eslint@8.45.0)(typescript@5.1.6) + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.45.0 grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 + natural-compare: 1.4.0 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.45.0 typescript: 5.1.6 @@ -1657,14 +1587,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.50.0: - resolution: {integrity: sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 - dev: true - /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1673,38 +1595,46 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.50.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + dev: true + + /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.50.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.50.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.45.0 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.50.0: - resolution: {integrity: sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.50.0(typescript@5.1.6): - resolution: {integrity: sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==} + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1712,8 +1642,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1724,59 +1654,59 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.50.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==} + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/typescript-estree': 5.50.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) eslint: 8.45.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.45.0) semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -1785,19 +1715,19 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.50.0: - resolution: {integrity: sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.50.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 6.0.0 eslint-visitor-keys: 3.4.1 dev: true @@ -2774,14 +2704,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2950,41 +2872,13 @@ packages: engines: {node: '>=12'} dev: true - /eslint-config-standard-with-typescript@36.1.0(@typescript-eslint/eslint-plugin@5.50.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-Gpk+7Q3EHqIzTnqYs/LpfOwVb8+kocvlFLYhBdCmUy+EUpsC7067PaHhGSp8P4N+lC2KNGBZ7e2tiGyoRNSVHA==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.50.0 - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - typescript: '*' - dependencies: - '@typescript-eslint/eslint-plugin': 5.50.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - eslint: 8.45.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) - eslint-plugin-n: 16.0.1(eslint@8.45.0) - eslint-plugin-promise: 6.1.1(eslint@8.45.0) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-config-standard@17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0): - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} + /eslint-config-prettier@8.8.0(eslint@8.45.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 + eslint: '>=7.0.0' dependencies: eslint: 8.45.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) - eslint-plugin-n: 16.0.1(eslint@8.45.0) - eslint-plugin-promise: 6.1.1(eslint@8.45.0) dev: true /eslint-define-config@1.21.0: @@ -3002,31 +2896,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0): - resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 8.45.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) - get-tsconfig: 4.6.2 - globby: 13.2.2 - is-core-module: 2.12.1 - is-glob: 4.0.3 - synckit: 0.8.5 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3047,11 +2917,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0) transitivePeerDependencies: - supports-color dev: true @@ -3067,7 +2936,7 @@ packages: eslint: 8.45.0 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.0.0)(eslint@8.45.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -3077,7 +2946,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -3085,7 +2954,7 @@ packages: doctrine: 2.1.0 eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -3142,13 +3011,30 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.45.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} + dev: true + + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true dependencies: eslint: 8.45.0 + eslint-config-prettier: 8.8.0(eslint@8.45.0) + prettier: 3.0.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): @@ -3238,21 +3124,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.45.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys@3.4.1: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3394,6 +3265,10 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + /fast-glob@3.3.0: resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} @@ -5015,6 +4890,19 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5217,11 +5105,6 @@ packages: define-properties: 1.2.0 functions-have-names: 1.2.3 - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5683,11 +5566,6 @@ packages: tslib: 2.6.0 dev: true - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5776,6 +5654,15 @@ packages: engines: {node: '>=14.16'} dev: true + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.1.6 + dev: true + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -6366,3 +6253,7 @@ packages: /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ed54ecd09..15989339b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,3 @@ packages: - 'packages/*' - - 'examples/*' \ No newline at end of file + - 'examples/*' diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..f8cc4cd65 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "strict": true, + "allowJs": true, + "noEmit": true, + "moduleResolution": "node", + "esModuleInterop": true, + "skipLibCheck": true, + "verbatimModuleSyntax": true + } +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 000000000..ffcbb9477 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.base.json" +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..7704e13bc --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +// Yes this file is intentionally empty! +// --- +// Having a blank `tsconfig.json` file prevents TypeScript from crawling up your directory tree +// and possibly picking up a parent `tsconfig.json` (which, unsurprisingly, is very hard to debug) +{} From 9f25be794ff6b08d8ca30cc5f27dff554136d163 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Thu, 27 Jul 2023 18:07:20 +1000 Subject: [PATCH 012/565] refactor(lint): Enable linting on examples, fix lint warnings. (#1111) - Add utils required for react-oidc-demo spec test. --- .eslintignore | 5 +- .eslintrc.cjs | 8 + examples/nextjs-demo/components/layout.js | 19 +- examples/nextjs-demo/pages/_app.js | 4 +- examples/nextjs-demo/pages/index.js | 27 ++- examples/oidc-client-demo/src/index.tsx | 16 +- examples/react-oidc-demo/src/App.spec.tsx | 44 +++-- examples/react-oidc-demo/src/App.tsx | 2 +- examples/react-oidc-demo/src/FetchUser.tsx | 2 +- examples/react-oidc-demo/src/Home.tsx | 3 +- examples/react-oidc-demo/src/MultiAuth.tsx | 2 +- examples/react-oidc-demo/src/Profile.tsx | 2 +- .../src/override/SessionLost.component.tsx | 2 +- examples/react-oidc-demo/src/utils/sleep.ts | 5 + examples/react-oidc-demo/src/utils/timer.ts | 163 ++++++++++++++++++ 15 files changed, 241 insertions(+), 63 deletions(-) create mode 100644 examples/react-oidc-demo/src/utils/sleep.ts create mode 100644 examples/react-oidc-demo/src/utils/timer.ts diff --git a/.eslintignore b/.eslintignore index 21c3cdfe7..f2c09a0d3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,8 +5,11 @@ packages/**/coverage/**/* packages/**/fixtures/**/* node_modules # TODO Disable examples, we want to include it. -examples/**/* public/**/* +examples/**/static/**/* +examples/**/dist/**/* +examples/**/OidcTrustedDomains.js +examples/**/OidcServiceWorker.js scripts/**/* .github .changeset diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 48970a76b..3e459dd52 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -125,6 +125,14 @@ module.exports = { files: ['*.js', '*.jsx'], rules: { '@typescript-eslint/no-var-requires': 'off', + 'react/no-unknown-property':[ + 2, { + "ignore": [ + "jsx", + "global" + ] + } + ] }, }, { diff --git a/examples/nextjs-demo/components/layout.js b/examples/nextjs-demo/components/layout.js index ca6a0aa79..b476e7ddc 100644 --- a/examples/nextjs-demo/components/layout.js +++ b/examples/nextjs-demo/components/layout.js @@ -1,30 +1,33 @@ import { OidcProvider } from '@axa-fr/react-oidc'; -import { useRouter } from 'next/router' +import { useRouter } from 'next/router'; +import React from 'react'; const configuration = { client_id: 'interactive.public.short', redirect_uri: 'http://localhost:3001/#authentication/callback', silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com' + authority: 'https://demo.duendesoftware.com', }; const onEvent=(configurationName, eventName, data )=>{ + // eslint-disable-next-line no-undef console.log(`oidc:${configurationName}:${eventName}`, data); - } + }; export default function Layout({ children }) { - const router = useRouter() + const router = useRouter(); const withCustomHistory= () => { return { replaceState: (url) => { router.replace({ pathname: url, }).then(() => { + // eslint-disable-next-line no-undef window.dispatchEvent(new Event('popstate')); - } - ) - } + }, + ); + }, }; }; return ( @@ -33,5 +36,5 @@ export default function Layout({ children }) {
{children}
- ) + ); } \ No newline at end of file diff --git a/examples/nextjs-demo/pages/_app.js b/examples/nextjs-demo/pages/_app.js index 09bfde03a..829aeaaca 100644 --- a/examples/nextjs-demo/pages/_app.js +++ b/examples/nextjs-demo/pages/_app.js @@ -1,9 +1,9 @@ -import Layout from '../components/layout' +import Layout from '../components/layout'; export default function MyApp({ Component, pageProps }) { return ( - ) + ); } \ No newline at end of file diff --git a/examples/nextjs-demo/pages/index.js b/examples/nextjs-demo/pages/index.js index 44b8015e2..679fae649 100644 --- a/examples/nextjs-demo/pages/index.js +++ b/examples/nextjs-demo/pages/index.js @@ -1,6 +1,5 @@ -import Head from 'next/head' -import { OidcSecure, useOidcAccessToken, useOidcIdToken, useOidcUser, OidcUserStatus} from '@axa-fr/react-oidc'; - +import { OidcSecure, OidcUserStatus,useOidcAccessToken, useOidcIdToken, useOidcUser} from '@axa-fr/react-oidc'; +import Head from 'next/head'; const DisplayUserInfo = () => { const{ oidcUser, oidcUserLoadingState } = useOidcUser(); @@ -33,24 +32,25 @@ export const Profile = () => { ); -} +}; const DisplayAccessToken = () => { const{ accessToken, accessTokenPayload } = useOidcAccessToken(); if(!accessToken){ - return

you are not authenticated

+ return

you are not authenticated

; } return (
Access Token
-

Please consider to configure the ServiceWorker in order to protect your application from XSRF attacks. "access_token" and "refresh_token" will never be accessible from your client side javascript.

+

+ Please consider to configure the ServiceWorker in order to protect your application from XSRF attacks. "access_token" and "refresh_token" will never be accessible from your client side javascript.

{

Access Token: {JSON.stringify(accessToken)}

} {accessTokenPayload != null &&

Access Token Payload: {JSON.stringify(accessTokenPayload)}

}
- ) + ); }; @@ -58,7 +58,7 @@ const DisplayIdToken =() => { const{ idToken, idTokenPayload } = useOidcIdToken(); if(!idToken){ - return

you are not authenticated

+ return

you are not authenticated

; } return ( @@ -70,10 +70,9 @@ const DisplayIdToken =() => { ); -} - -export default function Home({}) { +}; +export default function Home() { return (
@@ -242,7 +241,7 @@ export default function Home({}) { } `}
- ) + ); } import Layout from '../components/layout'; @@ -252,5 +251,5 @@ Home.getLayout = function getLayout(page) { {page} - ) -} \ No newline at end of file + ); +}; \ No newline at end of file diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index 664937d13..b9e5470b3 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -104,19 +104,19 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { router.getCustomHistory().replaceState("/"); // @ts-ignore window.logout = () => vanillaOidc.logoutAsync(); - let tokens = vanillaOidc.tokens; + const tokens = vanillaOidc.tokens; // @ts-ignore element.innerHTML = `

@axa-fr/vanilla-oidc demo

Authenticated

${JSON.stringify(tokens,null,'\t')}
-
` + `; }); - return + return; } - let tokens = vanillaOidc.tokens; + const tokens = vanillaOidc.tokens; if(tokens){ @@ -128,7 +128,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => {

Authenticated

${JSON.stringify(tokens,null,'\t')}
- ` + `; } else { @@ -139,13 +139,13 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => {

@axa-fr/vanilla-oidc demo

Loading

`; - vanillaOidc.loginAsync("/") + vanillaOidc.loginAsync("/"); }; // @ts-ignore element.innerHTML = `

@axa-fr/vanilla-oidc demo

-
` + `; } -}) +}); diff --git a/examples/react-oidc-demo/src/App.spec.tsx b/examples/react-oidc-demo/src/App.spec.tsx index 3b3523295..f54be1852 100644 --- a/examples/react-oidc-demo/src/App.spec.tsx +++ b/examples/react-oidc-demo/src/App.spec.tsx @@ -1,11 +1,12 @@ -import React from 'react' -import {rest} from 'msw' -import {setupServer} from 'msw/node' -import {render, fireEvent, waitFor, screen} from '@testing-library/react' -import '@testing-library/jest-dom' +import '@testing-library/jest-dom'; + +import {fireEvent, render, screen} from '@testing-library/react'; +import {rest} from 'msw'; +import {setupServer} from 'msw/node'; +import { describe, expect,it } from 'vitest'; + import App from "./App"; -import {sleepAsync} from "./oidc/vanilla/initWorker"; -import { describe, it, expect } from 'vitest'; +import {sleepAsync} from "./utils/sleep"; const server = setupServer( rest.get('http://api/.well-known/openid-configuration', (req, res, ctx) => { @@ -19,29 +20,26 @@ const server = setupServer( "check_session_iframe":"https://demo.identityserver.io/connect/checksession", "revocation_endpoint":"https://demo.identityserver.io/connect/revocation", "introspection_endpoint":"https://demo.identityserver.io/connect/introspect", - "device_authorization_endpoint":"https://demo.identityserver.io/connect/deviceauthorization","frontchannel_logout_supported":true,"frontchannel_logout_session_supported":true,"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"scopes_supported":["openid","profile","email","api","api.scope1","api.scope2","scope2","policyserver.runtime","policyserver.management","offline_access"],"claims_supported":["sub","name","family_name","given_name","middle_name","nickname","preferred_username","profile","picture","website","gender","birthdate","zoneinfo","locale","updated_at","email","email_verified"],"grant_types_supported":["authorization_code","client_credentials","refresh_token","implicit","password","urn:ietf:params:oauth:grant-type:device_code"],"response_types_supported":["code","token","id_token","id_token token","code id_token","code token","code id_token token"],"response_modes_supported":["form_post","query","fragment"],"token_endpoint_auth_methods_supported":["client_secret_basic","client_secret_post"],"id_token_signing_alg_values_supported":["RS256"],"subject_types_supported":["public"],"code_challenge_methods_supported":["plain","S256"],"request_parameter_supported":true})) + "device_authorization_endpoint":"https://demo.identityserver.io/connect/deviceauthorization","frontchannel_logout_supported":true,"frontchannel_logout_session_supported":true,"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"scopes_supported":["openid","profile","email","api","api.scope1","api.scope2","scope2","policyserver.runtime","policyserver.management","offline_access"],"claims_supported":["sub","name","family_name","given_name","middle_name","nickname","preferred_username","profile","picture","website","gender","birthdate","zoneinfo","locale","updated_at","email","email_verified"],"grant_types_supported":["authorization_code","client_credentials","refresh_token","implicit","password","urn:ietf:params:oauth:grant-type:device_code"],"response_types_supported":["code","token","id_token","id_token token","code id_token","code token","code id_token token"],"response_modes_supported":["form_post","query","fragment"],"token_endpoint_auth_methods_supported":["client_secret_basic","client_secret_post"],"id_token_signing_alg_values_supported":["RS256"],"subject_types_supported":["public"],"code_challenge_methods_supported":["plain","S256"],"request_parameter_supported":true})); }), -) +); -// @ts-ignore global.window["crypto"]={ // @ts-ignore - getRandomValues:(buffer)=>{return ""}, + getRandomValues:()=>{return "";}, // @ts-ignore subtle:{ - // @ts-ignore - digest:(algo, code) => {return Promise.resolve(new ArrayBuffer(32))}} -} -// @ts-ignore + digest:() => {return Promise.resolve(new ArrayBuffer(32));}}, +}; const url = "http://dummy.com"; Object.defineProperty(global.window, 'location', { value: { - href: url - } + href: url, + }, }); -beforeAll(() => server.listen()) -afterEach(() => server.resetHandlers()) -afterAll(() => server.close()) +beforeAll(() => server.listen()); +afterEach(() => server.resetHandlers()); +afterAll(() => server.close()); describe('Authenticating test suite', () => { it('Load home page then login should log', async () => { @@ -54,10 +52,10 @@ describe('Authenticating test suite', () => { refresh_time_before_tokens_expiration_in_second: 70, }; // @ts-ignore - const { getByText } = render(); - await waitFor(() => getByText('GitHub @axa-fr/react-oidc')); + render(); + await screen.findByText('GitHub @axa-fr/react-oidc'); fireEvent.click(screen.getByText('Login')); - await waitFor(() => getByText('Authentication in progress')); + await screen.findByText('Authentication in progress'); await sleepAsync(4000); expect(global.window.location.href).toBe("https://demo.duendesoftware.com/connect/authorize?client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauthentication%2Fcallback&scope=openid%20profile%20email%20api%20offline_access&response_type=code&youhou_demo=youhou&state=AAAAAAAAAAAAAAAA&nonce=AAAAAAAAAAAA&code_challenge=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&code_challenge_method=S256"); }); diff --git a/examples/react-oidc-demo/src/App.tsx b/examples/react-oidc-demo/src/App.tsx index 62d6615d5..f80c9250f 100644 --- a/examples/react-oidc-demo/src/App.tsx +++ b/examples/react-oidc-demo/src/App.tsx @@ -1,3 +1,4 @@ +import { OidcProvider, withOidcSecure } from '@axa-fr/react-oidc'; import React, { useReducer } from 'react'; import { BrowserRouter, NavLink, Route, Routes } from 'react-router-dom'; @@ -5,7 +6,6 @@ import { configurationIdentityServer } from './configurations.js'; import { FetchUserHoc, FetchUserHook } from './FetchUser.js'; import { Home } from './Home.js'; import { MultiAuthContainer } from './MultiAuth.js'; -import { OidcProvider, withOidcSecure } from '@axa-fr/react-oidc'; import { Profile, SecureProfile } from './Profile.js'; const OidcSecureHoc = withOidcSecure(Profile); diff --git a/examples/react-oidc-demo/src/FetchUser.tsx b/examples/react-oidc-demo/src/FetchUser.tsx index e1e7fd920..b4178363e 100644 --- a/examples/react-oidc-demo/src/FetchUser.tsx +++ b/examples/react-oidc-demo/src/FetchUser.tsx @@ -1,5 +1,5 @@ -import React, { useEffect, useState } from 'react'; import { OidcSecure, useOidcFetch, withOidcFetch } from '@axa-fr/react-oidc'; +import React, { useEffect, useState } from 'react'; const DisplayUserInfo = ({ fetch }) => { const [oidcUser, setOidcUser] = useState(null); diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index 420695fa5..045c8ef2c 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -1,6 +1,5 @@ -import React from 'react'; - import { useOidc } from '@axa-fr/react-oidc'; +import React from 'react'; export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 85a88266c..38ee6663f 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -1,7 +1,7 @@ +import { Fetch, OidcProvider, useOidc, useOidcAccessToken, useOidcIdToken } from '@axa-fr/react-oidc'; import React, { useReducer, useState } from 'react'; import { configurationGoogle, configurationIdentityServer, configurationIdentityServerWithHash } from './configurations'; -import { Fetch, OidcProvider, useOidc, useOidcAccessToken, useOidcIdToken } from '@axa-fr/react-oidc'; import AuthenticatingError from './override/AuthenticateError.component'; import Authenticating from './override/Authenticating.component'; import { CallBackSuccess } from './override/Callback.component'; diff --git a/examples/react-oidc-demo/src/Profile.tsx b/examples/react-oidc-demo/src/Profile.tsx index dd2cfcb95..4a510d6bd 100644 --- a/examples/react-oidc-demo/src/Profile.tsx +++ b/examples/react-oidc-demo/src/Profile.tsx @@ -1,5 +1,5 @@ +import { OidcSecure, type OidcUserInfo, OidcUserStatus, useOidcAccessToken, useOidcIdToken, useOidcUser } from '@axa-fr/react-oidc'; import React from 'react'; -import { type OidcUserInfo, OidcSecure, OidcUserStatus, useOidcAccessToken, useOidcIdToken, useOidcUser } from '@axa-fr/react-oidc'; interface OidcUserRoleInfo extends OidcUserInfo{ role?: string[]; diff --git a/examples/react-oidc-demo/src/override/SessionLost.component.tsx b/examples/react-oidc-demo/src/override/SessionLost.component.tsx index b90000eab..ab6edd96f 100644 --- a/examples/react-oidc-demo/src/override/SessionLost.component.tsx +++ b/examples/react-oidc-demo/src/override/SessionLost.component.tsx @@ -1,6 +1,6 @@ +import { useOidc } from '@axa-fr/react-oidc'; import { ComponentType } from 'react'; -import { useOidc } from '@axa-fr/react-oidc'; import { style } from './style.js'; export const SessionLost: ComponentType = ({ configurationName }) => { diff --git a/examples/react-oidc-demo/src/utils/sleep.ts b/examples/react-oidc-demo/src/utils/sleep.ts new file mode 100644 index 000000000..78dde1573 --- /dev/null +++ b/examples/react-oidc-demo/src/utils/sleep.ts @@ -0,0 +1,5 @@ +import timer from './timer'; + +export const sleepAsync = (milliseconds) => { + return new Promise((resolve) => timer.setTimeout(resolve, milliseconds)); +}; diff --git a/examples/react-oidc-demo/src/utils/timer.ts b/examples/react-oidc-demo/src/utils/timer.ts new file mode 100644 index 000000000..cd088f52b --- /dev/null +++ b/examples/react-oidc-demo/src/utils/timer.ts @@ -0,0 +1,163 @@ +const timer = (function () { + const workerPort = (function () { + let worker; + let blobURL; + + const workerCode = function () { + const innerIdsByOuterIds = {}; + + const methods = { + setTimeout: function (port, id, timeout) { + innerIdsByOuterIds[id] = setTimeout(function () { + port.postMessage(id); + innerIdsByOuterIds[id] = null; + }, timeout); + }, + + setInterval: function (port, id, timeout) { + innerIdsByOuterIds[id] = setInterval(function () { + port.postMessage(id); + }, timeout); + }, + + clearTimeout: function (port, id) { + clearTimeout(innerIdsByOuterIds[id]); + innerIdsByOuterIds[id] = null; + }, + + clearInterval: function (port, id) { + clearInterval(innerIdsByOuterIds[id]); + innerIdsByOuterIds[id] = null; + }, + }; + + function onMessage(port, event) { + const method = event.data[0]; + const id = event.data[1]; + const option = event.data[2]; + + if (methods[method]) { + methods[method](port, id, option); + } + } + + // For Dedicated Worker + this.onmessage = function (event) { + onMessage(self, event); + }; + + // For Shared Worker + this.onconnect = function (event) { + const port = event.ports[0]; + + port.onmessage = function (event) { + onMessage(port, event); + }; + }; + }.toString(); + + try { + const blob = new Blob(['(', workerCode, ')()'], { type: 'application/javascript' }); + blobURL = URL.createObjectURL(blob); + } catch (error) { + return null; + } + const isInsideBrowser = (typeof process === 'undefined'); + try { + if (SharedWorker) { + worker = new SharedWorker(blobURL); + return worker.port; + } + } catch (error) { + if (isInsideBrowser) { + console.warn('SharedWorker not available'); + } + } + try { + if (Worker) { + worker = new Worker(blobURL); + return worker; + } + } catch (error) { + if (isInsideBrowser) { + console.warn('Worker not available'); + } + } + + return null; + }()); + + if (!workerPort) { + // In NextJS with SSR (Server Side Rendering) during rending in Node JS, the window object is undefined, + // the global object is used instead as it is the closest approximation of a browsers window object. + const bindContext = (typeof window === 'undefined') ? global : window; + + return { + setTimeout: setTimeout.bind(bindContext), + clearTimeout: clearTimeout.bind(bindContext), + setInterval: setInterval.bind(bindContext), + clearInterval: clearInterval.bind(bindContext), + }; + } + + const getId = (function () { + let currentId = 0; + + return function () { + currentId++; + return currentId; + }; + }()); + + const timeoutCallbacksById = {}; + const intervalCallbacksById = {}; + + workerPort.onmessage = function (event) { + const id = event.data; + + const timeoutCallback = timeoutCallbacksById[id]; + if (timeoutCallback) { + timeoutCallback(); + timeoutCallbacksById[id] = null; + return; + } + + const intervalCallback = intervalCallbacksById[id]; + if (intervalCallback) { + intervalCallback(); + } + }; + + function setTimeoutWorker(callback, timeout) { + const id = getId(); + workerPort.postMessage(['setTimeout', id, timeout]); + timeoutCallbacksById[id] = callback; + return id; + } + + function clearTimeoutWorker(id) { + workerPort.postMessage(['clearTimeout', id]); + timeoutCallbacksById[id] = null; + } + + function setIntervalWorker(callback, timeout) { + const id = getId(); + workerPort.postMessage(['setInterval', id, timeout]); + intervalCallbacksById[id] = callback; + return id; + } + + function clearIntervalWorker(id) { + workerPort.postMessage(['clearInterval', id]); + intervalCallbacksById[id] = null; + } + + return { + setTimeout: setTimeoutWorker, + clearTimeout: clearTimeoutWorker, + setInterval: setIntervalWorker, + clearInterval: clearIntervalWorker, + }; +}()); + +export default timer; From 0d8bc0626be0d5d14edca83dacb7367f57d4bb6d Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 28 Jul 2023 11:54:07 +0200 Subject: [PATCH 013/565] feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release) --- .github/workflows/npm-publish.yml | 60 +++++++++++++------ examples/oidc-client-demo/package.json | 2 +- examples/oidc-client-demo/src/index.tsx | 12 ++-- examples/react-oidc-demo/README.md | 2 +- examples/react-oidc-demo/package.json | 12 ++-- package.json | 5 +- packages/oidc-client/README.md | 10 ++-- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- packages/react-oidc/src/FetchToken.tsx | 2 +- packages/react-oidc/src/OidcProvider.tsx | 2 +- packages/react-oidc/src/OidcSecure.tsx | 2 +- packages/react-oidc/src/ReactOidc.tsx | 2 +- packages/react-oidc/src/User.ts | 2 +- .../default-component/Callback.component.tsx | 2 +- .../SilentCallback.component.tsx | 2 +- .../SilentLogin.component.tsx | 2 +- .../react-oidc/src/core/routes/OidcRoutes.tsx | 2 +- packages/react-oidc/src/index.ts | 4 +- pnpm-lock.yaml | 53 ++++++++-------- readme.md | 17 +++--- 21 files changed, 112 insertions(+), 87 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index b5f637fa1..39600d4c9 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -148,7 +148,10 @@ jobs: # oidc-client - name: pnpm version ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: pnpm version ${{ steps.tag.outputs.new_version }} + run: | + set -e + pnpm version ${{ steps.tag.outputs.new_version }} || true + cat package.json working-directory: ./packages/oidc-client - name: pnpm ci @@ -160,9 +163,12 @@ jobs: working-directory: ./packages/oidc-client # React-oidc - - name: npm version ${{ steps.tag.outputs.new_version }} + - name: pnpm version ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: npm version ${{ steps.tag.outputs.new_version }} + run: | + set -e + pnpm version ${{ steps.tag.outputs.new_version }} || true + cat package.json working-directory: ./packages/react-oidc - name: pnpm i @@ -177,16 +183,6 @@ jobs: run: pnpm test -- --run working-directory: ./packages/react-oidc - - name: Commit updates package.json - uses: stefanzweifel/git-auto-commit-action@v4 - if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' - with: - commit_message: "[skip ci] Update version package.json" - commit_user_name: GitHub - commit_user_email: github-action@bot.com - commit_author: GitHub - push_options: '--force' - # oidc-client-service-worker - id: publish-oidc-client-service-worker uses: JS-DevTools/npm-publish@v1 @@ -198,7 +194,9 @@ jobs: # oidc-client - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json + run: | + sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json + cat package.json working-directory: ./packages/oidc-client - id: publish-oidc-client @@ -207,19 +205,47 @@ jobs: with: token: ${{ secrets.NPM_TOKEN }} package: ./packages/oidc-client/package.json - + + - name: replace ${{ steps.tag.outputs.new_version }} by workspace:* + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: | + sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json + cat package.json + working-directory: ./packages/oidc-client + # react-oidc - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json + run: | + sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json + cat package.json working-directory: ./packages/react-oidc - + - id: publish-react uses: JS-DevTools/npm-publish@v1 if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' with: token: ${{ secrets.NPM_TOKEN }} package: ./packages/react-oidc/package.json + + - name: replace ${{ steps.tag.outputs.new_version }} by workspace:* + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: | + sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json + sed -i 's/"@axa-fr\/oidc-client": "[^"]*"/"@axa-fr\/oidc-client": "workspace:*"/g' package.json + cat package.json + working-directory: ./packages/react-oidc + + - name: Commit updates package.json + uses: stefanzweifel/git-auto-commit-action@v4 + if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' + with: + commit_message: "[skip ci] Update version package.json" + commit_user_name: GitHub + commit_user_email: github-action@bot.com + commit_author: GitHub + push_options: '--force' + - name: SonarCloud Scan uses: sonarsource/sonarcloud-github-action@master diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index bfc877e94..b64e62557 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@axa-fr/vanilla-oidc": "workspace:~", + "@axa-fr/oidc-client": "workspace:~", "@testing-library/jest-dom": "^5.16.5", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index b9e5470b3..f13b97615 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -1,4 +1,4 @@ -import { VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { VanillaOidc } from '@axa-fr/oidc-client'; class Router { getCustomHistory(){ const generateKey = () => @@ -97,7 +97,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { if(href.includes(configuration.redirect_uri)){ // @ts-ignore element.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Loading callback

`; vanillaOidc.loginCallbackAsync().then(()=>{ @@ -107,7 +107,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { const tokens = vanillaOidc.tokens; // @ts-ignore element.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Authenticated

${JSON.stringify(tokens,null,'\t')}
@@ -124,7 +124,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { window.logout = () => vanillaOidc.logoutAsync(); // @ts-ignore element.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Authenticated

${JSON.stringify(tokens,null,'\t')}
@@ -136,14 +136,14 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { window.login= () => { // @ts-ignore element.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Loading

`; vanillaOidc.loginAsync("/"); }; // @ts-ignore element.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

`; } diff --git a/examples/react-oidc-demo/README.md b/examples/react-oidc-demo/README.md index 102b48cfa..b61a546b4 100644 --- a/examples/react-oidc-demo/README.md +++ b/examples/react-oidc-demo/README.md @@ -547,7 +547,7 @@ render(, document.getElementById("root")); ## How It Works -These components encapsulate the use of "@axa-fr/vanilla-oidc" in order to hide workflow complexity. +These components encapsulate the use of "@axa-fr/oidc-client" in order to hide workflow complexity. Internally, native History API is used to be router library agnostic. More information about OIDC diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index dc59cabc5..7f30f2314 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -16,10 +16,13 @@ "serve": "vite preview", "clean": "rimraf dist" }, - "devDependencies": { - "@axa-fr/vanilla-oidc": "workspace:*", + "dependencies": { "@axa-fr/react-oidc":"workspace:*", - "@axa-fr/oidc-client-service-worker": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.14.1" + }, + "devDependencies": { "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.3.0", "@testing-library/user-event": "14.4.3", @@ -31,9 +34,6 @@ "cross-env": "^7.0.3", "jsdom": "22.1.0", "msw": "1.2.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1", "typescript": "5.1.6", "vite": "^4.4.4", "vite-plugin-dts": "^3.3.0", diff --git a/package.json b/package.json index cab2827cc..239b780dc 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,8 @@ "license": "MIT", "workspaces": [ "packages/oidc-service-worker", - "packages/vanilla", - "packages/react", - "packages/vanilla-demo" + "packages/oidc-client", + "packages/react-oidc" ], "keywords": [ "react", diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index e0144279d..c8b7aa9f0 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -42,7 +42,7 @@ The service worker catch **access_token** and **refresh_token** that will never ### Getting Started ```sh -npm install @axa-fr/vanilla-oidc --save +npm install @axa-fr/oidc-client --save # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -68,7 +68,7 @@ const trustedDomains = { The code of the demo : ```js -import { VanillaOidc } from '@axa-fr/vanilla-oidc' +import { VanillaOidc } from '@axa-fr/oidc-client' export const configuration = { client_id: 'interactive.public.short', @@ -91,7 +91,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { window.location.href = "/"; }); document.body.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Loading

`; return @@ -104,7 +104,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { // @ts-ignore window.logout = () => vanillaOidc.logoutAsync(); document.body.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

Authenticated

${JSON.stringify(tokens,null,'\t')}
@@ -115,7 +115,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { // @ts-ignore window.login= () => vanillaOidc.loginAsync("/"); document.body.innerHTML = `
-

@axa-fr/vanilla-oidc demo

+

@axa-fr/oidc-client demo

` } diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 0c066bde1..597f3138e 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,5 +1,5 @@ { - "name": "@axa-fr/vanilla-oidc", + "name": "@axa-fr/oidc-client", "version": "6.25.6", "private": false, "type": "module", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 585d3e6f0..0c39dae24 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -41,7 +41,7 @@ }, "dependencies": { "@axa-fr/oidc-client-service-worker": "workspace:*", - "@axa-fr/vanilla-oidc": "workspace:*", + "@axa-fr/oidc-client": "workspace:*", "base64-js": "1.5.1" }, "peerDependencies": { diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index aea6d68e7..160bbcadf 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -1,4 +1,4 @@ -import { Fetch, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { Fetch, VanillaOidc } from '@axa-fr/oidc-client'; import { useCallback } from 'react'; export interface ComponentWithOidcFetchProps { diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index b7ca22e55..6ec25b693 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -1,4 +1,4 @@ -import { Fetch, getFetchDefault, OidcConfiguration, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { Fetch, getFetchDefault, OidcConfiguration, VanillaOidc } from '@axa-fr/oidc-client'; import { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import AuthenticatingError from './core/default-component/AuthenticateError.component.js'; diff --git a/packages/react-oidc/src/OidcSecure.tsx b/packages/react-oidc/src/OidcSecure.tsx index 0635e2f66..a83c4e00c 100644 --- a/packages/react-oidc/src/OidcSecure.tsx +++ b/packages/react-oidc/src/OidcSecure.tsx @@ -1,4 +1,4 @@ -import { StringMap, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { StringMap, VanillaOidc } from '@axa-fr/oidc-client'; import { FC, PropsWithChildren, useEffect } from 'react'; export type OidcSecureProps = { diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 367c4d085..4d6e9a122 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,4 +1,4 @@ -import { StringMap, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { StringMap, VanillaOidc } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; const defaultConfigurationName = 'default'; diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index 4311e0c58..c889d0319 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -1,4 +1,4 @@ -import { type OidcUserInfo, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { type OidcUserInfo, VanillaOidc } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; export enum OidcUserStatus { diff --git a/packages/react-oidc/src/core/default-component/Callback.component.tsx b/packages/react-oidc/src/core/default-component/Callback.component.tsx index 612d326b8..ee8474032 100644 --- a/packages/react-oidc/src/core/default-component/Callback.component.tsx +++ b/packages/react-oidc/src/core/default-component/Callback.component.tsx @@ -1,4 +1,4 @@ -import { VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { VanillaOidc } from '@axa-fr/oidc-client'; import { ComponentType, useEffect, useState } from 'react'; import { getCustomHistory } from '../routes/withRouter.js'; diff --git a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx index dcef5baa4..6f6236076 100644 --- a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx @@ -1,4 +1,4 @@ -import { VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { VanillaOidc } from '@axa-fr/oidc-client'; import { ComponentType, useEffect } from 'react'; const SilentCallbackManager: ComponentType = ({ configurationName }) => { diff --git a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx index f12290bbd..26d9ec696 100644 --- a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx @@ -1,4 +1,4 @@ -import { getParseQueryStringFromLocation, VanillaOidc } from '@axa-fr/vanilla-oidc'; +import { getParseQueryStringFromLocation, VanillaOidc } from '@axa-fr/oidc-client'; import { ComponentType, useEffect } from 'react'; const SilentLogin: ComponentType = ({ configurationName }) => { diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.tsx index 7440d5e19..bddfd8132 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.tsx @@ -1,4 +1,4 @@ -import { getPath } from '@axa-fr/vanilla-oidc'; +import { getPath } from '@axa-fr/oidc-client'; import React, { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import CallbackComponent from '../default-component/Callback.component.js'; diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index 44537a8a1..1970a986f 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -8,5 +8,5 @@ export type { Fetch, OidcConfiguration, StringMap, -} from '@axa-fr/vanilla-oidc'; -export { type OidcUserInfo, TokenRenewMode } from '@axa-fr/vanilla-oidc'; +} from '@axa-fr/oidc-client'; +export { type OidcUserInfo, TokenRenewMode } from '@axa-fr/oidc-client'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea4915839..fb5534e72 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: @@ -82,7 +86,7 @@ importers: examples/oidc-client-demo: dependencies: - '@axa-fr/vanilla-oidc': + '@axa-fr/oidc-client': specifier: workspace:~ version: link:../../packages/oidc-client '@testing-library/jest-dom': @@ -112,16 +116,20 @@ importers: version: 4.4.4(@types/node@18.11.9) examples/react-oidc-demo: - devDependencies: - '@axa-fr/oidc-client-service-worker': - specifier: workspace:* - version: link:../../packages/oidc-client-service-worker + dependencies: '@axa-fr/react-oidc': specifier: workspace:* version: link:../../packages/react-oidc - '@axa-fr/vanilla-oidc': - specifier: workspace:* - version: link:../../packages/oidc-client + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.14.1 + version: 6.14.1(react-dom@18.2.0)(react@18.2.0) + devDependencies: '@testing-library/jest-dom': specifier: 5.16.5 version: 5.16.5 @@ -155,15 +163,6 @@ importers: msw: specifier: 1.2.2 version: 1.2.2(typescript@5.1.6) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-router-dom: - specifier: ^6.14.1 - version: 6.14.1(react-dom@18.2.0)(react@18.2.0) typescript: specifier: 5.1.6 version: 5.1.6 @@ -252,12 +251,12 @@ importers: packages/react-oidc: dependencies: + '@axa-fr/oidc-client': + specifier: workspace:* + version: link:../oidc-client '@axa-fr/oidc-client-service-worker': specifier: workspace:* version: link:../oidc-client-service-worker - '@axa-fr/vanilla-oidc': - specifier: workspace:* - version: link:../oidc-client base64-js: specifier: 1.5.1 version: 1.5.1 @@ -1186,6 +1185,7 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] requiresBuild: true dev: false optional: true @@ -1195,6 +1195,7 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] requiresBuild: true dev: false optional: true @@ -1204,6 +1205,7 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] requiresBuild: true dev: false optional: true @@ -1213,6 +1215,7 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] requiresBuild: true dev: false optional: true @@ -1291,7 +1294,7 @@ packages: /@remix-run/router@1.7.1: resolution: {integrity: sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==} engines: {node: '>=14'} - dev: true + dev: false /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} @@ -4990,7 +4993,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-router: 6.14.1(react@18.2.0) - dev: true + dev: false /react-router@6.14.1(react@18.2.0): resolution: {integrity: sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==} @@ -5000,7 +5003,7 @@ packages: dependencies: '@remix-run/router': 1.7.1 react: 18.2.0 - dev: true + dev: false /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} @@ -6253,7 +6256,3 @@ packages: /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false diff --git a/readme.md b/readme.md index fc9af3e02..4c414ae67 100644 --- a/readme.md +++ b/readme.md @@ -20,13 +20,14 @@ A set of react components to make Oidc (OpenID Connect) client easy. It aim to s - [Run The NextJS Demo](#run-the-nextjs-demo) - [How It Works](#how-it-works) - Packages - - [`@axa-fr/react-oidc`](./packages/react#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) - - [`@axa-fr/vanilla-oidc`](./packages/vanilla#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc) - - [`@axa-fr/react-oidc-context`](./packages/context#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context) **Will be deprecated in v6: has been renamed to @axa-fr/react-oidc** - - [`@axa-fr/react-oidc-context-fetch`](./packages/context-fetch#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch) **Deprecated in v4** - - [`@axa-fr/react-oidc-redux`](./packages/redux#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux) **Deprecated in v4 : use react-oidc-context which works with redux and in fact does not use any react context** - - [`@axa-fr/react-oidc-redux-fetch`](./packages/redux-fetch#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch) **Deprecated in v4** - - [`@axa-fr/react-oidc-fetch-observable`](./packages/fetch-observable#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable) **Deprecated in v4** + - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) + - [`@axa-fr/oidc-client`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Foidc-client.svg)](https://badge.fury.io/js/%40axa-fr%2Foidc-client) + - [`@axa-fr/vanilla-oidc`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc) **Deprecated in v6: has been renamed to @axa-fr/oidc-client** + - [`@axa-fr/react-oidc-context`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context) **Deprecated in v6: has been renamed to @axa-fr/react-oidc** + - [`@axa-fr/react-oidc-context-fetch`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch) **Deprecated in v4** + - [`@axa-fr/react-oidc-redux`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux) **Deprecated in v4 : use react-oidc-context which works with redux and in fact does not use any react context** + - [`@axa-fr/react-oidc-redux-fetch`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch) **Deprecated in v4** + - [`@axa-fr/react-oidc-fetch-observable`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable) **Deprecated in v4** - [Migrations](#migrations) - [Contribute](#contribute) @@ -317,7 +318,7 @@ pnpm run dev ## How It Works -These components encapsulate the use of "`@axa-fr/vanilla-oidc`" in order to hide workflow complexity. +These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. Internally, native History API is used to be router library agnostic. More information about OIDC From 6e9e8bb94db0c52f684ea4c42a81c69f59dd3f2c Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 28 Jul 2023 12:28:26 +0000 Subject: [PATCH 014/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a57f857f1..de0dbee59 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.25.6", + "version": "6.26.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 597f3138e..3d57a62e1 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "6.25.6", + "version": "6.26.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0c39dae24..f844e9c5f 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "6.25.6", + "version": "6.26.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From ff61e5d5e3387888ce18ec8e99fde0044009f481 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 31 Jul 2023 11:08:32 +0200 Subject: [PATCH 015/565] fix(demo): google new link and add navigate button --- .../public/OidcTrustedDomains.js | 2 +- .../public/OidcTrustedDomains.js | 2 +- examples/react-oidc-demo/src/Home.tsx | 7 + .../src/override/SessionLost.component.tsx | 6 + pnpm-lock.yaml | 3037 +++++++++-------- 5 files changed, 1622 insertions(+), 1432 deletions(-) diff --git a/examples/oidc-client-demo/public/OidcTrustedDomains.js b/examples/oidc-client-demo/public/OidcTrustedDomains.js index c1b0f6fc3..5bc49de89 100644 --- a/examples/oidc-client-demo/public/OidcTrustedDomains.js +++ b/examples/oidc-client-demo/public/OidcTrustedDomains.js @@ -9,7 +9,7 @@ const trustedDomains = { config_without_silent_login: ['https://demo.duendesoftware.com'], config_without_refresh_token: ['https://demo.duendesoftware.com'], config_without_refresh_token_silent_login: ['https://demo.duendesoftware.com'], - config_google: ['https://oauth2.googleapis.com', 'https://openidconnect.googleapis.com'], + config_google: ['https://oauth2.googleapis.com', 'https://openidconnect.googleapis.com', 'https://accounts.google.com'], config_with_hash: ['https://demo.duendesoftware.com'], }; // Service worker will continue to give access token to the JavaScript client diff --git a/examples/react-oidc-demo/public/OidcTrustedDomains.js b/examples/react-oidc-demo/public/OidcTrustedDomains.js index c1b0f6fc3..5bc49de89 100644 --- a/examples/react-oidc-demo/public/OidcTrustedDomains.js +++ b/examples/react-oidc-demo/public/OidcTrustedDomains.js @@ -9,7 +9,7 @@ const trustedDomains = { config_without_silent_login: ['https://demo.duendesoftware.com'], config_without_refresh_token: ['https://demo.duendesoftware.com'], config_without_refresh_token_silent_login: ['https://demo.duendesoftware.com'], - config_google: ['https://oauth2.googleapis.com', 'https://openidconnect.googleapis.com'], + config_google: ['https://oauth2.googleapis.com', 'https://openidconnect.googleapis.com', 'https://accounts.google.com'], config_with_hash: ['https://demo.duendesoftware.com'], }; // Service worker will continue to give access token to the JavaScript client diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index 045c8ef2c..20353fce5 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -1,8 +1,14 @@ import { useOidc } from '@axa-fr/react-oidc'; import React from 'react'; +import {useNavigate} from "react-router-dom"; export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); + const navigate = useNavigate(); + + const navigateProfile = () => { + navigate("/profile"); + }; return (
@@ -15,6 +21,7 @@ export const Home = () => { {isAuthenticated &&

} {isAuthenticated &&

} {isAuthenticated &&

} +

diff --git a/examples/react-oidc-demo/src/override/SessionLost.component.tsx b/examples/react-oidc-demo/src/override/SessionLost.component.tsx index ab6edd96f..080e599dc 100644 --- a/examples/react-oidc-demo/src/override/SessionLost.component.tsx +++ b/examples/react-oidc-demo/src/override/SessionLost.component.tsx @@ -2,9 +2,14 @@ import { useOidc } from '@axa-fr/react-oidc'; import { ComponentType } from 'react'; import { style } from './style.js'; +import {useNavigate} from "react-router-dom"; export const SessionLost: ComponentType = ({ configurationName }) => { const { login } = useOidc(configurationName); + const navigate = useNavigate(); + const navigateProfile = () => { + navigate("/profile"); + }; return (
@@ -14,6 +19,7 @@ export const SessionLost: ComponentType = ({ configurationName }) => { Your session has expired. Please re-authenticate.

+
); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb5534e72..ac70b8a06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,332 +1,240 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false +lockfileVersion: 5.4 importers: .: + specifiers: + '@typescript-eslint/eslint-plugin': ^6.0.0 + '@typescript-eslint/parser': ^6.0.0 + eslint: ^8.45.0 + eslint-config-prettier: ^8.8.0 + eslint-define-config: ^1.21.0 + eslint-plugin-import: ^2.27.5 + eslint-plugin-jsx-a11y: ^6.7.1 + eslint-plugin-n: ^16.0.1 + eslint-plugin-no-only-tests: ^3.1.0 + eslint-plugin-prettier: ^5.0.0 + eslint-plugin-react: ^7.32.2 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-regexp: ^1.15.0 + eslint-plugin-simple-import-sort: ^10.0.0 + eslint-plugin-testing-library: ^5.11.0 + prettier: ^3.0.0 + tslib: ^2.6.0 + tsx: ^3.12.7 + typescript: ^5.1.6 + vitest: ^0.33.0 devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) - eslint: - specifier: ^8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) - eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@6.0.0)(eslint@8.45.0) - eslint-plugin-jsx-a11y: - specifier: ^6.7.1 - version: 6.7.1(eslint@8.45.0) - eslint-plugin-n: - specifier: ^16.0.1 - version: 16.0.1(eslint@8.45.0) - eslint-plugin-no-only-tests: - specifier: ^3.1.0 - version: 3.1.0 - eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.45.0) - eslint-plugin-regexp: - specifier: ^1.15.0 - version: 1.15.0(eslint@8.45.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.45.0) - eslint-plugin-testing-library: - specifier: ^5.11.0 - version: 5.11.0(eslint@8.45.0)(typescript@5.1.6) - prettier: - specifier: ^3.0.0 - version: 3.0.0 - tslib: - specifier: ^2.6.0 - version: 2.6.0 - tsx: - specifier: ^3.12.7 - version: 3.12.7 - typescript: - specifier: ^5.1.6 - version: 5.1.6 - vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + '@typescript-eslint/eslint-plugin': 6.2.0_idzvfmj5qli4h3jfxnf522w3fe + '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju + eslint: 8.46.0 + eslint-config-prettier: 8.9.0_eslint@8.46.0 + eslint-define-config: 1.22.0 + eslint-plugin-import: 2.28.0_ec5nhyiwpcpmef4grv6n2vqr5y + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.46.0 + eslint-plugin-n: 16.0.1_eslint@8.46.0 + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-prettier: 5.0.0_zqxxaukdltekzrbl7w2kyx7tna + eslint-plugin-react: 7.33.1_eslint@8.46.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.46.0 + eslint-plugin-regexp: 1.15.0_eslint@8.46.0 + eslint-plugin-simple-import-sort: 10.0.0_eslint@8.46.0 + eslint-plugin-testing-library: 5.11.0_7haavtekmro7ptbnqmctjaodju + prettier: 3.0.0 + tslib: 2.6.1 + tsx: 3.12.7 + typescript: 5.1.6 + vitest: 0.33.0 examples/nextjs-demo: - dependencies: - '@axa-fr/react-oidc': - specifier: workspace:* - version: link:../../packages/react-oidc - next: - specifier: latest - version: 13.4.10(react-dom@18.2.0)(react@18.2.0) - react: - specifier: latest - version: 18.2.0 - react-dom: - specifier: latest - version: 18.2.0(react@18.2.0) + specifiers: + '@axa-fr/react-oidc': workspace:* + next: latest + react: latest + react-dom: latest + dependencies: + '@axa-fr/react-oidc': link:../../packages/react-oidc + next: 13.4.12_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 examples/oidc-client-demo: - dependencies: - '@axa-fr/oidc-client': - specifier: workspace:~ - version: link:../../packages/oidc-client - '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.16.5 - '@testing-library/user-event': - specifier: ^13.5.0 - version: 13.5.0(@testing-library/dom@9.3.1) - '@types/jest': - specifier: ^27.5.2 - version: 27.5.2 - typescript: - specifier: ^5.1.6 - version: 5.1.6 - web-vitals: - specifier: ^3.4.0 - version: 3.4.0 + specifiers: + '@axa-fr/oidc-client': workspace:~ + '@testing-library/jest-dom': ^5.16.5 + '@testing-library/user-event': ^13.5.0 + '@types/jest': ^27.5.2 + '@types/node': ^18.11.9 + cross-env: ^7.0.3 + typescript: ^5.1.6 + vite: ^4.4.4 + web-vitals: ^3.4.0 + dependencies: + '@axa-fr/oidc-client': link:../../packages/oidc-client + '@testing-library/jest-dom': 5.17.0 + '@testing-library/user-event': 13.5.0 + '@types/jest': 27.5.2 + typescript: 5.1.6 + web-vitals: 3.4.0 devDependencies: - '@types/node': - specifier: ^18.11.9 - version: 18.11.9 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.11.9) + '@types/node': 18.17.1 + cross-env: 7.0.3 + vite: 4.4.7_@types+node@18.17.1 examples/react-oidc-demo: + specifiers: + '@axa-fr/react-oidc': workspace:* + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.3.0 + '@testing-library/user-event': 14.4.3 + '@types/react': ^18.2.15 + '@vitejs/plugin-react': 4.0.3 + '@vitest/coverage-c8': ^0.33.0 + bootstrap: ^4.6.2 + copyfiles: 2.4.1 + cross-env: ^7.0.3 + jsdom: 22.1.0 + msw: 1.2.2 + react: ^18.2.0 + react-dom: ^18.2.0 + react-router-dom: ^6.14.1 + typescript: 5.1.6 + vite: ^4.4.4 + vite-plugin-dts: ^3.3.0 + vitest: ^0.33.0 dependencies: - '@axa-fr/react-oidc': - specifier: workspace:* - version: link:../../packages/react-oidc - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-router-dom: - specifier: ^6.14.1 - version: 6.14.1(react-dom@18.2.0)(react@18.2.0) + '@axa-fr/react-oidc': link:../../packages/react-oidc + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router-dom: 6.14.2_biqbaboplfbrettd7655fr4n2y devDependencies: - '@testing-library/jest-dom': - specifier: 5.16.5 - version: 5.16.5 - '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) - '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) - '@types/react': - specifier: ^18.2.15 - version: 18.2.15 - '@vitejs/plugin-react': - specifier: 4.0.3 - version: 4.0.3(vite@4.4.4) - '@vitest/coverage-c8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) - bootstrap: - specifier: ^4.6.2 - version: 4.6.2(jquery@3.7.0)(popper.js@1.16.1) - copyfiles: - specifier: 2.4.1 - version: 2.4.1 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - jsdom: - specifier: 22.1.0 - version: 22.1.0 - msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) - typescript: - specifier: 5.1.6 - version: 5.1.6 - vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.11.9) - vite-plugin-dts: - specifier: ^3.3.0 - version: 3.3.0(typescript@5.1.6)(vite@4.4.4) - vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y + '@testing-library/user-event': 14.4.3 + '@types/react': 18.2.17 + '@vitejs/plugin-react': 4.0.3_vite@4.4.7 + '@vitest/coverage-c8': 0.33.0_vitest@0.33.0 + bootstrap: 4.6.2 + copyfiles: 2.4.1 + cross-env: 7.0.3 + jsdom: 22.1.0 + msw: 1.2.2_typescript@5.1.6 + typescript: 5.1.6 + vite: 4.4.7 + vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea + vitest: 0.33.0_jsdom@22.1.0 packages/oidc-client: + specifiers: + '@axa-fr/oidc-client-service-worker': workspace:* + '@testing-library/dom': ^9.3.1 + '@testing-library/jest-dom': ^5.16.5 + '@testing-library/react': 13.3.0 + '@vitest/coverage-v8': ^0.33.0 + base64-js: ^1.5.1 + cpy: ^10.1.0 + cpy-cli: ^5.0.0 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: ^4.4.4 + vite-plugin-dts: ^3.3.0 + vitest: ^0.33.0 dependencies: - '@axa-fr/oidc-client-service-worker': - specifier: workspace:* - version: link:../oidc-client-service-worker + '@axa-fr/oidc-client-service-worker': link:../oidc-client-service-worker devDependencies: - '@testing-library/dom': - specifier: ^9.3.1 - version: 9.3.1 - '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.16.5 - '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) - '@vitest/coverage-v8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) - base64-js: - specifier: ^1.5.1 - version: 1.5.1 - cpy: - specifier: ^10.1.0 - version: 10.1.0 - cpy-cli: - specifier: ^5.0.0 - version: 5.0.0 - rimraf: - specifier: 5.0.1 - version: 5.0.1 - typescript: - specifier: 5.1.6 - version: 5.1.6 - vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.11.9) - vite-plugin-dts: - specifier: ^3.3.0 - version: 3.3.0(typescript@5.1.6)(vite@4.4.4) - vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + '@testing-library/dom': 9.3.1 + '@testing-library/jest-dom': 5.17.0 + '@testing-library/react': 13.3.0 + '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 + base64-js: 1.5.1 + cpy: 10.1.0 + cpy-cli: 5.0.0 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: 4.4.7 + vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea + vitest: 0.33.0 packages/oidc-client-service-worker: + specifiers: + '@vitest/coverage-c8': ^0.33.0 + cpy: ^10.1.0 + cpy-cli: ^5.0.0 + msw: 1.2.2 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: ^4.4.4 + vite-plugin-dts: ^3.3.0 + vitest: ^0.33.0 devDependencies: - '@vitest/coverage-c8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) - cpy: - specifier: ^10.1.0 - version: 10.1.0 - cpy-cli: - specifier: ^5.0.0 - version: 5.0.0 - msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) - rimraf: - specifier: 5.0.1 - version: 5.0.1 - typescript: - specifier: 5.1.6 - version: 5.1.6 - vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.11.9) - vite-plugin-dts: - specifier: ^3.3.0 - version: 3.3.0(typescript@5.1.6)(vite@4.4.4) - vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + '@vitest/coverage-c8': 0.33.0_vitest@0.33.0 + cpy: 10.1.0 + cpy-cli: 5.0.0 + msw: 1.2.2_typescript@5.1.6 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: 4.4.7 + vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea + vitest: 0.33.0 packages/react-oidc: + specifiers: + '@axa-fr/oidc-client': workspace:* + '@axa-fr/oidc-client-service-worker': workspace:* + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.3.0 + '@testing-library/user-event': 14.4.3 + '@types/react': ^18.2.15 + '@vitejs/plugin-react': 4.0.3 + '@vitest/coverage-v8': ^0.33.0 + base64-js: 1.5.1 + cpy: ^10.1.0 + cpy-cli: ^5.0.0 + cross-env: ^7.0.3 + jsdom: 22.1.0 + msw: 1.2.2 + react: ^18.2.0 + react-dom: ^18.2.0 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: ^4.4.4 + vite-plugin-dts: ^3.3.0 + vitest: ^0.33.0 dependencies: - '@axa-fr/oidc-client': - specifier: workspace:* - version: link:../oidc-client - '@axa-fr/oidc-client-service-worker': - specifier: workspace:* - version: link:../oidc-client-service-worker - base64-js: - specifier: 1.5.1 - version: 1.5.1 + '@axa-fr/oidc-client': link:../oidc-client + '@axa-fr/oidc-client-service-worker': link:../oidc-client-service-worker + base64-js: 1.5.1 devDependencies: - '@testing-library/jest-dom': - specifier: 5.16.5 - version: 5.16.5 - '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) - '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) - '@types/react': - specifier: ^18.2.15 - version: 18.2.15 - '@vitejs/plugin-react': - specifier: 4.0.3 - version: 4.0.3(vite@4.4.4) - '@vitest/coverage-v8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) - cpy: - specifier: ^10.1.0 - version: 10.1.0 - cpy-cli: - specifier: ^5.0.0 - version: 5.0.0 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - jsdom: - specifier: 22.1.0 - version: 22.1.0 - msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - rimraf: - specifier: 5.0.1 - version: 5.0.1 - typescript: - specifier: 5.1.6 - version: 5.1.6 - vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.11.9) - vite-plugin-dts: - specifier: ^3.3.0 - version: 3.3.0(typescript@5.1.6)(vite@4.4.4) - vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y + '@testing-library/user-event': 14.4.3 + '@types/react': 18.2.17 + '@vitejs/plugin-react': 4.0.3_vite@4.4.7 + '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 + cpy: 10.1.0 + cpy-cli: 5.0.0 + cross-env: 7.0.3 + jsdom: 22.1.0 + msw: 1.2.2_typescript@5.1.6 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + rimraf: 5.0.1 + typescript: 5.1.6 + vite: 4.4.7 + vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea + vitest: 0.33.0_jsdom@22.1.0 packages: - /@aashutoshrathi/word-wrap@1.2.6: + /@aashutoshrathi/word-wrap/1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools@4.2.0: + /@adobe/css-tools/4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} - /@ampproject/remapping@2.2.1: + /@ampproject/remapping/2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: @@ -334,26 +242,27 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame@7.22.5: + /@babel/code-frame/7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 + dev: true - /@babel/compat-data@7.22.9: + /@babel/compat-data/7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.22.9: + /@babel/core/7.22.9: resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-compilation-targets': 7.22.9_@babel+core@7.22.9 + '@babel/helper-module-transforms': 7.22.9_@babel+core@7.22.9 '@babel/helpers': 7.22.6 '@babel/parser': 7.22.7 '@babel/template': 7.22.5 @@ -368,7 +277,7 @@ packages: - supports-color dev: true - /@babel/generator@7.22.9: + /@babel/generator/7.22.9: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: @@ -378,7 +287,7 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + /@babel/helper-compilation-targets/7.22.9_@babel+core@7.22.9: resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -387,17 +296,17 @@ packages: '@babel/compat-data': 7.22.9 '@babel/core': 7.22.9 '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.22.5: + /@babel/helper-environment-visitor/7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.22.5: + /@babel/helper-function-name/7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: @@ -405,21 +314,21 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables@7.22.5: + /@babel/helper-hoist-variables/7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports@7.22.5: + /@babel/helper-module-imports/7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + /@babel/helper-module-transforms/7.22.9_@babel+core@7.22.9: resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -433,40 +342,41 @@ packages: '@babel/helper-validator-identifier': 7.22.5 dev: true - /@babel/helper-plugin-utils@7.22.5: + /@babel/helper-plugin-utils/7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access@7.22.5: + /@babel/helper-simple-access/7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration@7.22.6: + /@babel/helper-split-export-declaration/7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-string-parser@7.22.5: + /@babel/helper-string-parser/7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.5: + /@babel/helper-validator-identifier/7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} + dev: true - /@babel/helper-validator-option@7.22.5: + /@babel/helper-validator-option/7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.22.6: + /@babel/helpers/7.22.6: resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: @@ -477,15 +387,16 @@ packages: - supports-color dev: true - /@babel/highlight@7.22.5: + /@babel/highlight/7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true - /@babel/parser@7.22.7: + /@babel/parser/7.22.7: resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -493,7 +404,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-react-jsx-self/7.22.5_@babel+core@7.22.9: resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -503,7 +414,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-react-jsx-source/7.22.5_@babel+core@7.22.9: resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -513,13 +424,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.22.6: + /@babel/runtime/7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.22.5: + /@babel/template/7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: @@ -528,7 +439,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/traverse@7.22.8: + /@babel/traverse/7.22.8: resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: @@ -546,7 +457,7 @@ packages: - supports-color dev: true - /@babel/types@7.22.5: + /@babel/types/7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: @@ -555,68 +466,68 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage@0.2.3: + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@esbuild-kit/cjs-loader@2.4.2: + /@esbuild-kit/cjs-loader/2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.6.2 dev: true - /@esbuild-kit/core-utils@3.1.0: + /@esbuild-kit/core-utils/3.1.0: resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: esbuild: 0.17.19 source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader@2.5.5: + /@esbuild-kit/esm-loader/2.5.5: resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.6.2 dev: true - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm/0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64@0.18.13: - resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} + /@esbuild/android-arm/0.18.17: + resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm64/0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.18.13: - resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} + /@esbuild/android-arm64/0.18.17: + resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-x64@0.17.19: + /@esbuild/android-x64/0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} cpu: [x64] @@ -625,8 +536,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.13: - resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} + /@esbuild/android-x64/0.18.17: + resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -634,7 +545,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: + /@esbuild/darwin-arm64/0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} cpu: [arm64] @@ -643,8 +554,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.13: - resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} + /@esbuild/darwin-arm64/0.18.17: + resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -652,7 +563,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: + /@esbuild/darwin-x64/0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} cpu: [x64] @@ -661,8 +572,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.13: - resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} + /@esbuild/darwin-x64/0.18.17: + resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -670,7 +581,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: + /@esbuild/freebsd-arm64/0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} cpu: [arm64] @@ -679,8 +590,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.13: - resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} + /@esbuild/freebsd-arm64/0.18.17: + resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -688,7 +599,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: + /@esbuild/freebsd-x64/0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} cpu: [x64] @@ -697,8 +608,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.13: - resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} + /@esbuild/freebsd-x64/0.18.17: + resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -706,43 +617,43 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm/0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64@0.18.13: - resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} + /@esbuild/linux-arm/0.18.17: + resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm64/0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm@0.18.13: - resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} + /@esbuild/linux-arm64/0.18.17: + resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-ia32@0.17.19: + /@esbuild/linux-ia32/0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} cpu: [ia32] @@ -751,8 +662,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.13: - resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} + /@esbuild/linux-ia32/0.18.17: + resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -760,7 +671,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: + /@esbuild/linux-loong64/0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] @@ -769,8 +680,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.13: - resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} + /@esbuild/linux-loong64/0.18.17: + resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -778,7 +689,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: + /@esbuild/linux-mips64el/0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} cpu: [mips64el] @@ -787,8 +698,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.13: - resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} + /@esbuild/linux-mips64el/0.18.17: + resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -796,7 +707,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: + /@esbuild/linux-ppc64/0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} cpu: [ppc64] @@ -805,8 +716,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.13: - resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} + /@esbuild/linux-ppc64/0.18.17: + resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -814,7 +725,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: + /@esbuild/linux-riscv64/0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} cpu: [riscv64] @@ -823,8 +734,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.13: - resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} + /@esbuild/linux-riscv64/0.18.17: + resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -832,7 +743,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: + /@esbuild/linux-s390x/0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} cpu: [s390x] @@ -841,8 +752,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.13: - resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} + /@esbuild/linux-s390x/0.18.17: + resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -850,7 +761,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: + /@esbuild/linux-x64/0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} cpu: [x64] @@ -859,8 +770,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.13: - resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} + /@esbuild/linux-x64/0.18.17: + resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -868,7 +779,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: + /@esbuild/netbsd-x64/0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} cpu: [x64] @@ -877,8 +788,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.13: - resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} + /@esbuild/netbsd-x64/0.18.17: + resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -886,7 +797,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: + /@esbuild/openbsd-x64/0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} cpu: [x64] @@ -895,8 +806,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.13: - resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} + /@esbuild/openbsd-x64/0.18.17: + resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -904,7 +815,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: + /@esbuild/sunos-x64/0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} cpu: [x64] @@ -913,8 +824,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.13: - resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} + /@esbuild/sunos-x64/0.18.17: + resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -922,7 +833,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: + /@esbuild/win32-arm64/0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} cpu: [arm64] @@ -931,8 +842,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.13: - resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} + /@esbuild/win32-arm64/0.18.17: + resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -940,7 +851,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: + /@esbuild/win32-ia32/0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} cpu: [ia32] @@ -949,8 +860,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.13: - resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} + /@esbuild/win32-ia32/0.18.17: + resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -958,7 +869,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: + /@esbuild/win32-x64/0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} cpu: [x64] @@ -967,8 +878,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} + /@esbuild/win32-x64/0.18.17: + resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -976,23 +887,23 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + /@eslint-community/eslint-utils/4.4.0_eslint@8.46.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.46.0 + eslint-visitor-keys: 3.4.2 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp/4.6.2: + resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.0: - resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + /@eslint/eslintrc/2.1.1: + resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -1008,12 +919,12 @@ packages: - supports-color dev: true - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + /@eslint/js/8.46.0: + resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: + /@humanwhocodes/config-array/0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: @@ -1024,40 +935,40 @@ packages: - supports-color dev: true - /@humanwhocodes/module-importer@1.0.1: + /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: + /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@isaacs/cliui@8.0.2: + /@isaacs/cliui/8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: /string-width/4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: /strip-ansi/6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi/7.0.0 dev: true - /@istanbuljs/schema@0.1.3: + /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/schemas@29.6.0: + /@jest/schemas/29.6.0: resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.3.3: + /@jridgewell/gen-mapping/0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: @@ -1066,62 +977,62 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/resolve-uri@3.1.0: + /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array@1.1.2: + /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.14: + /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/sourcemap-codec@1.4.15: + /@jridgewell/sourcemap-codec/1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.18: + /@jridgewell/trace-mapping/0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@microsoft/api-extractor-model@7.27.4: - resolution: {integrity: sha512-HjqQFmuGPOS20rtnu+9Jj0QrqZyR59E+piUWXPMZTTn4jaZI+4UmsHSf3Id8vyueAhOBH2cgwBuRTE5R+MfSMw==} + /@microsoft/api-extractor-model/7.27.5: + resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.5 + '@rushstack/node-core-library': 3.59.6 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.36.2: - resolution: {integrity: sha512-ONe/jOmTZtR3OjTkWKHmeSV1P5ozbHDxHr6FV3KoWyIl1AcPk2B3dmvVBM5eOlZB5bgM66nxcWQTZ6msQo2hHg==} + /@microsoft/api-extractor/7.36.3: + resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.27.4 + '@microsoft/api-extractor-model': 7.27.5 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.5 + '@rushstack/node-core-library': 3.59.6 '@rushstack/rig-package': 0.4.0 '@rushstack/ts-command-line': 4.15.1 colors: 1.2.5 lodash: 4.17.21 resolve: 1.22.2 - semver: 7.3.8 + semver: 7.5.4 source-map: 0.6.1 typescript: 5.0.4 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/tsdoc-config@0.16.2: + /@microsoft/tsdoc-config/0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -1130,25 +1041,25 @@ packages: resolve: 1.19.0 dev: true - /@microsoft/tsdoc@0.14.2: + /@microsoft/tsdoc/0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@mswjs/cookies@0.2.2: + /@mswjs/cookies/0.2.2: resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} engines: {node: '>=14'} dependencies: - '@types/set-cookie-parser': 2.4.2 + '@types/set-cookie-parser': 2.4.3 set-cookie-parser: 2.6.0 dev: true - /@mswjs/interceptors@0.17.9: + /@mswjs/interceptors/0.17.9: resolution: {integrity: sha512-4LVGt03RobMH/7ZrbHqRxQrS9cc2uh+iNKSj8UWr8M26A2i793ju+csaB5zaqYltqJmA2jUq4VeYfKmVqvsXQg==} engines: {node: '>=14'} dependencies: '@open-draft/until': 1.0.3 '@types/debug': 4.1.8 - '@xmldom/xmldom': 0.8.9 + '@xmldom/xmldom': 0.8.10 debug: 4.3.4 headers-polyfill: 3.1.2 outvariant: 1.4.0 @@ -1158,12 +1069,12 @@ packages: - supports-color dev: true - /@next/env@13.4.10: - resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==} + /@next/env/13.4.12: + resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} dev: false - /@next/swc-darwin-arm64@13.4.10: - resolution: {integrity: sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==} + /@next/swc-darwin-arm64/13.4.12: + resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1171,8 +1082,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.10: - resolution: {integrity: sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==} + /@next/swc-darwin-x64/13.4.12: + resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1180,48 +1091,44 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.10: - resolution: {integrity: sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==} + /@next/swc-linux-arm64-gnu/13.4.12: + resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.10: - resolution: {integrity: sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==} + /@next/swc-linux-arm64-musl/13.4.12: + resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.10: - resolution: {integrity: sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==} + /@next/swc-linux-x64-gnu/13.4.12: + resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] requiresBuild: true dev: false optional: true - /@next/swc-linux-x64-musl@13.4.10: - resolution: {integrity: sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==} + /@next/swc-linux-x64-musl/13.4.12: + resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] requiresBuild: true dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.10: - resolution: {integrity: sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==} + /@next/swc-win32-arm64-msvc/13.4.12: + resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1229,8 +1136,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.10: - resolution: {integrity: sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==} + /@next/swc-win32-ia32-msvc/13.4.12: + resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1238,8 +1145,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.10: - resolution: {integrity: sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==} + /@next/swc-win32-x64-msvc/13.4.12: + resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1247,7 +1154,7 @@ packages: dev: false optional: true - /@nodelib/fs.scandir@2.1.5: + /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -1255,12 +1162,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat@2.0.5: + /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk@1.2.8: + /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -1268,35 +1175,35 @@ packages: fastq: 1.15.0 dev: true - /@open-draft/until@1.0.3: + /@open-draft/until/1.0.3: resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} dev: true - /@pkgjs/parseargs@0.11.0: + /@pkgjs/parseargs/0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true dev: true optional: true - /@pkgr/utils@2.4.2: + /@pkgr/utils/2.4.2: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.0 + fast-glob: 3.3.1 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.6.0 + tslib: 2.6.1 dev: true - /@remix-run/router@1.7.1: - resolution: {integrity: sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==} + /@remix-run/router/1.7.2: + resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} engines: {node: '>=14'} dev: false - /@rollup/pluginutils@5.0.2: + /@rollup/pluginutils/5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1310,8 +1217,8 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/node-core-library@3.59.5: - resolution: {integrity: sha512-1IpV7LufrI1EoVO8hYsb3t6L8L+yp40Sa0OaOV2CIu1zx4e6ZeVNaVIEXFgMXBKdGXkAh21MnCaIzlDNpG6ZQw==} + /@rushstack/node-core-library/3.59.6: + resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -1323,18 +1230,18 @@ packages: import-lazy: 4.0.0 jju: 1.4.0 resolve: 1.22.2 - semver: 7.3.8 + semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.4.0: + /@rushstack/rig-package/0.4.0: resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} dependencies: resolve: 1.22.2 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.15.1: + /@rushstack/ts-command-line/4.15.1: resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} dependencies: '@types/argparse': 1.0.38 @@ -1343,17 +1250,17 @@ packages: string-argv: 0.3.2 dev: true - /@sinclair/typebox@0.27.8: + /@sinclair/typebox/0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.1: + /@swc/helpers/0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: - tslib: 2.6.0 + tslib: 2.6.1 dev: false - /@testing-library/dom@8.20.1: + /@testing-library/dom/8.20.1: resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} dependencies: @@ -1367,7 +1274,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/dom@9.3.1: + /@testing-library/dom/9.3.1: resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} engines: {node: '>=14'} dependencies: @@ -1379,22 +1286,50 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - /@testing-library/jest-dom@5.16.5: + /@testing-library/jest-dom/5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.2.0 '@babel/runtime': 7.22.6 - '@types/testing-library__jest-dom': 5.14.8 + '@types/testing-library__jest-dom': 5.14.9 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 lodash: 4.17.21 redent: 3.0.0 + dev: true - /@testing-library/react@13.3.0(react-dom@18.2.0)(react@18.2.0): + /@testing-library/jest-dom/5.17.0: + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + dependencies: + '@adobe/css-tools': 4.2.0 + '@babel/runtime': 7.22.6 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + + /@testing-library/react/13.3.0: + resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.22.6 + '@testing-library/dom': 8.20.1 + '@types/react-dom': 18.2.7 + dev: true + + /@testing-library/react/13.3.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} engines: {node: '>=12'} peerDependencies: @@ -1405,141 +1340,143 @@ packages: '@testing-library/dom': 8.20.1 '@types/react-dom': 18.2.7 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 dev: true - /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.1): + /@testing-library/user-event/13.5.0: resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: '@babel/runtime': 7.22.6 - '@testing-library/dom': 9.3.1 dev: false - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1): + /@testing-library/user-event/14.4.3: resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' - dependencies: - '@testing-library/dom': 9.3.1 dev: true - /@tootallnate/once@2.0.0: + /@tootallnate/once/2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@types/argparse@1.0.38: + /@types/argparse/1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true - /@types/aria-query@5.0.1: + /@types/aria-query/5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + dev: true - /@types/chai-subset@1.3.3: + /@types/chai-subset/1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.5 dev: true - /@types/chai@4.3.5: + /@types/chai/4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/cookie@0.4.1: + /@types/cookie/0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /@types/debug@4.1.8: + /@types/debug/4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/estree@1.0.1: + /@types/estree/1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/istanbul-lib-coverage@2.0.4: + /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/jest@27.5.2: + /@types/jest/27.5.2: resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 - /@types/js-levenshtein@1.1.1: + /@types/js-levenshtein/1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/json-schema@7.0.12: + /@types/json-schema/7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true - /@types/json5@0.0.29: + /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/minimist@1.2.2: + /@types/minimist/1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms@0.7.31: + /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node@18.11.9: - resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} + /@types/node/18.17.1: + resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} + dev: true + + /@types/node/20.4.5: + resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} dev: true - /@types/normalize-package-data@2.4.1: + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prop-types@15.7.5: + /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom@18.2.7: + /@types/react-dom/18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.17 dev: true - /@types/react@18.2.15: - resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + /@types/react/18.2.17: + resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 dev: true - /@types/scheduler@0.16.3: + /@types/scheduler/0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/semver@7.5.0: + /@types/semver/7.5.0: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/set-cookie-parser@2.4.2: - resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} + /@types/set-cookie-parser/2.4.3: + resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 18.11.9 + '@types/node': 20.4.5 dev: true - /@types/testing-library__jest-dom@5.14.8: - resolution: {integrity: sha512-NRfJE9Cgpmu4fx716q9SYmU4jxxhYRU1BQo239Txt/9N3EC745XZX1Yl7h/SBIDlo1ANVOCRB4YDXjaQdoKCHQ==} + /@types/testing-library__jest-dom/5.14.9: + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + /@typescript-eslint/eslint-plugin/6.2.0_idzvfmj5qli4h3jfxnf522w3fe: + resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1549,28 +1486,27 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/type-utils': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.45.0 - grapheme-splitter: 1.0.4 + eslint: 8.46.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) + ts-api-utils: 1.0.1_typescript@5.1.6 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + /@typescript-eslint/parser/6.2.0_7haavtekmro7ptbnqmctjaodju: + resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1579,18 +1515,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.45.0 + eslint: 8.46.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: + /@typescript-eslint/scope-manager/5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1598,16 +1534,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + /@typescript-eslint/scope-manager/6.2.0: + resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/visitor-keys': 6.2.0 dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + /@typescript-eslint/type-utils/6.2.0_7haavtekmro7ptbnqmctjaodju: + resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1616,27 +1552,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 + '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju debug: 4.3.4 - eslint: 8.45.0 - ts-api-utils: 1.0.1(typescript@5.1.6) + eslint: 8.46.0 + ts-api-utils: 1.0.1_typescript@5.1.6 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: + /@typescript-eslint/types/5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + /@typescript-eslint/types/6.2.0: + resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + /@typescript-eslint/typescript-estree/5.62.0_typescript@5.1.6: resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1651,14 +1587,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) + tsutils: 3.21.0_typescript@5.1.6 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + /@typescript-eslint/typescript-estree/6.2.0_typescript@5.1.6: + resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1666,31 +1602,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) + ts-api-utils: 1.0.1_typescript@5.1.6 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): + /@typescript-eslint/utils/5.62.0_7haavtekmro7ptbnqmctjaodju: resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - eslint: 8.45.0 + '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.6 + eslint: 8.46.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -1698,71 +1634,70 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + /@typescript-eslint/utils/6.2.0_7haavtekmro7ptbnqmctjaodju: + resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - eslint: 8.45.0 - eslint-scope: 5.1.1 + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 + eslint: 8.46.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: + /@typescript-eslint/visitor-keys/5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.2 dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + /@typescript-eslint/visitor-keys/6.2.0: + resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 - eslint-visitor-keys: 3.4.1 + '@typescript-eslint/types': 6.2.0 + eslint-visitor-keys: 3.4.2 dev: true - /@vitejs/plugin-react@4.0.3(vite@4.4.4): + /@vitejs/plugin-react/4.0.3_vite@4.4.7: resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 dependencies: '@babel/core': 7.22.9 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx-self': 7.22.5_@babel+core@7.22.9 + '@babel/plugin-transform-react-jsx-source': 7.22.5_@babel+core@7.22.9 react-refresh: 0.14.0 - vite: 4.4.4(@types/node@18.11.9) + vite: 4.4.7 transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-c8@0.33.0(vitest@0.33.0): + /@vitest/coverage-c8/0.33.0_vitest@0.33.0: resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==} peerDependencies: vitest: '>=0.30.0 <1' dependencies: '@ampproject/remapping': 2.2.1 c8: 7.14.0 - magic-string: 0.30.1 + magic-string: 0.30.2 picocolors: 1.0.0 std-env: 3.3.3 - vitest: 0.33.0(jsdom@22.1.0) + vitest: 0.33.0_jsdom@22.1.0 dev: true - /@vitest/coverage-v8@0.33.0(vitest@0.33.0): + /@vitest/coverage-v8/0.33.0_vitest@0.33.0: resolution: {integrity: sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==} peerDependencies: vitest: '>=0.32.0 <1' @@ -1770,20 +1705,20 @@ packages: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - magic-string: 0.30.1 + istanbul-reports: 3.1.6 + magic-string: 0.30.2 picocolors: 1.0.0 std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.33.0(jsdom@22.1.0) + vitest: 0.33.0 transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.33.0: + /@vitest/expect/0.33.0: resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} dependencies: '@vitest/spy': 0.33.0 @@ -1791,7 +1726,7 @@ packages: chai: 4.3.7 dev: true - /@vitest/runner@0.33.0: + /@vitest/runner/0.33.0: resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} dependencies: '@vitest/utils': 0.33.0 @@ -1799,47 +1734,47 @@ packages: pathe: 1.1.1 dev: true - /@vitest/snapshot@0.33.0: + /@vitest/snapshot/0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true - /@vitest/spy@0.33.0: + /@vitest/spy/0.33.0: resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.33.0: + /@vitest/utils/0.33.0: resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true - /@volar/language-core@1.9.0: - resolution: {integrity: sha512-+PTRrGanAD2PxqMty0ZC46xhgW5BWzb67RLHhZyB3Im4+eMXsKlYjFUt7Z8ZCwTWQQOnj8NQ6gSgUEoOTwAHrQ==} + /@volar/language-core/1.10.0: + resolution: {integrity: sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==} dependencies: - '@volar/source-map': 1.9.0 + '@volar/source-map': 1.10.0 dev: true - /@volar/source-map@1.9.0: - resolution: {integrity: sha512-TQWLY8ozUOHBHTMC2pHZsNbtM25Q9QCEwAL8JFR/gmR9Yv0d9qup/gQdd5sDI7RmoPYKD+gqjLrbM4Ib41QSJQ==} + /@volar/source-map/1.10.0: + resolution: {integrity: sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.9.0: - resolution: {integrity: sha512-B8X4/H6V93uD7zu5VCw05eB0Ukcc39SFKsZoeylkAk2sJ50oaJLpajnQ8Ov4c+FnVQ6iPA6Xy1qdWoWJjh6xEg==} + /@volar/typescript/1.10.0: + resolution: {integrity: sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==} dependencies: - '@volar/language-core': 1.9.0 + '@volar/language-core': 1.10.0 dev: true - /@vue/compiler-core@3.3.4: + /@vue/compiler-core/3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: '@babel/parser': 7.22.7 @@ -1848,23 +1783,23 @@ packages: source-map-js: 1.0.2 dev: true - /@vue/compiler-dom@3.3.4: + /@vue/compiler-dom/3.3.4: resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} dependencies: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 dev: true - /@vue/language-core@1.8.5(typescript@5.1.6): - resolution: {integrity: sha512-DKQNiNQzNV7nrkZQujvjfX73zqKdj2+KoM4YeKl+ft3f+crO3JB4ycPnmgaRMNX/ULJootdQPGHKFRl5cXxwaw==} + /@vue/language-core/1.8.8_typescript@5.1.6: + resolution: {integrity: sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 1.9.0 - '@volar/source-map': 1.9.0 + '@volar/language-core': 1.10.0 + '@volar/source-map': 1.10.0 '@vue/compiler-dom': 3.3.4 '@vue/reactivity': 3.3.4 '@vue/shared': 3.3.4 @@ -1874,41 +1809,41 @@ packages: vue-template-compiler: 2.7.14 dev: true - /@vue/reactivity@3.3.4: + /@vue/reactivity/3.3.4: resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} dependencies: '@vue/shared': 3.3.4 dev: true - /@vue/shared@3.3.4: + /@vue/shared/3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true - /@vue/typescript@1.8.5(typescript@5.1.6): - resolution: {integrity: sha512-domFBbNr3PEcjGBeB+cmgUM3cI6pJsJezguIUKZ1rphkfIkICyoMjCd3TitoP32yo2KABLiaXcGFzgFfQf6B3w==} + /@vue/typescript/1.8.8_typescript@5.1.6: + resolution: {integrity: sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==} dependencies: - '@volar/typescript': 1.9.0 - '@vue/language-core': 1.8.5(typescript@5.1.6) + '@volar/typescript': 1.10.0 + '@vue/language-core': 1.8.8_typescript@5.1.6 transitivePeerDependencies: - typescript dev: true - /@xmldom/xmldom@0.8.9: - resolution: {integrity: sha512-4VSbbcMoxc4KLjb1gs96SRmi7w4h1SF+fCoiK0XaQX62buCc1G5d0DC5bJ9xJBNPDSVCmIrcl8BiYxzjrqaaJA==} + /@xmldom/xmldom/0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} dev: true - /@zxing/text-encoding@0.9.0: + /@zxing/text-encoding/0.9.0: resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} requiresBuild: true dev: true optional: true - /abab@2.0.6: + /abab/2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx/5.3.2_acorn@8.10.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1916,18 +1851,18 @@ packages: acorn: 8.10.0 dev: true - /acorn-walk@8.2.0: + /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.10.0: + /acorn/8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base@6.0.2: + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -1936,7 +1871,7 @@ packages: - supports-color dev: true - /aggregate-error@4.0.1: + /aggregate-error/4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -1944,7 +1879,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv@6.12.6: + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -1953,44 +1888,45 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes@4.3.2: + /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex@5.0.1: + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex@6.0.1: + /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles@3.2.1: + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true - /ansi-styles@4.3.0: + /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: + /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - /ansi-styles@6.2.1: + /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch@3.1.3: + /anymatch/3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: @@ -1998,133 +1934,159 @@ packages: picomatch: 2.3.1 dev: true - /argparse@1.0.10: + /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse@2.0.1: + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query@5.1.3: + /aria-query/5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.2 + dev: true - /aria-query@5.3.0: + /aria-query/5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.0: + /array-buffer-byte-length/1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 + dev: true - /array-includes@3.1.6: + /array-includes/3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true - /array-union@2.1.0: + /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.flat@1.3.1: + /array.prototype.findlastindex/1.2.2: + resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /array.prototype.flat/1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: + /array.prototype.flatmap/1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted@1.1.1: + /array.prototype.tosorted/1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true - /arrify@1.0.1: + /arraybuffer.prototype.slice/1.0.1: + resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify@3.0.0: + /arrify/3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /assertion-error@1.1.0: + /assertion-error/1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types-flow@0.0.7: + /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true - /asynckit@0.4.0: + /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /available-typed-arrays@1.0.5: + /available-typed-arrays/1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + dev: true - /axe-core@4.7.2: + /axe-core/4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: true - /axobject-query@3.2.1: + /axobject-query/3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 dev: true - /balanced-match@1.0.2: + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js@1.5.1: + /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /big-integer@1.6.51: + /big-integer/1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: true - /binary-extensions@2.2.0: + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bl@4.1.0: + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 @@ -2132,86 +2094,83 @@ packages: readable-stream: 3.6.2 dev: true - /bootstrap@4.6.2(jquery@3.7.0)(popper.js@1.16.1): + /bootstrap/4.6.2: resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} peerDependencies: jquery: 1.9.1 - 3 popper.js: ^1.16.1 - dependencies: - jquery: 3.7.0 - popper.js: 1.16.1 dev: true - /bplist-parser@0.2.0: + /bplist-parser/0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 dev: true - /brace-expansion@1.1.11: + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /brace-expansion@2.0.1: + /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces@3.0.2: + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist/4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001516 - electron-to-chromium: 1.4.461 + caniuse-lite: 1.0.30001517 + electron-to-chromium: 1.4.477 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.11_browserslist@4.21.10 dev: true - /buffer-from@1.1.2: + /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer@5.7.1: + /buffer/5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /builtins@5.0.1: + /builtins/5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: semver: 7.5.4 dev: true - /bundle-name@3.0.0: + /bundle-name/3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 dev: true - /busboy@1.6.0: + /busboy/1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: false - /c8@7.14.0: + /c8/7.14.0: resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} engines: {node: '>=10.12.0'} hasBin: true @@ -2221,8 +2180,8 @@ packages: find-up: 5.0.0 foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.6 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 @@ -2230,23 +2189,24 @@ packages: yargs-parser: 20.2.9 dev: true - /cac@6.7.14: + /cac/6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /call-bind@1.0.2: + /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 + dev: true - /callsites@3.1.0: + /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-keys@8.0.2: + /camelcase-keys/8.0.2: resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} engines: {node: '>=14.16'} dependencies: @@ -2256,15 +2216,15 @@ packages: type-fest: 2.19.0 dev: true - /camelcase@7.0.1: + /camelcase/7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001516: - resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==} + /caniuse-lite/1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} - /chai@4.3.7: + /chai/4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -2277,22 +2237,23 @@ packages: type-detect: 4.0.8 dev: true - /chalk@2.4.2: + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true - /chalk@3.0.0: + /chalk/3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@4.1.1: + /chalk/4.1.1: resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} engines: {node: '>=10'} dependencies: @@ -2300,22 +2261,22 @@ packages: supports-color: 7.2.0 dev: true - /chalk@4.1.2: + /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chardet@0.7.0: + /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error@1.0.2: + /check-error/1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /chokidar@3.5.3: + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -2330,35 +2291,35 @@ packages: fsevents: 2.3.2 dev: true - /clean-stack@4.2.0: + /clean-stack/4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /cli-cursor@3.1.0: + /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: + /cli-spinners/2.9.0: resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} engines: {node: '>=6'} dev: true - /cli-width@3.0.0: + /cli-width/3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} dev: true - /client-only@0.0.1: + /client-only/0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui@7.0.4: + /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -2366,7 +2327,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui@8.0.1: + /cliui/8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -2375,66 +2336,68 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone@1.0.4: + /clone/1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /color-convert@1.9.3: + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true - /color-convert@2.0.1: + /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name@1.1.3: + /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true - /color-name@1.1.4: + /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colors@1.2.5: + /colors/1.2.5: resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} engines: {node: '>=0.1.90'} dev: true - /combined-stream@1.0.8: + /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander@9.5.0: + /commander/9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} requiresBuild: true dev: true optional: true - /comment-parser@1.3.1: + /comment-parser/1.3.1: resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} engines: {node: '>= 12.0.0'} dev: true - /concat-map@0.0.1: + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map@1.9.0: + /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /cookie@0.4.2: + /cookie/0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} dev: true - /copyfiles@2.4.1: + /copyfiles/2.4.1: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true dependencies: @@ -2447,11 +2410,11 @@ packages: yargs: 16.2.0 dev: true - /core-util-is@1.0.3: + /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cp-file@10.0.0: + /cp-file/10.0.0: resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} engines: {node: '>=14.16'} dependencies: @@ -2460,7 +2423,7 @@ packages: p-event: 5.0.1 dev: true - /cpy-cli@5.0.0: + /cpy-cli/5.0.0: resolution: {integrity: sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==} engines: {node: '>=16'} hasBin: true @@ -2469,7 +2432,7 @@ packages: meow: 12.0.1 dev: true - /cpy@10.1.0: + /cpy/10.1.0: resolution: {integrity: sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==} engines: {node: '>=16'} dependencies: @@ -2483,7 +2446,7 @@ packages: p-map: 6.0.0 dev: true - /cross-env@7.0.3: + /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true @@ -2491,7 +2454,7 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-spawn@7.0.3: + /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -2500,25 +2463,25 @@ packages: which: 2.0.2 dev: true - /css.escape@1.5.1: + /css.escape/1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - /cssstyle@3.0.0: + /cssstyle/3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} dependencies: rrweb-cssom: 0.6.0 dev: true - /csstype@3.1.2: + /csstype/3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /damerau-levenshtein@1.0.8: + /damerau-levenshtein/1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /data-urls@4.0.0: + /data-urls/4.0.0: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} dependencies: @@ -2527,11 +2490,11 @@ packages: whatwg-url: 12.0.1 dev: true - /de-indent@1.0.2: + /de-indent/1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true - /debug@3.2.7: + /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -2542,7 +2505,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4: + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -2554,7 +2517,7 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys@2.0.1: + /decamelize-keys/2.0.1: resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} engines: {node: '>=14.16'} dependencies: @@ -2564,23 +2527,23 @@ packages: type-fest: 3.13.1 dev: true - /decamelize@6.0.0: + /decamelize/6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /decimal.js@10.4.3: + /decimal.js/10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /deep-eql@4.1.3: + /deep-eql/4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-equal@2.2.2: + /deep-equal/2.2.2: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} dependencies: array-buffer-byte-length: 1.0.0 @@ -2600,13 +2563,14 @@ packages: side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.10 + which-typed-array: 1.1.11 + dev: true - /deep-is@0.1.4: + /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /default-browser-id@3.0.0: + /default-browser-id/3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} dependencies: @@ -2614,115 +2578,117 @@ packages: untildify: 4.0.0 dev: true - /default-browser@4.0.0: + /default-browser/4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} engines: {node: '>=14.16'} dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 7.1.1 + execa: 7.2.0 titleize: 3.0.0 dev: true - /defaults@1.0.4: + /defaults/1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-lazy-prop@3.0.0: + /define-lazy-prop/3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties@1.2.0: + /define-properties/1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true - /delayed-stream@1.0.0: + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /dequal@2.0.3: + /dequal/2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - /diff-sequences@27.5.1: + /diff-sequences/27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /diff-sequences@29.4.3: + /diff-sequences/29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dir-glob@3.0.1: + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine@2.1.0: + /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true - /doctrine@3.0.0: + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-accessibility-api@0.5.16: + /dom-accessibility-api/0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - /domexception@4.0.0: + /domexception/4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /eastasianwidth@0.2.0: + /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.461: - resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==} + /electron-to-chromium/1.4.477: + resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} dev: true - /emoji-regex@8.0.0: + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex@9.2.2: + /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /entities@4.5.0: + /entities/4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true - /error-ex@1.3.2: + /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract@1.21.3: - resolution: {integrity: sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==} + /es-abstract/1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 @@ -2743,23 +2709,26 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 is-weakref: 1.0.2 object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 safe-regex-test: 1.0.0 string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.10 + which-typed-array: 1.1.11 dev: true - /es-get-iterator@1.1.3: + /es-get-iterator/1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 @@ -2771,8 +2740,9 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 + dev: true - /es-set-tostringtag@2.0.1: + /es-set-tostringtag/2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -2781,13 +2751,13 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables@1.0.0: + /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive@1.2.1: + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2796,7 +2766,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.17.19: + /esbuild/0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true @@ -2826,80 +2796,81 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild@0.18.13: - resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} + /esbuild/0.18.17: + resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.13 - '@esbuild/android-arm64': 0.18.13 - '@esbuild/android-x64': 0.18.13 - '@esbuild/darwin-arm64': 0.18.13 - '@esbuild/darwin-x64': 0.18.13 - '@esbuild/freebsd-arm64': 0.18.13 - '@esbuild/freebsd-x64': 0.18.13 - '@esbuild/linux-arm': 0.18.13 - '@esbuild/linux-arm64': 0.18.13 - '@esbuild/linux-ia32': 0.18.13 - '@esbuild/linux-loong64': 0.18.13 - '@esbuild/linux-mips64el': 0.18.13 - '@esbuild/linux-ppc64': 0.18.13 - '@esbuild/linux-riscv64': 0.18.13 - '@esbuild/linux-s390x': 0.18.13 - '@esbuild/linux-x64': 0.18.13 - '@esbuild/netbsd-x64': 0.18.13 - '@esbuild/openbsd-x64': 0.18.13 - '@esbuild/sunos-x64': 0.18.13 - '@esbuild/win32-arm64': 0.18.13 - '@esbuild/win32-ia32': 0.18.13 - '@esbuild/win32-x64': 0.18.13 - dev: true - - /escalade@3.1.1: + '@esbuild/android-arm': 0.18.17 + '@esbuild/android-arm64': 0.18.17 + '@esbuild/android-x64': 0.18.17 + '@esbuild/darwin-arm64': 0.18.17 + '@esbuild/darwin-x64': 0.18.17 + '@esbuild/freebsd-arm64': 0.18.17 + '@esbuild/freebsd-x64': 0.18.17 + '@esbuild/linux-arm': 0.18.17 + '@esbuild/linux-arm64': 0.18.17 + '@esbuild/linux-ia32': 0.18.17 + '@esbuild/linux-loong64': 0.18.17 + '@esbuild/linux-mips64el': 0.18.17 + '@esbuild/linux-ppc64': 0.18.17 + '@esbuild/linux-riscv64': 0.18.17 + '@esbuild/linux-s390x': 0.18.17 + '@esbuild/linux-x64': 0.18.17 + '@esbuild/netbsd-x64': 0.18.17 + '@esbuild/openbsd-x64': 0.18.17 + '@esbuild/sunos-x64': 0.18.17 + '@esbuild/win32-arm64': 0.18.17 + '@esbuild/win32-ia32': 0.18.17 + '@esbuild/win32-x64': 0.18.17 + dev: true + + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp@1.0.5: + /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true - /escape-string-regexp@4.0.0: + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escape-string-regexp@5.0.0: + /escape-string-regexp/5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.45.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier/8.9.0_eslint@8.46.0: + resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.45.0 + eslint: 8.46.0 dev: true - /eslint-define-config@1.21.0: - resolution: {integrity: sha512-OKfreV19Nw4yK4UX1CDkv5FXWdzeF+VSROsO28DVi1BrzqOD4a3U71LJqEhcupK65MoLXxARQ0pSg8bDvNPONA==} + /eslint-define-config/1.22.0: + resolution: {integrity: sha512-pckNJppFwC4AX+AGK63aa4sX5BluPwWwHES3fq/ER0jDR2U2czwlngg38B4EQ2ibvofufc+R5QfmdPKI6+74vQ==} engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.0.0', pnpm: '>= 8.6.0'} dev: true - /eslint-import-resolver-node@0.3.7: + /eslint-import-resolver-node/0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 is-core-module: 2.12.1 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0): + /eslint-module-utils/2.8.0_yld263lccdegtok2y3jirl2p4y: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2920,27 +2891,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju debug: 3.2.7 - eslint: 8.45.0 + eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.1.0(eslint@8.45.0): - resolution: {integrity: sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==} + /eslint-plugin-es-x/7.2.0_eslint@8.46.0: + resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.5.1 - eslint: 8.45.0 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/regexpp': 4.6.2 + eslint: 8.46.0 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.0.0)(eslint@8.45.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + /eslint-plugin-import/2.28.0_ec5nhyiwpcpmef4grv6n2vqr5y: + resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2949,21 +2920,24 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju array-includes: 3.1.6 + array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.45.0 + eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0) + eslint-module-utils: 2.8.0_yld263lccdegtok2y3jirl2p4y has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 + object.fromentries: 2.0.6 + object.groupby: 1.0.0 object.values: 1.1.6 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -2972,7 +2946,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0): + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.46.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -2987,9 +2961,9 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.45.0 + eslint: 8.46.0 has: 1.0.3 - jsx-ast-utils: 3.3.4 + jsx-ast-utils: 3.3.5 language-tags: 1.0.5 minimatch: 3.1.2 object.entries: 1.1.6 @@ -2997,16 +2971,16 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-n@16.0.1(eslint@8.45.0): + /eslint-plugin-n/16.0.1_eslint@8.46.0: resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 builtins: 5.0.1 - eslint: 8.45.0 - eslint-plugin-es-x: 7.1.0(eslint@8.45.0) + eslint: 8.46.0 + eslint-plugin-es-x: 7.2.0_eslint@8.46.0 ignore: 5.2.4 is-core-module: 2.12.1 minimatch: 3.1.2 @@ -3014,12 +2988,12 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-no-only-tests@3.1.0: + /eslint-plugin-no-only-tests/3.1.0: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0): + /eslint-plugin-prettier/5.0.0_zqxxaukdltekzrbl7w2kyx7tna: resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3033,24 +3007,24 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.45.0 - eslint-config-prettier: 8.8.0(eslint@8.45.0) + eslint: 8.46.0 + eslint-config-prettier: 8.9.0_eslint@8.46.0 prettier: 3.0.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): + /eslint-plugin-react-hooks/4.6.0_eslint@8.46.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.45.0 + eslint: 8.46.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.45.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + /eslint-plugin-react/7.33.1_eslint@8.46.0: + resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -3059,9 +3033,9 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.45.0 + eslint: 8.46.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.4 + jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 @@ -3073,16 +3047,16 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.45.0): + /eslint-plugin-regexp/1.15.0_eslint@8.46.0: resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} engines: {node: ^12 || >=14} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/regexpp': 4.6.2 comment-parser: 1.3.1 - eslint: 8.45.0 + eslint: 8.46.0 grapheme-splitter: 1.0.4 jsdoctypeparser: 9.0.0 refa: 0.11.0 @@ -3090,28 +3064,28 @@ packages: scslre: 0.2.0 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.45.0): + /eslint-plugin-simple-import-sort/10.0.0_eslint@8.46.0: resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.45.0 + eslint: 8.46.0 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.45.0)(typescript@5.1.6): + /eslint-plugin-testing-library/5.11.0_7haavtekmro7ptbnqmctjaodju: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - eslint: 8.45.0 + '@typescript-eslint/utils': 5.62.0_7haavtekmro7ptbnqmctjaodju + eslint: 8.46.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope@5.1.1: + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -3119,28 +3093,28 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.1: - resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} + /eslint-scope/7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys/3.4.2: + resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + /eslint/8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.1.0 - '@eslint/js': 8.44.0 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/regexpp': 4.6.2 + '@eslint/eslintrc': 2.1.1 + '@eslint/js': 8.46.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3150,8 +3124,8 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.1 - eslint-visitor-keys: 3.4.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.2 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -3178,54 +3152,54 @@ packages: - supports-color dev: true - /espree@9.6.1: + /espree/9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.1 + acorn-jsx: 5.3.2_acorn@8.10.0 + eslint-visitor-keys: 3.4.2 dev: true - /esquery@1.5.0: + /esquery/1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse@4.3.0: + /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: + /estraverse/4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse@5.3.0: + /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker@2.0.2: + /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils@2.0.3: + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /events@3.3.0: + /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true - /execa@5.1.1: + /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -3240,8 +3214,8 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa/7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -3255,7 +3229,7 @@ packages: strip-final-newline: 3.0.0 dev: true - /external-editor@3.1.0: + /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -3264,16 +3238,16 @@ packages: tmp: 0.0.33 dev: true - /fast-deep-equal@3.1.3: + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff@1.3.0: + /fast-diff/1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + /fast-glob/3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3283,42 +3257,42 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify@2.1.0: + /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein@2.0.6: + /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.15.0: + /fastq/1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /figures@3.2.0: + /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache@6.0.1: + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /fill-range@7.0.1: + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up@5.0.0: + /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -3326,7 +3300,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up@6.3.0: + /find-up/6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3334,7 +3308,7 @@ packages: path-exists: 5.0.0 dev: true - /flat-cache@3.0.4: + /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -3342,16 +3316,17 @@ packages: rimraf: 3.0.2 dev: true - /flatted@3.2.7: + /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /for-each@0.3.3: + /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: true - /foreground-child@2.0.0: + /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -3359,15 +3334,15 @@ packages: signal-exit: 3.0.7 dev: true - /foreground-child@3.1.1: + /foreground-child/3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true - /form-data@4.0.0: + /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -3376,7 +3351,7 @@ packages: mime-types: 2.1.35 dev: true - /fs-extra@7.0.1: + /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -3385,11 +3360,11 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath@1.0.0: + /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: + /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -3397,50 +3372,53 @@ packages: dev: true optional: true - /function-bind@1.1.1: + /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true - /function.prototype.name@1.1.5: + /function.prototype.name/1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 functions-have-names: 1.2.3 dev: true - /functions-have-names@1.2.3: + /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - /gensync@1.0.0-beta.2: + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file@2.0.5: + /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name@2.0.0: + /get-func-name/2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic@1.2.1: + /get-intrinsic/1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 + dev: true - /get-stream@6.0.1: + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description@1.0.0: + /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -3448,43 +3426,43 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.6.2: + /get-tsconfig/4.6.2: resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} dependencies: resolve-pkg-maps: 1.0.0 dev: true - /glob-parent@5.1.2: + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent@6.0.2: + /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob-to-regexp@0.4.1: + /glob-to-regexp/0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: false - /glob@10.3.3: + /glob/10.3.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.1 + jackspeak: 2.2.2 minimatch: 9.0.3 minipass: 7.0.2 path-scurry: 1.10.1 dev: true - /glob@7.2.3: + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -3495,145 +3473,153 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@11.12.0: + /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals@13.20.0: + /globals/13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalthis@1.0.3: + /globalthis/1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 dev: true - /globby@11.1.0: + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true - /globby@13.2.2: + /globby/13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: true - /gopd@1.0.1: + /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 + dev: true - /graceful-fs@4.2.11: + /graceful-fs/4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter@1.0.4: + /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphemer@1.4.0: + /graphemer/1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql@16.7.1: + /graphql/16.7.1: resolution: {integrity: sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true - /hard-rejection@2.1.0: + /hard-rejection/2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints@1.0.2: + /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true - /has-flag@3.0.0: + /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true - /has-flag@4.0.0: + /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.0: + /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.1 + dev: true - /has-proto@1.0.1: + /has-proto/1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + dev: true - /has-symbols@1.0.3: + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: true - /has-tostringtag@1.0.0: + /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - /has@1.0.3: + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + dev: true - /he@1.2.0: + /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true - /headers-polyfill@3.1.2: + /headers-polyfill/3.1.2: resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} dev: true - /hosted-git-info@4.1.0: + /hosted-git-info/4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hosted-git-info@6.1.1: + /hosted-git-info/6.1.1: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: lru-cache: 7.18.3 dev: true - /html-encoding-sniffer@3.0.0: + /html-encoding-sniffer/3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper@2.0.2: + /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent@5.0.0: + /http-proxy-agent/5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -3644,7 +3630,7 @@ packages: - supports-color dev: true - /https-proxy-agent@5.0.1: + /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -3654,40 +3640,40 @@ packages: - supports-color dev: true - /human-signals@2.1.0: + /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: + /human-signals/4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /iconv-lite@0.4.24: + /iconv-lite/0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite@0.6.3: + /iconv-lite/0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ieee754@1.2.1: + /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.2.4: + /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true - /import-fresh@3.3.0: + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -3695,42 +3681,42 @@ packages: resolve-from: 4.0.0 dev: true - /import-lazy@4.0.0: + /import-lazy/4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} dev: true - /imurmurhash@0.1.4: + /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string@4.0.0: + /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - /indent-string@5.0.0: + /indent-string/5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight@1.0.6: + /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits@2.0.4: + /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inquirer@8.2.5: + /inquirer/8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 - chalk: 4.1.2 + chalk: 4.1.1 cli-cursor: 3.1.0 cli-width: 3.0.0 external-editor: 3.1.0 @@ -3746,104 +3732,111 @@ packages: wrap-ansi: 7.0.0 dev: true - /internal-slot@1.0.5: + /internal-slot/1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 + dev: true - /is-arguments@1.1.1: + /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true - /is-array-buffer@3.0.2: + /is-array-buffer/3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 + dev: true - /is-arrayish@0.2.1: + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint@1.0.4: + /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true - /is-binary-path@2.1.0: + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object@1.1.2: + /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true - /is-callable@1.2.7: + /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + dev: true - /is-core-module@2.12.1: + /is-core-module/2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true - /is-date-object@1.0.5: + /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - /is-docker@2.2.1: + /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true - /is-docker@3.0.0: + /is-docker/3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dev: true - /is-extglob@2.1.1: + /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point@3.0.0: + /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-function@1.0.10: + /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-glob@4.0.3: + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-inside-container@1.0.0: + /is-inside-container/1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -3851,152 +3844,159 @@ packages: is-docker: 3.0.0 dev: true - /is-interactive@1.0.0: + /is-interactive/1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} dev: true - /is-map@2.0.2: + /is-map/2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true - /is-negative-zero@2.0.2: + /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-node-process@1.2.0: + /is-node-process/1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true - /is-number-object@1.0.7: + /is-number-object/1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - /is-number@7.0.0: + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-path-inside@3.0.3: + /is-path-inside/3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj@1.1.0: + /is-plain-obj/1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name@1.0.1: + /is-potential-custom-element-name/1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex@1.1.4: + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true - /is-set@2.0.2: + /is-set/2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true - /is-shared-array-buffer@1.0.2: + /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 + dev: true - /is-stream@2.0.1: + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream@3.0.0: + /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string@1.0.7: + /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - /is-symbol@1.0.4: + /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + /is-typed-array/1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.11 + dev: true - /is-unicode-supported@0.1.0: + /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-weakmap@2.0.1: + /is-weakmap/2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true - /is-weakref@1.0.2: + /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset@2.0.2: + /is-weakset/2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 + dev: true - /is-wsl@2.2.0: + /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray@0.0.1: + /isarray/0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray@1.0.0: + /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray@2.0.5: + /isarray/2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - /isexe@2.0.0: + /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /istanbul-lib-coverage@3.2.0: + /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /istanbul-lib-report/3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + make-dir: 4.0.0 supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps/4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -4007,16 +4007,16 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports/3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 dev: true - /jackspeak@2.2.1: - resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} + /jackspeak/2.2.2: + resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -4024,7 +4024,7 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jest-diff@27.5.1: + /jest-diff/27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4033,11 +4033,11 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 - /jest-get-type@27.5.1: + /jest-get-type/27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /jest-matcher-utils@27.5.1: + /jest-matcher-utils/27.5.1: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4046,36 +4046,32 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 - /jju@1.4.0: + /jju/1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /jquery@3.7.0: - resolution: {integrity: sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==} - dev: true - - /js-levenshtein@1.1.6: + /js-levenshtein/1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} dev: true - /js-tokens@4.0.0: + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml@4.1.0: + /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsdoctypeparser@9.0.0: + /jsdoctypeparser/9.0.0: resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} engines: {node: '>=10'} hasBin: true dev: true - /jsdom@22.1.0: + /jsdom/22.1.0: resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} engines: {node: '>=16'} peerDependencies: @@ -4113,49 +4109,49 @@ packages: - utf-8-validate dev: true - /jsesc@2.5.2: + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors@2.3.1: + /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse@0.4.1: + /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-stable-stringify-without-jsonify@1.0.1: + /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5@1.0.2: + /json5/1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 dev: true - /json5@2.2.3: + /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true - /jsonc-parser@3.2.0: + /jsonc-parser/3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile@4.0.0: + /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 dev: true - /jsx-ast-utils@3.3.4: - resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} + /jsx-ast-utils/3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 @@ -4164,31 +4160,31 @@ packages: object.values: 1.1.6 dev: true - /junk@4.0.1: + /junk/4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} dev: true - /kind-of@6.0.3: + /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kolorist@1.8.0: + /kolorist/1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true - /language-subtag-registry@0.3.22: + /language-subtag-registry/0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.5: + /language-tags/1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true - /levn@0.4.1: + /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -4196,111 +4192,112 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns@1.2.4: + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /local-pkg@0.4.3: + /local-pkg/0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path@6.0.0: + /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /locate-path@7.2.0: + /locate-path/7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 dev: true - /lodash.get@4.4.2: + /lodash.get/4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true - /lodash.isequal@4.5.0: + /lodash.isequal/4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: true - /lodash.merge@4.6.2: + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash@4.17.21: + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols@4.1.0: + /log-symbols/4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - chalk: 4.1.2 + chalk: 4.1.1 is-unicode-supported: 0.1.0 dev: true - /loose-envify@1.4.0: + /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe@2.3.6: + /loupe/2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lru-cache@10.0.0: + /lru-cache/10.0.0: resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} engines: {node: 14 || >=16.14} dev: true - /lru-cache@5.1.1: + /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache@6.0.0: + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lru-cache@7.18.3: + /lru-cache/7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} dev: true - /lz-string@1.5.0: + /lz-string/1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + dev: true - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + /magic-string/0.30.2: + resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /make-dir/4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - semver: 6.3.1 + semver: 7.5.4 dev: true - /map-obj@4.3.0: + /map-obj/4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /meow@12.0.1: + /meow/12.0.1: resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==} engines: {node: '>=16.10'} dependencies: @@ -4318,16 +4315,16 @@ packages: yargs-parser: 21.1.1 dev: true - /merge-stream@2.0.0: + /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2@1.4.1: + /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch@4.0.5: + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -4335,46 +4332,46 @@ packages: picomatch: 2.3.1 dev: true - /mime-db@1.52.0: + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types@2.1.35: + /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mimic-fn@2.1.0: + /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn@4.0.0: + /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent@1.0.1: + /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - /minimatch@3.1.2: + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.3: + /minimatch/9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options@4.1.0: + /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -4383,39 +4380,39 @@ packages: kind-of: 6.0.3 dev: true - /minimist@1.2.8: + /minimist/1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.2: + /minipass/7.0.2: resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} engines: {node: '>=16 || 14 >=14.17'} dev: true - /mkdirp@1.0.4: + /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: true - /mlly@1.4.0: + /mlly/1.4.0: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.1.2 + ufo: 1.2.0 dev: true - /ms@2.1.2: + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms@2.1.3: + /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@1.2.2(typescript@5.1.6): + /msw/1.2.2_typescript@5.1.6: resolution: {integrity: sha512-GsW3PE/Es/a1tYThXcM8YHOZ1S1MtivcS3He/LQbbTCx3rbWJYCtWD5XXyJ53KlNPT7O1VI9sCW3xMtgFe8XpQ==} engines: {node: '>=14'} hasBin: true @@ -4451,33 +4448,33 @@ packages: - supports-color dev: true - /muggle-string@0.3.1: + /muggle-string/0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true - /mute-stream@0.0.8: + /mute-stream/0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nanoid@3.3.6: + /nanoid/3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite@1.4.0: + /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare@1.4.0: + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /nested-error-stacks@2.1.1: + /nested-error-stacks/2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@13.4.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==} + /next/13.4.12_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} engines: {node: '>=16.8.0'} hasBin: true peerDependencies: @@ -4494,32 +4491,32 @@ packages: sass: optional: true dependencies: - '@next/env': 13.4.10 + '@next/env': 13.4.12 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001516 + caniuse-lite: 1.0.30001517 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 + styled-jsx: 5.1.1_react@18.2.0 watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.10 - '@next/swc-darwin-x64': 13.4.10 - '@next/swc-linux-arm64-gnu': 13.4.10 - '@next/swc-linux-arm64-musl': 13.4.10 - '@next/swc-linux-x64-gnu': 13.4.10 - '@next/swc-linux-x64-musl': 13.4.10 - '@next/swc-win32-arm64-msvc': 13.4.10 - '@next/swc-win32-ia32-msvc': 13.4.10 - '@next/swc-win32-x64-msvc': 13.4.10 + '@next/swc-darwin-arm64': 13.4.12 + '@next/swc-darwin-x64': 13.4.12 + '@next/swc-linux-arm64-gnu': 13.4.12 + '@next/swc-linux-arm64-musl': 13.4.12 + '@next/swc-linux-x64-gnu': 13.4.12 + '@next/swc-linux-x64-musl': 13.4.12 + '@next/swc-win32-arm64-msvc': 13.4.12 + '@next/swc-win32-ia32-msvc': 13.4.12 + '@next/swc-win32-x64-msvc': 13.4.12 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /node-fetch@2.6.12: + /node-fetch/2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -4531,18 +4528,18 @@ packages: whatwg-url: 5.0.0 dev: true - /node-releases@2.0.13: + /node-releases/2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true - /noms@0.0.0: + /noms/0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} dependencies: inherits: 2.0.4 readable-stream: 1.0.34 dev: true - /normalize-package-data@3.0.3: + /normalize-package-data/3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -4552,7 +4549,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@5.0.0: + /normalize-package-data/5.0.0: resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: @@ -4562,49 +4559,52 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path@3.0.0: + /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path@4.0.1: + /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: + /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /nwsapi@2.2.7: + /nwsapi/2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /object-assign@4.1.1: + /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.12.3: + /object-inspect/1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true - /object-is@1.1.5: + /object-is/1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 + dev: true - /object-keys@1.1.1: + /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: true - /object.assign@4.1.4: + /object.assign/4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -4612,62 +4612,72 @@ packages: define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - /object.entries@1.1.6: + /object.entries/1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /object.fromentries@2.0.6: + /object.fromentries/2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 + dev: true + + /object.groupby/1.0.0: + resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 dev: true - /object.hasown@1.1.2: + /object.hasown/1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /object.values@1.1.6: + /object.values/1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /once@1.4.0: + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /onetime@5.1.2: + /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime@6.0.0: + /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open@9.1.0: + /open/9.1.0: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} dependencies: @@ -4677,7 +4687,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator@0.9.3: + /optionator/0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: @@ -4689,12 +4699,12 @@ packages: type-check: 0.4.0 dev: true - /ora@5.4.1: + /ora/5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.2 + chalk: 4.1.1 cli-cursor: 3.1.0 cli-spinners: 2.9.0 is-interactive: 1.0.0 @@ -4704,82 +4714,82 @@ packages: wcwidth: 1.0.1 dev: true - /os-tmpdir@1.0.2: + /os-tmpdir/1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outvariant@1.4.0: + /outvariant/1.4.0: resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} dev: true - /p-event@5.0.1: + /p-event/5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-timeout: 5.1.0 dev: true - /p-filter@3.0.0: + /p-filter/3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-map: 5.5.0 dev: true - /p-limit@3.1.0: + /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: + /p-limit/4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate@5.0.0: + /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-locate@6.0.0: + /p-locate/6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 dev: true - /p-map@5.5.0: + /p-map/5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-map@6.0.0: + /p-map/6.0.0: resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} engines: {node: '>=16'} dev: true - /p-timeout@5.1.0: + /p-timeout/5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} dev: true - /parent-module@1.0.1: + /parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parse-json@5.2.0: + /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -4789,42 +4799,42 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5@7.1.2: + /parse5/7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true - /path-exists@4.0.0: + /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-exists@5.0.0: + /path-exists/5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /path-is-absolute@1.0.1: + /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true - /path-key@3.1.1: + /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-key@4.0.0: + /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse@1.0.7: + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry@1.10.1: + /path-scurry/1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: @@ -4832,32 +4842,32 @@ packages: minipass: 7.0.2 dev: true - /path-to-regexp@6.2.1: + /path-to-regexp/6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: true - /path-type@4.0.0: + /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe@1.1.1: + /pathe/1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true - /pathval@1.1.1: + /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /picocolors@1.0.0: + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch@2.3.1: + /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pkg-types@1.0.3: + /pkg-types/1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 @@ -4865,12 +4875,7 @@ packages: pathe: 1.1.1 dev: true - /popper.js@1.16.1: - resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} - deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 - dev: true - - /postcss@8.4.14: + /postcss/8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -4879,8 +4884,8 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.26: - resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} + /postcss/8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -4888,25 +4893,25 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls@1.2.1: + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers@1.0.0: + /prettier-linter-helpers/1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 dev: true - /prettier@3.0.0: + /prettier/3.0.0: resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} engines: {node: '>=14'} hasBin: true dev: true - /pretty-format@27.5.1: + /pretty-format/27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4914,8 +4919,8 @@ packages: ansi-styles: 5.2.0 react-is: 17.0.2 - /pretty-format@29.6.1: - resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} + /pretty-format/29.6.2: + resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.0 @@ -4923,11 +4928,11 @@ packages: react-is: 18.2.0 dev: true - /process-nextick-args@2.0.1: + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prop-types@15.8.1: + /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -4935,29 +4940,29 @@ packages: react-is: 16.13.1 dev: true - /psl@1.9.0: + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /punycode@2.3.0: + /punycode/2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true - /querystringify@2.2.0: + /querystringify/2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask@1.2.3: + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru@6.1.1: + /quick-lru/6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} dev: true - /react-dom@18.2.0(react@18.2.0): + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -4966,52 +4971,52 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-is@16.13.1: + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is@17.0.2: + /react-is/17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - /react-is@18.2.0: + /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-refresh@0.14.0: + /react-refresh/0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.14.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw==} + /react-router-dom/6.14.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.7.1 + '@remix-run/router': 1.7.2 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.14.1(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 + react-router: 6.14.2_react@18.2.0 dev: false - /react-router@6.14.1(react@18.2.0): - resolution: {integrity: sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==} + /react-router/6.14.2_react@18.2.0: + resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.7.1 + '@remix-run/router': 1.7.2 react: 18.2.0 dev: false - /react@18.2.0: + /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - /read-pkg-up@9.1.0: + /read-pkg-up/9.1.0: resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -5020,7 +5025,7 @@ packages: type-fest: 2.19.0 dev: true - /read-pkg@7.1.0: + /read-pkg/7.1.0: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} dependencies: @@ -5030,7 +5035,7 @@ packages: type-fest: 2.19.0 dev: true - /readable-stream@1.0.34: + /readable-stream/1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: core-util-is: 1.0.3 @@ -5039,7 +5044,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream@2.3.8: + /readable-stream/2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -5051,7 +5056,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream@3.6.2: + /readable-stream/3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: @@ -5060,21 +5065,21 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp@3.6.0: + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /redent@3.0.0: + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - /redent@4.0.0: + /redent/4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -5082,58 +5087,59 @@ packages: strip-indent: 4.0.0 dev: true - /refa@0.11.0: + /refa/0.11.0: resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.6.2 dev: true - /regenerator-runtime@0.13.11: + /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp-ast-analysis@0.6.0: + /regexp-ast-analysis/0.6.0: resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.6.2 refa: 0.11.0 dev: true - /regexp.prototype.flags@1.5.0: + /regexp.prototype.flags/1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 functions-have-names: 1.2.3 + dev: true - /require-directory@2.1.1: + /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /requires-port@1.0.0: + /requires-port/1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-from@4.0.0: + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-pkg-maps@1.0.0: + /resolve-pkg-maps/1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.19.0: + /resolve/1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: is-core-module: 2.12.1 path-parse: 1.0.7 dev: true - /resolve@1.22.2: + /resolve/1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: @@ -5142,7 +5148,16 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@2.0.0-next.4: + /resolve/1.22.3: + resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve/2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -5151,7 +5166,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor@3.1.0: + /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -5159,19 +5174,19 @@ packages: signal-exit: 3.0.7 dev: true - /reusify@1.0.4: + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf@3.0.2: + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf@5.0.1: + /rimraf/5.0.1: resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} engines: {node: '>=14'} hasBin: true @@ -5179,51 +5194,61 @@ packages: glob: 10.3.3 dev: true - /rollup@3.26.2: - resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} + /rollup/3.27.0: + resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /rrweb-cssom@0.6.0: + /rrweb-cssom/0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-applescript@5.0.0: + /run-applescript/5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 dev: true - /run-async@2.4.1: + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: true - /run-parallel@1.2.0: + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rxjs@7.8.1: + /rxjs/7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.0 + tslib: 2.6.1 + dev: true + + /safe-array-concat/1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 dev: true - /safe-buffer@5.1.2: + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer@5.2.1: + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.0: + /safe-regex-test/1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -5231,44 +5256,36 @@ packages: is-regex: 1.1.4 dev: true - /safer-buffer@2.1.2: + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /saxes@6.0.0: + /saxes/6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler@0.23.0: + /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /scslre@0.2.0: + /scslre/0.2.0: resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} dependencies: - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.6.2 refa: 0.11.0 regexp-ast-analysis: 0.6.0 dev: true - /semver@6.3.1: + /semver/6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true dev: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.5.4: + /semver/7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true @@ -5276,129 +5293,131 @@ packages: lru-cache: 6.0.0 dev: true - /set-cookie-parser@2.6.0: + /set-cookie-parser/2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /shebang-command@2.0.0: + /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex@3.0.0: + /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /side-channel@1.0.4: + /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 object-inspect: 1.12.3 + dev: true - /siginfo@2.0.0: + /siginfo/2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit@3.0.7: + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + /signal-exit/4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true - /slash@3.0.0: + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash@4.0.0: + /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /source-map-js@1.0.2: + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support@0.5.21: + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map@0.6.1: + /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /spdx-correct@3.2.0: + /spdx-correct/3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 dev: true - /spdx-exceptions@2.3.0: + /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse@3.0.1: + /spdx-expression-parse/3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids@3.0.13: + /spdx-license-ids/3.0.13: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true - /sprintf-js@1.0.3: + /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stackback@0.0.2: + /stackback/0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.3.3: + /std-env/3.3.3: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true - /stop-iteration-iterator@1.0.0: + /stop-iteration-iterator/1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 + dev: true - /streamsearch@1.1.0: + /streamsearch/1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false - /strict-event-emitter@0.2.8: + /strict-event-emitter/0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} dependencies: events: 3.3.0 dev: true - /strict-event-emitter@0.4.6: + /strict-event-emitter/0.4.6: resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} dev: true - /string-argv@0.3.2: + /string-argv/0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} dev: true - /string-width@4.2.3: + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -5407,7 +5426,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width@5.1.2: + /string-width/5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -5416,12 +5435,12 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.8: + /string.prototype.matchall/4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 @@ -5429,101 +5448,101 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.7: + /string.prototype.trim/1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /string.prototype.trimend@1.0.6: + /string.prototype.trimend/1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /string.prototype.trimstart@1.0.6: + /string.prototype.trimstart/1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.3 + es-abstract: 1.22.1 dev: true - /string_decoder@0.10.31: + /string_decoder/0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder@1.1.1: + /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /string_decoder@1.3.0: + /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi@6.0.1: + /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-ansi@7.1.0: + /strip-ansi/7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: + /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-final-newline@2.0.0: + /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline@3.0.0: + /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent@3.0.0: + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 - /strip-indent@4.0.0: + /strip-indent/4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments@3.1.1: + /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal@1.0.1: + /strip-literal/1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: acorn: 8.10.0 dev: true - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx/5.1.1_react@18.2.0: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5540,36 +5559,37 @@ packages: react: 18.2.0 dev: false - /supports-color@5.5.0: + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true - /supports-color@7.2.0: + /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag@1.0.0: + /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /symbol-tree@3.2.4: + /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.5: + /synckit/0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.0 + tslib: 2.6.1 dev: true - /test-exclude@6.0.0: + /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -5578,60 +5598,60 @@ packages: minimatch: 3.1.2 dev: true - /text-table@0.2.0: + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through2@2.0.5: + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /tinybench@2.5.0: + /tinybench/2.5.0: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /tinypool@0.6.0: + /tinypool/0.6.0: resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: + /tinyspy/2.1.1: resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} engines: {node: '>=14.0.0'} dev: true - /titleize@3.0.0: + /titleize/3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} dev: true - /tmp@0.0.33: + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /to-fast-properties@2.0.0: + /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /to-regex-range@5.0.1: + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /tough-cookie@4.1.3: + /tough-cookie/4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} dependencies: @@ -5641,23 +5661,23 @@ packages: url-parse: 1.5.10 dev: true - /tr46@0.0.3: + /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46@4.1.1: + /tr46/4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: punycode: 2.3.0 dev: true - /trim-newlines@5.0.0: + /trim-newlines/5.0.0: resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==} engines: {node: '>=14.16'} dev: true - /ts-api-utils@1.0.1(typescript@5.1.6): + /ts-api-utils/1.0.1_typescript@5.1.6: resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: @@ -5666,7 +5686,7 @@ packages: typescript: 5.1.6 dev: true - /tsconfig-paths@3.14.2: + /tsconfig-paths/3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 @@ -5675,14 +5695,14 @@ packages: strip-bom: 3.0.0 dev: true - /tslib@1.14.1: + /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + /tslib/2.6.1: + resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - /tsutils@3.21.0(typescript@5.1.6): + /tsutils/3.21.0_typescript@5.1.6: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -5692,7 +5712,7 @@ packages: typescript: 5.1.6 dev: true - /tsx@3.12.7: + /tsx/3.12.7: resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} hasBin: true dependencies: @@ -5703,39 +5723,58 @@ packages: fsevents: 2.3.2 dev: true - /type-check@0.4.0: + /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect@4.0.8: + /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest@0.20.2: + /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest@0.21.3: + /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest@2.19.0: + /type-fest/2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: true - /type-fest@3.13.1: + /type-fest/3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} dev: true - /typed-array-byte-offset@1.0.0: + /typed-array-buffer/1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length/1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset/1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: @@ -5743,33 +5782,33 @@ packages: call-bind: 1.0.2 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true - /typed-array-length@1.0.4: + /typed-array-length/1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true - /typescript@5.0.4: + /typescript/5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true dev: true - /typescript@5.1.6: + /typescript/5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.1.2: - resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + /ufo/1.2.0: + resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} dev: true - /unbox-primitive@1.0.2: + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -5778,60 +5817,60 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /universalify@0.1.2: + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify@0.2.0: + /universalify/0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /untildify@4.0.0: + /untildify/4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.9): + /update-browserslist-db/1.0.11_browserslist@4.21.10: resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 dev: true - /uri-js@4.4.1: + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 dev: true - /url-parse@1.5.10: + /url-parse/1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate@1.0.2: + /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util@0.12.5: + /util/0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.10 - which-typed-array: 1.1.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.11 dev: true - /v8-to-istanbul@9.1.0: + /v8-to-istanbul/9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: @@ -5840,19 +5879,19 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license@3.0.4: + /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true - /validator@13.9.0: + /validator/13.9.0: resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} dev: true - /vite-node@0.33.0(@types/node@18.11.9): + /vite-node/0.33.0_@types+node@20.4.5: resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -5862,7 +5901,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.4(@types/node@18.11.9) + vite: 4.4.7_@types+node@20.4.5 transitivePeerDependencies: - '@types/node' - less @@ -5874,8 +5913,8 @@ packages: - terser dev: true - /vite-plugin-dts@3.3.0(typescript@5.1.6)(vite@4.4.4): - resolution: {integrity: sha512-9jm7wV8fkA4JaKmZdeg/X71dMi8l9SbdmzQRafW4ea1fOfd/LHBDKuwFuxKpK8h1h8O7abKycXS087EP7EL8Hw==} + /vite-plugin-dts/3.4.0_npxhaqyhuvoil5zmsh4ym23fea: + resolution: {integrity: sha512-B5UbhiF83hPlJpdri3k2FlseO2qIQfY95XJib7z1s8NTQKgPK+KgeuOQf8FR1hnE/pSU+RA3ra2T18HvymPDyA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -5884,22 +5923,57 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.36.2 + '@microsoft/api-extractor': 7.36.3 '@rollup/pluginutils': 5.0.2 - '@vue/language-core': 1.8.5(typescript@5.1.6) + '@vue/language-core': 1.8.8_typescript@5.1.6 debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 - vite: 4.4.4(@types/node@18.11.9) - vue-tsc: 1.8.5(typescript@5.1.6) + vite: 4.4.7 + vue-tsc: 1.8.8_typescript@5.1.6 transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite@4.4.4(@types/node@18.11.9): - resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} + /vite/4.4.7: + resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.17 + postcss: 8.4.27 + rollup: 3.27.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vite/4.4.7_@types+node@18.17.1: + resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -5926,15 +6000,51 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.9 - esbuild: 0.18.13 - postcss: 8.4.26 - rollup: 3.26.2 + '@types/node': 18.17.1 + esbuild: 0.18.17 + postcss: 8.4.27 + rollup: 3.27.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vitest@0.33.0(jsdom@22.1.0): + /vite/4.4.7_@types+node@20.4.5: + resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.4.5 + esbuild: 0.18.17 + postcss: 8.4.27 + rollup: 3.27.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitest/0.33.0: resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -5967,7 +6077,72 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 18.11.9 + '@types/node': 20.4.5 + '@vitest/expect': 0.33.0 + '@vitest/runner': 0.33.0 + '@vitest/snapshot': 0.33.0 + '@vitest/spy': 0.33.0 + '@vitest/utils': 0.33.0 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.2 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.3.3 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.6.0 + vite: 4.4.7_@types+node@20.4.5 + vite-node: 0.33.0_@types+node@20.4.5 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vitest/0.33.0_jsdom@22.1.0: + resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 20.4.5 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 @@ -5980,15 +6155,15 @@ packages: debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.4(@types/node@18.11.9) - vite-node: 0.33.0(@types/node@18.11.9) + vite: 4.4.7_@types+node@20.4.5 + vite-node: 0.33.0_@types+node@20.4.5 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6000,33 +6175,33 @@ packages: - terser dev: true - /vue-template-compiler@2.7.14: + /vue-template-compiler/2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: true - /vue-tsc@1.8.5(typescript@5.1.6): - resolution: {integrity: sha512-Jr8PTghJIwp69MFsEZoADDcv2l+lXA8juyN/5AYA5zxyZNvIHjSbgKgkYIYc1qnihrOyIG1VOnfk4ZE0jqn8bw==} + /vue-tsc/1.8.8_typescript@5.1.6: + resolution: {integrity: sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.5(typescript@5.1.6) - '@vue/typescript': 1.8.5(typescript@5.1.6) + '@vue/language-core': 1.8.8_typescript@5.1.6 + '@vue/typescript': 1.8.8_typescript@5.1.6 semver: 7.5.4 typescript: 5.1.6 dev: true - /w3c-xmlserializer@4.0.0: + /w3c-xmlserializer/4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /watchpack@2.4.0: + /watchpack/2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} dependencies: @@ -6034,13 +6209,13 @@ packages: graceful-fs: 4.2.11 dev: false - /wcwidth@1.0.1: + /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-encoding@1.1.5: + /web-encoding/1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} dependencies: util: 0.12.5 @@ -6048,32 +6223,32 @@ packages: '@zxing/text-encoding': 0.9.0 dev: true - /web-vitals@3.4.0: + /web-vitals/3.4.0: resolution: {integrity: sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==} dev: false - /webidl-conversions@3.0.1: + /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions@7.0.0: + /webidl-conversions/7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /whatwg-encoding@2.0.0: + /whatwg-encoding/2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype@3.0.0: + /whatwg-mimetype/3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url@12.0.1: + /whatwg-url/12.0.1: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} dependencies: @@ -6081,14 +6256,14 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url@5.0.0: + /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /which-boxed-primitive@1.0.2: + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -6096,17 +6271,19 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true - /which-collection@1.0.1: + /which-collection/1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 + dev: true - /which-typed-array@1.1.10: - resolution: {integrity: sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==} + /which-typed-array/1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 @@ -6114,9 +6291,9 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 + dev: true - /which@2.0.2: + /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -6124,7 +6301,7 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running@2.2.2: + /why-is-node-running/2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -6133,7 +6310,7 @@ packages: stackback: 0.0.2 dev: true - /wrap-ansi@7.0.0: + /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -6142,7 +6319,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi@8.1.0: + /wrap-ansi/8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} dependencies: @@ -6151,11 +6328,11 @@ packages: strip-ansi: 7.1.0 dev: true - /wrappy@1.0.2: + /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.13.0: + /ws/8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -6168,44 +6345,44 @@ packages: optional: true dev: true - /xml-name-validator@4.0.0: + /xml-name-validator/4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars@2.2.0: + /xmlchars/2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend@4.0.2: + /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: true - /y18n@5.0.8: + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist@3.1.1: + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist@4.0.0: + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser@20.2.9: + /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser@21.1.1: + /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs@16.2.0: + /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -6218,7 +6395,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs@17.7.2: + /yargs/17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: @@ -6231,17 +6408,17 @@ packages: yargs-parser: 21.1.1 dev: true - /yocto-queue@0.1.0: + /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /yocto-queue@1.0.0: + /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /z-schema@5.0.5: + /z-schema/5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} engines: {node: '>=8.0.0'} hasBin: true @@ -6253,6 +6430,6 @@ packages: commander: 9.5.0 dev: true - /zod@3.21.4: + /zod/3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false From 95678734c0495f80628f99ad3aa284a3014f8bbc Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 1 Aug 2023 15:25:54 +0200 Subject: [PATCH 016/565] feat(oidc): rename repository oidc-client (#1115) (release) BREAKING CHANGE: VanillaOidc renamed OidcClient @axa-fr/vanilla-oidc renamed @axa-fr/oidc-client --- CONTRIBUTING.md | 32 +- FAQ.md | 84 + MIGRATION_GUIDE_V6_TO_V7.md | 4 + examples/oidc-client-demo/src/index.tsx | 4 +- packages/oidc-client/README.md | 314 ++- packages/oidc-client/src/index.ts | 2 +- .../src/{vanillaOidc.ts => oidcClient.ts} | 10 +- packages/react-oidc/README.md | 148 +- packages/react-oidc/src/FetchToken.tsx | 6 +- packages/react-oidc/src/OidcProvider.tsx | 38 +- packages/react-oidc/src/OidcSecure.tsx | 4 +- packages/react-oidc/src/ReactOidc.tsx | 38 +- packages/react-oidc/src/User.ts | 4 +- .../default-component/Callback.component.tsx | 4 +- .../SilentCallback.component.tsx | 4 +- .../SilentLogin.component.tsx | 4 +- pnpm-lock.yaml | 2406 ++++++++--------- readme.md | 313 +-- 18 files changed, 1708 insertions(+), 1711 deletions(-) create mode 100644 FAQ.md create mode 100644 MIGRATION_GUIDE_V6_TO_V7.md rename packages/oidc-client/src/{vanillaOidc.ts => oidcClient.ts} (91%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index acd889a70..346f0293e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,32 @@ -# Contributing to @axa-fr/react-oidc +# Contributing to @axa-fr/oidc-client -First, ensure you have the [latest `npm`](https://docs.npmjs.com/). +First, ensure you have the [latest `pnpm`](https://pnpm.io/). To get started with the repository: ```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/react -npm install -npm start +git clone https://github.com/AxaFrance/oidc-client.git + +cd oidc-client +pnpm install + +# oidc client demo +cd examples/oidc-client-demo +pnpm install +pnpm start +# then navigate to http://localhost:5174 + +# react vite demo +cd examples/react-oidc-demo +pnpm install +pnpm start +# then navigate to http://localhost:4200 + +# react NextJS demo +cd examples/nextjs-demo +pnpm install +pnpm run dev +# then navigate to http://localhost:3001 ``` You are now ready to contribute! @@ -16,7 +34,7 @@ You are now ready to contribute! Please respect the following [PULL_REQUEST_TEMPLATE.md](./PULL_REQUEST_TEMPLATE.md) -Packages are automaticaly published on npm when a PR is merged on main. +Packages are automatically published on npm when a PR is merged on main. Example of commit messages : diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 000000000..0f91b78f1 --- /dev/null +++ b/FAQ.md @@ -0,0 +1,84 @@ + +# FAQ (Frequently Asked Questions) + +## Condition to make silent signing work + +Third party cookies are blocked by default on Safari. +They will be on all browsers very soon. +Today, silent sigin work on safari only if OIDC provider is on the same domain than client application. +Third party cookies are blocked. They will be on all browsers very soon. + +Example of domain that work: +- https://oidc-provider.axa.fr +- https://my-app.axa.fr + +Silent Signing use cookies with your OIDC provider to restore the session and retrieve tokens. +It open in background an IFrame to a specific page to your OIDC provider. + +## Condition to single logout work + +Same contraint for Single Logout that for "silent signing". +*Single logout allow your to disconnect from multiple OIDC Client session in one action event if your are connected on different application. + +## Condition to Monitor Session work + +Same constraint for "monitorSession" that for "silent signing". + +Monitor session allow you to be notified when your session is expired or when you are disconnected from your OIDC provider. + +## Tokens are always refreshed in background every seconds + +@axa-fr/oidc-client refresh automatically tokens in background. +It refresh token before its expiration to have always a valid token. + +If your tokens sessions Lifetime is too short, it will refresh it very often. +It start refreshing 120 seconds before expiration. + +So set a session validity upper from 3 minutes is a good idea. + +By default @axa-fr/oidc-client take the shortest lifetime between access_token and id_token. +You can use the option "token_renew_mode" to change this behavior. + + - **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" + +## Hard-reload in browser unregister ServiceWorker +https://github.com/AxaFrance/react-oidc/issues/1098 + +## window.crypto.subtle is unavailable over HTTP + +The library does not work over HTTP. You need to use HTTPS. +We think it is quite easy to setup nowadays event on local development. + +https://github.com/AxaFrance/react-oidc/issues/1028 + +## Why OIDC at Client side instead of BFF (Backend for Frontend) ? + +We think that @axa-fr/oidc-client is a good choice for the following reasons : +- Secure by default with the use of the Service Worker. OIDC at Server Side from a BFF can be secure but with a bad configuration it can be very insecure. With OIDC Client you reuse the OIDC Server configuration which generally is well configured by OIDC security experts, so secure. +- With OIDC at Server side, It is more difficult to fine grain the scope of the token. With OIDC at Client side you can acquire a new token with a new scope for specific scenario (multiple authentication). You can fine tune token lifetime and scope for each scenario. +- Sometime your Web Application does not need a server, OIDC at client side is a good choice because you do not need to spend money for a server juste for Authentication. For example for a payment, you can retrieve only an access_token valid 2 minutes without any refresh_token. +- OIDC at Client side can be also a good choice for a fast time to market. You can start with OIDC at Client side and then migrate to OIDC at Server side if you need it. The two solutions are compatible. + +

+ @axa-fr/oidc-client is one of the securest way to Authenticate. +
+ @axa-fr/oidc-client is one of the securest way to Authenticate. +

+ +

+ Service Worker lifetime drawback. +
+ Service Worker lifetime drawback. +

+ +

+ @axa-fr/oidc-client is the simplest and cheapest. +
+ @axa-fr/oidc-client is the simplest and cheapest. +

\ No newline at end of file diff --git a/MIGRATION_GUIDE_V6_TO_V7.md b/MIGRATION_GUIDE_V6_TO_V7.md new file mode 100644 index 000000000..7d6c39a85 --- /dev/null +++ b/MIGRATION_GUIDE_V6_TO_V7.md @@ -0,0 +1,4 @@ +# Migrating from v6 to v7 + +- Package `@axa-fr/vanilla-oidc` as been renamed to `@axa-fr/oidc-client` +- VanillaOidc class as been renamed to OidcClient \ No newline at end of file diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index f13b97615..fe65de5f7 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -1,4 +1,4 @@ -import { VanillaOidc } from '@axa-fr/oidc-client'; +import { OidcClient } from '@axa-fr/oidc-client'; class Router { getCustomHistory(){ const generateKey = () => @@ -88,7 +88,7 @@ export const configuration = { const href = window.location.href; -const vanillaOidc = VanillaOidc.getOrCreate(() => fetch)(configuration); +const vanillaOidc = OidcClient.getOrCreate(() => fetch)(configuration); console.log(href); diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index c8b7aa9f0..96fcb5471 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -1,4 +1,4 @@ -# @axa-fr/vanilla-oidc +# @axa-fr/oidc-client [![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Corevage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) @@ -16,23 +16,21 @@ Try the demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ ## About -@axa-fr/vanilla-oidc is a pure OIDC client library agnostic to any framework. It is used by @axa-fr/react-oidc and can be used by any framework. - -It is a real alternative to existing oidc-client libraries. +@axa-fr/oidc-client is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSRF attacks) - - OIDC using client side Code Credential Grant with PKCE only -- **Lightweight** -- **Simple** : - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure `OidcTrustedDomains.js` file -- **No cookies problem** : You can disable silent signin (that internally use an iframe). For your information, your OIDC server should be in the same domain of your website in order to be able to send OIDC server cookies from your website via an internal IFRAME, else, you may encounter COOKIES problem. + - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) + - OIDC using client side Code Credential Grant with pkce only +- **Lightweight** : Unpacked Size on npm is **274 kB** +- **Simple** + - refresh_token and access_token are auto refreshed in background + - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file - **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website + - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) + - You can authenticate to multiple different providers inside the same SPA (single page application) website - **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure) + - Work with Service Worker (more secure) and without for older browser (less secure). + - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. ![](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/schema_pcke_client_side_with_service_worker.png?raw=true) @@ -61,64 +59,75 @@ The only file you should edit is "OidcTrustedDomains.js". // Domains used by OIDC server must be also declared here const trustedDomains = { - default: ["https://demo.duendesoftware.com", "https://www.myapi.com/users"], + default: { + oidcDomains :["https://demo.duendesoftware.com"], + accessTokenDomains : ["https://www.myapi.com/users"] + }, +}; + +// Service worker will continue to give access token to the JavaScript client +// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some +// scenarios which require it. For example, to send it via websocket connection. +trustedDomains.config_show_access_token = { + oidcDomains :["https://demo.duendesoftware.com"], + accessTokenDomains : ["https://www.myapi.com/users"], + showAccessToken: true }; ``` The code of the demo : ```js -import { VanillaOidc } from '@axa-fr/oidc-client' +import {OidcClient} from '@axa-fr/oidc-client' export const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/#/authentication/callback', - silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - service_worker_relative_url:'/OidcServiceWorker.js', - service_worker_only: false, + client_id: 'interactive.public.short', + redirect_uri: window.location.origin + '/#/authentication/callback', + silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', + scope: 'openid profile email api offline_access', + authority: 'https://demo.duendesoftware.com', + service_worker_relative_url: '/OidcServiceWorker.js', + service_worker_only: false, }; const href = window.location.href; -const vanillaOidc = VanillaOidc.getOrCreate(() => fetch)(configuration); +const oidcClient = OidcClient.getOrCreate(() => fetch)(configuration); console.log(href); -vanillaOidc.tryKeepExistingSessionAsync().then(() => { - if(href.includes(configuration.redirect_uri)){ - vanillaOidc.loginCallbackAsync().then(()=>{ - window.location.href = "/"; - }); - document.body.innerHTML = `
+oidcClient.tryKeepExistingSessionAsync().then(() => { + if (href.includes(configuration.redirect_uri)) { + oidcClient.loginCallbackAsync().then(() => { + window.location.href = "/"; + }); + document.body.innerHTML = `

@axa-fr/oidc-client demo

Loading

`; - return - } + return + } - let tokens = vanillaOidc.tokens; + let tokens = oidcClient.tokens; - if(tokens){ + if (tokens) { - // @ts-ignore - window.logout = () => vanillaOidc.logoutAsync(); - document.body.innerHTML = `
+ // @ts-ignore + window.logout = () => oidcClient.logoutAsync(); + document.body.innerHTML = `

@axa-fr/oidc-client demo

Authenticated

-
${JSON.stringify(tokens,null,'\t')}
+
${JSON.stringify(tokens, null, '\t')}
` - - } - else { - // @ts-ignore - window.login= () => vanillaOidc.loginAsync("/"); - document.body.innerHTML = `
+ + } else { + // @ts-ignore + window.login = () => oidcClient.loginAsync("/"); + document.body.innerHTML = `

@axa-fr/oidc-client demo

` - } + } }) @@ -127,50 +136,178 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { ## Configuration ```javascript -const configuration: { - client_id: PropTypes.string.isRequired, // oidc client id - redirect_uri: PropTypes.string.isRequired, // oidc redirect url - silent_redirect_uri: PropTypes.string, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions - silent_login_uri: PropTypes.string, // Optional, route that trigger the signin - silent_login_timeout: PropTypes.number, // Optional default is 12000 milliseconds - scope: PropTypes.string.isRequired, // oidc scope (you need to set "offline_access") - authority: PropTypes.string.isRequired, - storage: Storage, // Default sessionStorage, you can set localStorage but it is less secure to XSS attacks - authority_configuration: PropTypes.shape({ - // Optional for providers that does not implement OIDC server auto discovery via a .wellknowurl - authorization_endpoint: PropTypes.string, - token_endpoint: PropTypes.string, - userinfo_endpoint: PropTypes.string, - end_session_endpoint: PropTypes.string, - revocation_endpoint: PropTypes.string, - check_session_iframe: PropTypes.string, - issuer: PropTypes.string, - }), - refresh_time_before_tokens_expiration_in_second: PropTypes.number, // default is 120 seconds - service_worker_relative_url: PropTypes.string, - service_worker_only: PropTypes.boolean, // default false - service_worker_convert_all_requests_to_cors: PropTypes.boolean, // force all requests that servie worker upgrades to have 'cors' mode. This allows setting authentication token on requests initialted by html parsing(e.g. img tags, download links etc). - extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server (more info: https://github.com/openid/AppAuth-JS) - token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server during token request (more info: https://github.com/openid/AppAuth-JS) - withCustomHistory: PropTypes.function, // Override history modification, return instance with replaceState(url, stateHistory) implemented (like History.replaceState()) - authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in second of openid wellknowurl, default is 1 hour - authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in millisecond of openid wellknowurl, default is 10 seconds, then error is throwed - monitor_session: PropTypes.boolean, // Add OpenId monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ - onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user with the same subject is logged out from another tab when session_monitor is active - onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user is logged out from same tab when session_monitor is active - token_renew_mode: PropTypes.string, // Optional, update tokens base on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid" , "id_token_invalid" - logout_tokens_to_invalidate : Array // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - }; + +const configuration = { + client_id: String.isRequired, // oidc client id + redirect_uri: String.isRequired, // oidc redirect url + silent_redirect_uri: String, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions + silent_login_uri: String, // Optional, route that triggers the signin + silent_login_timeout: Number, // Optional, default is 12000 milliseconds + scope: String.isRequired, // oidc scope (you need to set "offline_access") + authority: String.isRequired, + storage: Storage, // Default sessionStorage, you can set localStorage, but it is less secure against XSS attacks + authority_configuration: { + // Optional for providers that do not implement OIDC server auto-discovery via a .wellknown URL + authorization_endpoint: String, + token_endpoint: String, + userinfo_endpoint: String, + end_session_endpoint: String, + revocation_endpoint: String, + check_session_iframe: String, + issuer: String, + }, + refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds + service_worker_relative_url: String, + service_worker_only: Boolean, // default false + service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). + extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) + token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) + authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour + authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown + monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ + token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" + logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] +}; +``` + +## API + +```javascript +/** + * OidcClient is a class that acts as a wrapper around the `Oidc` object. It provides methods to handle event subscriptions, logins, logouts, token renewals, user information, etc. + */ +export class OidcClient { + /** + * Creates an instance of OidcClient using a provided `Oidc` object. + * @param oidc The instance of the underlying Oidc object to use. + */ + constructor(oidc: Oidc); + + /** + * Subscribes a function to events emitted by the underlying Oidc object. + * @param func The function to be called when an event is emitted. + * @returns A string that identifies the subscription and can be used to unsubscribe later. + */ + subscribeEvents(func: EventSubscriber): string; + + /** + * Removes a subscription to a specified event. + * @param id The identifier of the subscription to remove, obtained during the initial subscription. + */ + removeEventSubscription(id: string): void; + + /** + * Publishes an event with the specified name and associated data. + * @param eventName The name of the event to publish. + * @param data The data associated with the event. + */ + publishEvent(eventName: string, data: any): void; + + /** + * Creates a new instance of OidcClient using a fetch retrieval function `getFetch`, with a given OIDC configuration and an optional name. + * @param getFetch The function to retrieve the `Fetch` object. + * @param configuration The OIDC configuration to use for creating the OidcClient instance. + * @param name The optional name for the created OidcClient instance. + * @returns A new instance of OidcClient with the specified configuration. + */ + static getOrCreate(getFetch: () => Fetch)(configuration: OidcConfiguration, name?: string): OidcClient; + + /** + * Retrieves an existing OidcClient instance with the specified name, or creates a new instance if it does not exist. + * @param name The name of the OidcClient instance to retrieve. + * @returns The existing OidcClient instance or a new instance with the specified name. + */ + static get(name?: string): OidcClient; + + /** + * The names of the events supported by the Oidc class. + */ + static eventNames: Oidc.eventNames; + + /** + * Attempts to keep the existing user session by calling the function of the underlying Oidc object. + * @returns A promise resolved with `true` if the user session was kept, otherwise `false`. + */ + tryKeepExistingSessionAsync(): Promise; + + /** + * Starts the OIDC login process with specified options. + * @param callbackPath The callback path for authentication. + * @param extras Additional parameters to send to the OIDC server during the login request. + * @param isSilentSignin Indicates if the login is silent. + * @param scope The OIDC scope for the login request. + * @param silentLoginOnly Indicates if only silent login is allowed. + * @returns A promise resolved with the login information, or rejected with an error. + */ + loginAsync(callbackPath?: string, extras?: StringMap, isSilentSignin?: boolean, scope?: string, silentLoginOnly?: boolean): Promise; + + /** + * Starts the OIDC logout process with specified options. + * @param callbackPathOrUrl The callback path or URL to use after logout. + * @param extras Additional parameters to send to the OIDC server during the logout request. + * @returns A promise resolved when the logout is completed. + */ + logoutAsync(callbackPathOrUrl?: string | null | undefined, extras?: StringMap): Promise; + + /** + * Performs the silent login process and retrieves user information. + * @returns A promise resolved when the silent login process is completed. + */ + silentLoginCallbackAsync(): Promise; + + /** + * Renews the user's OIDC tokens. + * @param extras Additional parameters to send to the OIDC server during the token renewal request. + * @returns A promise resolved when the token renewal is completed. + */ + renewTokensAsync(extras?: StringMap): Promise; + + /** + * Performs the callback process after a successful login and automatically renews tokens. + * @returns A promise resolved with the callback information, or rejected with an error. + */ + loginCallbackAsync(): Promise; + + /** + * Retrieves the current OIDC tokens for the user. + */ + get tokens(): Tokens; + + /** + * Retrieves the current OIDC configuration used by the OidcClient instance. + */ + get configuration(): OidcConfiguration; + + /** + * Retrieves the valid OIDC token for the user. + * @param waitMs The maximum wait time in milliseconds to obtain a valid token. + * @param numberWait The number of attempts to obtain a valid token. + * @returns A promise resolved with the valid token, or rejected with an error. + */ + async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise; + + /** + * Retrieves OIDC user information. + * @param noCache Indicates whether user information should be retrieved bypassing the cache. + * @returns A promise resolved with the user information, or rejected with an error. + */ + async userInfoAsync(noCache = false): Promise; +} + ``` ## Run The Demo ```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/vanilla-demo -npm install -npm start -# then navigate to http://localhost:3000 +git clone https://github.com/AxaFrance/oidc-client.git +cd oidc-client + +# oidc client demo +cd /examples/oidc-client-demo +pnpm install +pnpm start +# then navigate to http://localhost:5174 + ``` ## How It Works @@ -185,7 +322,7 @@ More information about OIDC ## Hash route -`vanilla-oidc` work also with hash route. +`@axa-fr/oidc-client` work also with hash route. ```javascript export const configurationIdentityServerWithHash = { @@ -200,10 +337,3 @@ export const configurationIdentityServerWithHash = { service_worker_only: false, }; ``` - -## Service Worker Support - -- Firefox : tested on Firefox 98.0.2 -- Chrome/Edge : tested on version upper to 90 -- Opera : tested on version upper to 80 -- Safari : tested on Safari/605.1.15 diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 8e6bbd857..ef6a82997 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -7,4 +7,4 @@ export type { OidcConfiguration, StringMap, } from './types.js'; -export { type OidcUserInfo, VanillaOidc } from './vanillaOidc.js'; +export { type OidcUserInfo, OidcClient } from './oidcClient.js'; diff --git a/packages/oidc-client/src/vanillaOidc.ts b/packages/oidc-client/src/oidcClient.ts similarity index 91% rename from packages/oidc-client/src/vanillaOidc.ts rename to packages/oidc-client/src/oidcClient.ts index e2f3c7477..c542e16d7 100644 --- a/packages/oidc-client/src/vanillaOidc.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -6,7 +6,7 @@ export interface EventSubscriber { (name: string, data:any); } -export class VanillaOidc { +export class OidcClient { private _oidc: Oidc; constructor(oidc: Oidc) { this._oidc = oidc; @@ -24,12 +24,12 @@ export class VanillaOidc { this._oidc.publishEvent(eventName, data); } - static getOrCreate = (getFetch : () => Fetch) => (configuration:OidcConfiguration, name = 'default'): VanillaOidc => { - return new VanillaOidc(Oidc.getOrCreate(getFetch)(configuration, name)); + static getOrCreate = (getFetch : () => Fetch) => (configuration:OidcConfiguration, name = 'default'): OidcClient => { + return new OidcClient(Oidc.getOrCreate(getFetch)(configuration, name)); }; - static get(name = 'default'):VanillaOidc { - return new VanillaOidc(Oidc.get(name)); + static get(name = 'default'):OidcClient { + return new OidcClient(Oidc.get(name)); } static eventNames = Oidc.eventNames; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 102b48cfa..3ee51d99b 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -1,13 +1,21 @@ # @axa-fr/react-oidc -[![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) +[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Corevage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) -Try the demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ +**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. +**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. -![Sample React OIDC](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/introduction.gif?raw=true) +We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) and we expect soon to provide one for **Vue**, **Angular** and **Svelte**. -A set of react components to make OIDC (OpenID Connect) client easy. It aim to simplify OAuth authentication between multiples providers. +- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) +- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + +

+ Sample React Oicd +

- [About](#about) - [Getting Started](#getting-started) @@ -20,22 +28,21 @@ A set of react components to make OIDC (OpenID Connect) client easy. It aim to s ## About -Easy set up of OIDC for react. -It is a real alternative to existing oidc-client libraries. +@axa-fr/react is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSRF attacks) - - OIDC using client side Code Credential Grant with PKCE only -- **Lightweight** -- **Simple** : + - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) + - OIDC using client side Code Credential Grant with pkce only +- **Lightweight** : Unpacked Size on npm is **274 kB** +- **Simple** - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure `OidcTrustedDomains.js` file -- **No cookies problem** : You can disable silent signin (that internally use an iframe). For your information, your OIDC server should be in the same domain of your website in order to be able to send OIDC server cookies from your website via an internal IFRAME, else, you may encounter COOKIES problem. + - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file - **Multiple Authentication** : - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - You can authenticate to multiple different providers inside the same SPA (single page application) website - **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure) + - Work with Service Worker (more secure) and without for older browser (less secure). + - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. ![](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/schema_pcke_client_side_with_service_worker.png?raw=true) @@ -63,23 +70,32 @@ The only file you should edit is "OidcTrustedDomains.js". // Domains used by OIDC server must be also declared here const trustedDomains = { - default: ["https://demo.duendesoftware.com", "https://www.myapi.com/users"], + default: { + oidcDomains :["https://demo.duendesoftware.com"], + accessTokenDomains : ["https://www.myapi.com/users"] + }, }; // Service worker will continue to give access token to the JavaScript client // Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some // scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { domains : ["https://demo.duendesoftware.com"], showAccessToken: true }; +trustedDomains.config_show_access_token = { + oidcDomains :["https://demo.duendesoftware.com"], + accessTokenDomains : ["https://www.myapi.com/users"], + showAccessToken: true +}; ``` ## Run The Demo ```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/react -npm install -npm start +git clone https://github.com/AxaFrance/oidc-client.git +cd oidc-client +pnpm install +cd /examples/react-oidc-demo +pnpm install +pnpm start # then navigate to http://localhost:4200 ``` @@ -111,7 +127,7 @@ const configuration = { window.location.origin + "/authentication/silent-callback", scope: "openid profile email api offline_access", // offline_access scope allow your client to retrieve the refresh_token authority: "https://demo.duendesoftware.com", - service_worker_relative_url: "/OidcServiceWorker.js", + service_worker_relative_url: "/OidcServiceWorker.js", // just comment that line to disable service worker mode service_worker_only: false, }; @@ -128,49 +144,50 @@ render(, document.getElementById("root")); ``` ```javascript -const propTypes = { - loadingComponent: PropTypes.elementType, // you can inject your own loading component - sessionLostComponent: PropTypes.elementType, // you can inject your own session lost component - authenticating: PropTypes.elementType, // you can inject your own authenticationg component - authenticatingErrorComponent: PropTypes.elementType, - callbackSuccessComponent: PropTypes.elementType, // you can inject your own call back success component - serviceWorkerNotSupportedComponent: PropTypes.elementType, // you can inject your page that explain your require a more modern browser - onSessionLost: PropTypes.function, // If set "sessionLostComponent" is not displayed and onSessionLost callback is called instead - configuration: PropTypes.shape({ - client_id: PropTypes.string.isRequired, // oidc client id - redirect_uri: PropTypes.string.isRequired, // oidc redirect url - silent_redirect_uri: PropTypes.string, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions - silent_login_uri: PropTypes.string, // Optional, route that trigger the signin - silent_login_timeout: PropTypes.number, // Optional default is 12000 milliseconds - scope: PropTypes.string.isRequired, // oidc scope (you need to set "offline_access") - authority: PropTypes.string.isRequired, - storage: Storage, // Default sessionStorage, you can set localStorage but it is less secure to XSS attacks - authority_configuration: PropTypes.shape({ - // Optional for providers that does not implement OIDC server auto discovery via a .wellknowurl - authorization_endpoint: PropTypes.string, - token_endpoint: PropTypes.string, - userinfo_endpoint: PropTypes.string, - end_session_endpoint: PropTypes.string, - revocation_endpoint: PropTypes.string, - check_session_iframe: PropTypes.string, - issuer: PropTypes.string, - }), - refresh_time_before_tokens_expiration_in_second: PropTypes.number, // default is 120 seconds - service_worker_relative_url: PropTypes.string, - service_worker_only: PropTypes.boolean, // default false - service_worker_convert_all_requests_to_cors: PropTypes.boolean, // force all requests that servie worker upgrades to have 'cors' mode. This allows setting authentication token on requests initialted by html parsing(e.g. img tags, download links etc). - extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server (more info: https://github.com/openid/AppAuth-JS) - token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server during token request (more info: https://github.com/openid/AppAuth-JS) - withCustomHistory: PropTypes.function, // Override history modification, return instance with replaceState(url, stateHistory) implemented (like History.replaceState()) - authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in second of openid wellknowurl, default is 1 hour - authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in millisecond of openid wellknowurl, default is 10 seconds, then error is throwed - monitor_session: PropTypes.boolean, // Add OpenId monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ - onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user with the same subject is logged out from another tab when session_monitor is active - onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user is logged out from same tab when session_monitor is active - token_renew_mode: PropTypes.string, // Optional, update tokens base on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid" , "id_token_invalid" - logout_tokens_to_invalidate : Array // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - }).isRequired, +const configuration = { + loadingComponent: ReactComponent, // you can inject your own loading component + sessionLostComponent: ReactComponent, // you can inject your own session lost component + authenticating: ReactComponent, // you can inject your own authenticating component + authenticatingErrorComponent: ReactComponent, + callbackSuccessComponent: ReactComponent, // you can inject your own call back success component + serviceWorkerNotSupportedComponent: ReactComponent, // you can inject your page that explains you require a more modern browser + onSessionLost: Function, // If set, "sessionLostComponent" is not displayed, and onSessionLost callback is called instead + configuration: { + client_id: String.isRequired, // oidc client id + redirect_uri: String.isRequired, // oidc redirect url + silent_redirect_uri: String, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions + silent_login_uri: String, // Optional, route that triggers the signin + silent_login_timeout: Number, // Optional, default is 12000 milliseconds + scope: String.isRequired, // oidc scope (you need to set "offline_access") + authority: String.isRequired, + storage: Storage, // Default sessionStorage, you can set localStorage, but it is less secure against XSS attacks + authority_configuration: { + // Optional for providers that do not implement OIDC server auto-discovery via a .wellknown URL + authorization_endpoint: String, + token_endpoint: String, + userinfo_endpoint: String, + end_session_endpoint: String, + revocation_endpoint: String, + check_session_iframe: String, + issuer: String, + }, + refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds + service_worker_relative_url: String, + service_worker_only: Boolean, // default false + service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). + extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) + token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) + withCustomHistory: Function, // Override history modification, return an instance with replaceState(url, stateHistory) implemented (like History.replaceState()) + authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour + authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown + monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ + onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user with the same subject is logged out from another tab when session_monitor is active + onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active + token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" + logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] + }.isRequired, }; + ``` ## How to consume @@ -626,10 +643,3 @@ export const configurationIdentityServerWithHash = { service_worker_only: false, }; ``` - -## Service Worker Support - -- Firefox : tested on Firefox 98.0.2 -- Chrome/Edge : tested on version upper to 90 -- Opera : tested on version upper to 80 -- Safari : tested on Safari/605.1.15 diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index 160bbcadf..e8d1c9e59 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -1,4 +1,4 @@ -import { Fetch, VanillaOidc } from '@axa-fr/oidc-client'; +import { Fetch, OidcClient } from '@axa-fr/oidc-client'; import { useCallback } from 'react'; export interface ComponentWithOidcFetchProps { @@ -7,7 +7,7 @@ export interface ComponentWithOidcFetchProps { const defaultConfigurationName = 'default'; -const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => VanillaOidc | null) => async (...params: Parameters) => { +const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null) => async (...params: Parameters) => { const [url, options, ...rest] = params; const optionTmp = options ? { ...options } : { method: 'GET' }; @@ -45,7 +45,7 @@ export const withOidcFetch = (fetch: Fetch = null, configurationName = defaultCo export const useOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName) => { const previousFetch = fetch || window.fetch; - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const memoizedFetchCallback = useCallback( (input: RequestInfo | URL, init?: RequestInit) => { diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index 6ec25b693..347fc412b 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -1,4 +1,4 @@ -import { Fetch, getFetchDefault, OidcConfiguration, VanillaOidc } from '@axa-fr/oidc-client'; +import { Fetch, getFetchDefault, OidcConfiguration, OidcClient } from '@axa-fr/oidc-client'; import { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import AuthenticatingError from './core/default-component/AuthenticateError.component.js'; @@ -8,7 +8,7 @@ import OidcRoutes from './core/routes/OidcRoutes.js'; import { CustomHistory } from './core/routes/withRouter.js'; export type oidcContext = { - (name?: string): VanillaOidc; + (name?: string): OidcClient; }; const defaultEventState = { name: '', data: null }; @@ -38,7 +38,7 @@ export type OidcSessionProps = { const OidcSession: FC> = ({ loadingComponent, children, configurationName }) => { const [isLoading, setIsLoading] = useState(true); - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); useEffect(() => { let isMounted = true; @@ -94,7 +94,7 @@ export const OidcProvider: FC> = ({ getFetch = null, }) => { const getOidc = (configurationName = 'default') => { - return VanillaOidc.getOrCreate(getFetch ?? getFetchDefault)(configuration, configurationName); + return OidcClient.getOrCreate(getFetch ?? getFetchDefault)(configuration, configurationName); }; // eslint-disable-next-line @typescript-eslint/naming-convention const [loading, setLoading] = useState(true); @@ -117,30 +117,30 @@ export const OidcProvider: FC> = ({ useEffect(() => { const oidc = getOidc(configurationName); const newSubscriptionId = oidc.subscribeEvents((name, data) => { - if (name === VanillaOidc.eventNames.refreshTokensAsync_error || name === VanillaOidc.eventNames.syncTokensAsync_error) { + if (name === OidcClient.eventNames.refreshTokensAsync_error || name === OidcClient.eventNames.syncTokensAsync_error) { if (onSessionLost != null) { onSessionLost(); return; } setEvent({ name, data }); - } else if (name === VanillaOidc.eventNames.logout_from_another_tab) { + } else if (name === OidcClient.eventNames.logout_from_another_tab) { if (onLogoutFromAnotherTab != null) { onLogoutFromAnotherTab(); return; } setEvent({ name, data }); - } else if (name === VanillaOidc.eventNames.logout_from_same_tab) { + } else if (name === OidcClient.eventNames.logout_from_same_tab) { if (onLogoutFromSameTab != null) { onLogoutFromSameTab(); } // setEvent({name, data}); - } else if (name === VanillaOidc.eventNames.loginAsync_begin || - name === VanillaOidc.eventNames.loginCallbackAsync_end || - name === VanillaOidc.eventNames.loginAsync_error || - name === VanillaOidc.eventNames.loginCallbackAsync_error + } else if (name === OidcClient.eventNames.loginAsync_begin || + name === OidcClient.eventNames.loginCallbackAsync_end || + name === OidcClient.eventNames.loginAsync_error || + name === OidcClient.eventNames.loginCallbackAsync_error ) { setEvent({ name, data }); - } else if (name === VanillaOidc.eventNames.service_worker_not_supported_by_browser && configuration.service_worker_only === true) { + } else if (name === OidcClient.eventNames.service_worker_not_supported_by_browser && configuration.service_worker_only === true) { setEvent({ name, data }); } }); @@ -165,22 +165,22 @@ export const OidcProvider: FC> = ({ const oidc = getOidc(configurationName); const eventName = event.name; switch (eventName) { - case VanillaOidc.eventNames.service_worker_not_supported_by_browser: + case OidcClient.eventNames.service_worker_not_supported_by_browser: return ( ); - case VanillaOidc.eventNames.loginAsync_begin: + case OidcClient.eventNames.loginAsync_begin: return ( ); - case VanillaOidc.eventNames.loginAsync_error: - case VanillaOidc.eventNames.loginCallbackAsync_error: + case OidcClient.eventNames.loginAsync_error: + case OidcClient.eventNames.loginCallbackAsync_error: return ( ); - case VanillaOidc.eventNames.refreshTokensAsync_error: - case VanillaOidc.eventNames.syncTokensAsync_error: - case VanillaOidc.eventNames.logout_from_another_tab: + case OidcClient.eventNames.refreshTokensAsync_error: + case OidcClient.eventNames.syncTokensAsync_error: + case OidcClient.eventNames.logout_from_another_tab: return ( ); diff --git a/packages/react-oidc/src/OidcSecure.tsx b/packages/react-oidc/src/OidcSecure.tsx index a83c4e00c..0a44df84e 100644 --- a/packages/react-oidc/src/OidcSecure.tsx +++ b/packages/react-oidc/src/OidcSecure.tsx @@ -1,4 +1,4 @@ -import { StringMap, VanillaOidc } from '@axa-fr/oidc-client'; +import { StringMap, OidcClient } from '@axa-fr/oidc-client'; import { FC, PropsWithChildren, useEffect } from 'react'; export type OidcSecureProps = { @@ -8,7 +8,7 @@ export type OidcSecureProps = { }; export const OidcSecure: FC> = ({ children, callbackPath = null, extras = null, configurationName = 'default' }) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); useEffect(() => { if (!oidc.tokens) { diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 4d6e9a122..005e44710 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,4 +1,4 @@ -import { StringMap, VanillaOidc } from '@axa-fr/oidc-client'; +import { StringMap, OidcClient } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; const defaultConfigurationName = 'default'; @@ -17,7 +17,7 @@ const defaultIsAuthenticated = (getOidc: GetOidcFn, configurationName: string) = }; export const useOidc = (configurationName = defaultConfigurationName) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const [isAuthenticated, setIsAuthenticated] = useState(defaultIsAuthenticated(getOidc, configurationName)); useEffect(() => { @@ -26,7 +26,7 @@ export const useOidc = (configurationName = defaultConfigurationName) => { setIsAuthenticated(defaultIsAuthenticated(getOidc, configurationName)); // eslint-disable-next-line @typescript-eslint/no-unused-vars const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { - if (name === VanillaOidc.eventNames.logout_from_another_tab || name === VanillaOidc.eventNames.logout_from_same_tab || name === VanillaOidc.eventNames.token_aquired) { + if (name === OidcClient.eventNames.logout_from_another_tab || name === OidcClient.eventNames.logout_from_same_tab || name === OidcClient.eventNames.token_aquired) { if (isMounted) { setIsAuthenticated(defaultIsAuthenticated(getOidc, configurationName)); } @@ -65,7 +65,7 @@ export const useOidc = (configurationName = defaultConfigurationName) => { const accessTokenInitialState = { accessToken: null, accessTokenPayload: null }; const initTokens = (configurationName: string) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); if (oidc.tokens) { const tokens = oidc.tokens; @@ -83,7 +83,7 @@ export type OidcAccessToken = { } export const useOidcAccessToken = (configurationName = defaultConfigurationName) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const [state, setAccessToken] = useState(initTokens(configurationName)); useEffect(() => { @@ -95,12 +95,12 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) } // eslint-disable-next-line @typescript-eslint/no-unused-vars const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { - if (name === VanillaOidc.eventNames.token_renewed || - name === VanillaOidc.eventNames.token_aquired || - name === VanillaOidc.eventNames.logout_from_another_tab || - name === VanillaOidc.eventNames.logout_from_same_tab || - name === VanillaOidc.eventNames.refreshTokensAsync_error || - name === VanillaOidc.eventNames.syncTokensAsync_error) { + if (name === OidcClient.eventNames.token_renewed || + name === OidcClient.eventNames.token_aquired || + name === OidcClient.eventNames.logout_from_another_tab || + name === OidcClient.eventNames.logout_from_same_tab || + name === OidcClient.eventNames.refreshTokensAsync_error || + name === OidcClient.eventNames.syncTokensAsync_error) { if (isMounted) { const tokens = oidc.tokens; setAccessToken(tokens != null ? { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload } : accessTokenInitialState); @@ -119,7 +119,7 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) const idTokenInitialState = { idToken: null, idTokenPayload: null }; const initIdToken = (configurationName: string) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); if (oidc.tokens) { const tokens = oidc.tokens; @@ -134,7 +134,7 @@ export type OidcIdToken = { } export const useOidcIdToken = (configurationName = defaultConfigurationName) => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const [state, setIDToken] = useState(initIdToken(configurationName)); useEffect(() => { @@ -146,12 +146,12 @@ export const useOidcIdToken = (configurationName = defaultConfigurationName) => } // eslint-disable-next-line @typescript-eslint/no-unused-vars const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { - if (name === VanillaOidc.eventNames.token_renewed || - name === VanillaOidc.eventNames.token_aquired || - name === VanillaOidc.eventNames.logout_from_another_tab || - name === VanillaOidc.eventNames.logout_from_same_tab || - name === VanillaOidc.eventNames.refreshTokensAsync_error || - name === VanillaOidc.eventNames.syncTokensAsync_error) { + if (name === OidcClient.eventNames.token_renewed || + name === OidcClient.eventNames.token_aquired || + name === OidcClient.eventNames.logout_from_another_tab || + name === OidcClient.eventNames.logout_from_same_tab || + name === OidcClient.eventNames.refreshTokensAsync_error || + name === OidcClient.eventNames.syncTokensAsync_error) { if (isMounted) { const tokens = oidc.tokens; setIDToken(tokens != null ? { idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload } : idTokenInitialState); diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index c889d0319..0b1b6a712 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -1,4 +1,4 @@ -import { type OidcUserInfo, VanillaOidc } from '@axa-fr/oidc-client'; +import { type OidcUserInfo, OidcClient } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; export enum OidcUserStatus { @@ -17,7 +17,7 @@ export const useOidcUser = (configuration const [oidcUser, setOidcUser] = useState>({ user: null, status: OidcUserStatus.Unauthenticated }); const [oidcUserId, setOidcUserId] = useState(''); - const oidc = VanillaOidc.get(configurationName); + const oidc = OidcClient.get(configurationName); useEffect(() => { let isMounted = true; if (oidc && oidc.tokens) { diff --git a/packages/react-oidc/src/core/default-component/Callback.component.tsx b/packages/react-oidc/src/core/default-component/Callback.component.tsx index ee8474032..4e8b8154f 100644 --- a/packages/react-oidc/src/core/default-component/Callback.component.tsx +++ b/packages/react-oidc/src/core/default-component/Callback.component.tsx @@ -1,4 +1,4 @@ -import { VanillaOidc } from '@axa-fr/oidc-client'; +import { OidcClient } from '@axa-fr/oidc-client'; import { ComponentType, useEffect, useState } from 'react'; import { getCustomHistory } from '../routes/withRouter.js'; @@ -16,7 +16,7 @@ const CallbackManager: ComponentType = ({ callBackError, callBackSuccess, c useEffect(() => { let isMounted = true; const playCallbackAsync = async () => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; try { const { callbackPath } = await getOidc(configurationName).loginCallbackAsync(); const history = (withCustomHistory) ? withCustomHistory() : getCustomHistory(); diff --git a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx index 6f6236076..019110e6e 100644 --- a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx @@ -1,10 +1,10 @@ -import { VanillaOidc } from '@axa-fr/oidc-client'; +import { OidcClient } from '@axa-fr/oidc-client'; import { ComponentType, useEffect } from 'react'; const SilentCallbackManager: ComponentType = ({ configurationName }) => { useEffect(() => { const playCallbackAsync = async () => { - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); oidc.silentLoginCallbackAsync(); }; diff --git a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx index 26d9ec696..32bba4545 100644 --- a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx @@ -1,10 +1,10 @@ -import { getParseQueryStringFromLocation, VanillaOidc } from '@axa-fr/oidc-client'; +import { getParseQueryStringFromLocation, OidcClient } from '@axa-fr/oidc-client'; import { ComponentType, useEffect } from 'react'; const SilentLogin: ComponentType = ({ configurationName }) => { const queryParams = getParseQueryStringFromLocation(window.location.href); - const getOidc = VanillaOidc.get; + const getOidc = OidcClient.get; const oidc = getOidc(configurationName); let extras = null; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac70b8a06..e10f7b049 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,240 +1,332 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false importers: .: - specifiers: - '@typescript-eslint/eslint-plugin': ^6.0.0 - '@typescript-eslint/parser': ^6.0.0 - eslint: ^8.45.0 - eslint-config-prettier: ^8.8.0 - eslint-define-config: ^1.21.0 - eslint-plugin-import: ^2.27.5 - eslint-plugin-jsx-a11y: ^6.7.1 - eslint-plugin-n: ^16.0.1 - eslint-plugin-no-only-tests: ^3.1.0 - eslint-plugin-prettier: ^5.0.0 - eslint-plugin-react: ^7.32.2 - eslint-plugin-react-hooks: ^4.6.0 - eslint-plugin-regexp: ^1.15.0 - eslint-plugin-simple-import-sort: ^10.0.0 - eslint-plugin-testing-library: ^5.11.0 - prettier: ^3.0.0 - tslib: ^2.6.0 - tsx: ^3.12.7 - typescript: ^5.1.6 - vitest: ^0.33.0 devDependencies: - '@typescript-eslint/eslint-plugin': 6.2.0_idzvfmj5qli4h3jfxnf522w3fe - '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju - eslint: 8.46.0 - eslint-config-prettier: 8.9.0_eslint@8.46.0 - eslint-define-config: 1.22.0 - eslint-plugin-import: 2.28.0_ec5nhyiwpcpmef4grv6n2vqr5y - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.46.0 - eslint-plugin-n: 16.0.1_eslint@8.46.0 - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-prettier: 5.0.0_zqxxaukdltekzrbl7w2kyx7tna - eslint-plugin-react: 7.33.1_eslint@8.46.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.46.0 - eslint-plugin-regexp: 1.15.0_eslint@8.46.0 - eslint-plugin-simple-import-sort: 10.0.0_eslint@8.46.0 - eslint-plugin-testing-library: 5.11.0_7haavtekmro7ptbnqmctjaodju - prettier: 3.0.0 - tslib: 2.6.1 - tsx: 3.12.7 - typescript: 5.1.6 - vitest: 0.33.0 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.2.0(eslint@8.46.0)(typescript@5.1.6) + eslint: + specifier: ^8.45.0 + version: 8.46.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.9.0(eslint@8.46.0) + eslint-define-config: + specifier: ^1.21.0 + version: 1.22.0 + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0) + eslint-plugin-jsx-a11y: + specifier: ^6.7.1 + version: 6.7.1(eslint@8.46.0) + eslint-plugin-n: + specifier: ^16.0.1 + version: 16.0.1(eslint@8.46.0) + eslint-plugin-no-only-tests: + specifier: ^3.1.0 + version: 3.1.0 + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) + eslint-plugin-react: + specifier: ^7.32.2 + version: 7.33.1(eslint@8.46.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.46.0) + eslint-plugin-regexp: + specifier: ^1.15.0 + version: 1.15.0(eslint@8.46.0) + eslint-plugin-simple-import-sort: + specifier: ^10.0.0 + version: 10.0.0(eslint@8.46.0) + eslint-plugin-testing-library: + specifier: ^5.11.0 + version: 5.11.0(eslint@8.46.0)(typescript@5.1.6) + prettier: + specifier: ^3.0.0 + version: 3.0.0 + tslib: + specifier: ^2.6.0 + version: 2.6.1 + tsx: + specifier: ^3.12.7 + version: 3.12.7 + typescript: + specifier: ^5.1.6 + version: 5.1.6 + vitest: + specifier: ^0.33.0 + version: 0.33.0(jsdom@22.1.0) examples/nextjs-demo: - specifiers: - '@axa-fr/react-oidc': workspace:* - next: latest - react: latest - react-dom: latest - dependencies: - '@axa-fr/react-oidc': link:../../packages/react-oidc - next: 13.4.12_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + dependencies: + '@axa-fr/react-oidc': + specifier: workspace:* + version: link:../../packages/react-oidc + next: + specifier: latest + version: 13.4.12(react-dom@18.2.0)(react@18.2.0) + react: + specifier: latest + version: 18.2.0 + react-dom: + specifier: latest + version: 18.2.0(react@18.2.0) examples/oidc-client-demo: - specifiers: - '@axa-fr/oidc-client': workspace:~ - '@testing-library/jest-dom': ^5.16.5 - '@testing-library/user-event': ^13.5.0 - '@types/jest': ^27.5.2 - '@types/node': ^18.11.9 - cross-env: ^7.0.3 - typescript: ^5.1.6 - vite: ^4.4.4 - web-vitals: ^3.4.0 - dependencies: - '@axa-fr/oidc-client': link:../../packages/oidc-client - '@testing-library/jest-dom': 5.17.0 - '@testing-library/user-event': 13.5.0 - '@types/jest': 27.5.2 - typescript: 5.1.6 - web-vitals: 3.4.0 + dependencies: + '@axa-fr/oidc-client': + specifier: workspace:~ + version: link:../../packages/oidc-client + '@testing-library/jest-dom': + specifier: ^5.16.5 + version: 5.17.0 + '@testing-library/user-event': + specifier: ^13.5.0 + version: 13.5.0(@testing-library/dom@9.3.1) + '@types/jest': + specifier: ^27.5.2 + version: 27.5.2 + typescript: + specifier: ^5.1.6 + version: 5.1.6 + web-vitals: + specifier: ^3.4.0 + version: 3.4.0 devDependencies: - '@types/node': 18.17.1 - cross-env: 7.0.3 - vite: 4.4.7_@types+node@18.17.1 + '@types/node': + specifier: ^18.11.9 + version: 18.17.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + vite: + specifier: ^4.4.4 + version: 4.4.7(@types/node@18.17.1) examples/react-oidc-demo: - specifiers: - '@axa-fr/react-oidc': workspace:* - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.3.0 - '@testing-library/user-event': 14.4.3 - '@types/react': ^18.2.15 - '@vitejs/plugin-react': 4.0.3 - '@vitest/coverage-c8': ^0.33.0 - bootstrap: ^4.6.2 - copyfiles: 2.4.1 - cross-env: ^7.0.3 - jsdom: 22.1.0 - msw: 1.2.2 - react: ^18.2.0 - react-dom: ^18.2.0 - react-router-dom: ^6.14.1 - typescript: 5.1.6 - vite: ^4.4.4 - vite-plugin-dts: ^3.3.0 - vitest: ^0.33.0 dependencies: - '@axa-fr/react-oidc': link:../../packages/react-oidc - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-router-dom: 6.14.2_biqbaboplfbrettd7655fr4n2y + '@axa-fr/react-oidc': + specifier: workspace:* + version: link:../../packages/react-oidc + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.14.1 + version: 6.14.2(react-dom@18.2.0)(react@18.2.0) devDependencies: - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y - '@testing-library/user-event': 14.4.3 - '@types/react': 18.2.17 - '@vitejs/plugin-react': 4.0.3_vite@4.4.7 - '@vitest/coverage-c8': 0.33.0_vitest@0.33.0 - bootstrap: 4.6.2 - copyfiles: 2.4.1 - cross-env: 7.0.3 - jsdom: 22.1.0 - msw: 1.2.2_typescript@5.1.6 - typescript: 5.1.6 - vite: 4.4.7 - vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea - vitest: 0.33.0_jsdom@22.1.0 + '@testing-library/jest-dom': + specifier: 5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: 13.3.0 + version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: 14.4.3 + version: 14.4.3(@testing-library/dom@9.3.1) + '@types/react': + specifier: ^18.2.15 + version: 18.2.17 + '@vitejs/plugin-react': + specifier: 4.0.3 + version: 4.0.3(vite@4.4.7) + '@vitest/coverage-c8': + specifier: ^0.33.0 + version: 0.33.0(vitest@0.33.0) + bootstrap: + specifier: ^4.6.2 + version: 4.6.2(jquery@3.7.0)(popper.js@1.16.1) + copyfiles: + specifier: 2.4.1 + version: 2.4.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + jsdom: + specifier: 22.1.0 + version: 22.1.0 + msw: + specifier: 1.2.2 + version: 1.2.2(typescript@5.1.6) + typescript: + specifier: 5.1.6 + version: 5.1.6 + vite: + specifier: ^4.4.4 + version: 4.4.7(@types/node@18.17.1) + vite-plugin-dts: + specifier: ^3.3.0 + version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + vitest: + specifier: ^0.33.0 + version: 0.33.0(jsdom@22.1.0) packages/oidc-client: - specifiers: - '@axa-fr/oidc-client-service-worker': workspace:* - '@testing-library/dom': ^9.3.1 - '@testing-library/jest-dom': ^5.16.5 - '@testing-library/react': 13.3.0 - '@vitest/coverage-v8': ^0.33.0 - base64-js: ^1.5.1 - cpy: ^10.1.0 - cpy-cli: ^5.0.0 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: ^4.4.4 - vite-plugin-dts: ^3.3.0 - vitest: ^0.33.0 dependencies: - '@axa-fr/oidc-client-service-worker': link:../oidc-client-service-worker + '@axa-fr/oidc-client-service-worker': + specifier: workspace:* + version: link:../oidc-client-service-worker devDependencies: - '@testing-library/dom': 9.3.1 - '@testing-library/jest-dom': 5.17.0 - '@testing-library/react': 13.3.0 - '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 - base64-js: 1.5.1 - cpy: 10.1.0 - cpy-cli: 5.0.0 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: 4.4.7 - vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea - vitest: 0.33.0 + '@testing-library/dom': + specifier: ^9.3.1 + version: 9.3.1 + '@testing-library/jest-dom': + specifier: ^5.16.5 + version: 5.17.0 + '@testing-library/react': + specifier: 13.3.0 + version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + '@vitest/coverage-v8': + specifier: ^0.33.0 + version: 0.33.0(vitest@0.33.0) + base64-js: + specifier: ^1.5.1 + version: 1.5.1 + cpy: + specifier: ^10.1.0 + version: 10.1.0 + cpy-cli: + specifier: ^5.0.0 + version: 5.0.0 + rimraf: + specifier: 5.0.1 + version: 5.0.1 + typescript: + specifier: 5.1.6 + version: 5.1.6 + vite: + specifier: ^4.4.4 + version: 4.4.7(@types/node@18.17.1) + vite-plugin-dts: + specifier: ^3.3.0 + version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + vitest: + specifier: ^0.33.0 + version: 0.33.0(jsdom@22.1.0) packages/oidc-client-service-worker: - specifiers: - '@vitest/coverage-c8': ^0.33.0 - cpy: ^10.1.0 - cpy-cli: ^5.0.0 - msw: 1.2.2 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: ^4.4.4 - vite-plugin-dts: ^3.3.0 - vitest: ^0.33.0 devDependencies: - '@vitest/coverage-c8': 0.33.0_vitest@0.33.0 - cpy: 10.1.0 - cpy-cli: 5.0.0 - msw: 1.2.2_typescript@5.1.6 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: 4.4.7 - vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea - vitest: 0.33.0 + '@vitest/coverage-c8': + specifier: ^0.33.0 + version: 0.33.0(vitest@0.33.0) + cpy: + specifier: ^10.1.0 + version: 10.1.0 + cpy-cli: + specifier: ^5.0.0 + version: 5.0.0 + msw: + specifier: 1.2.2 + version: 1.2.2(typescript@5.1.6) + rimraf: + specifier: 5.0.1 + version: 5.0.1 + typescript: + specifier: 5.1.6 + version: 5.1.6 + vite: + specifier: ^4.4.4 + version: 4.4.7(@types/node@18.17.1) + vite-plugin-dts: + specifier: ^3.3.0 + version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + vitest: + specifier: ^0.33.0 + version: 0.33.0(jsdom@22.1.0) packages/react-oidc: - specifiers: - '@axa-fr/oidc-client': workspace:* - '@axa-fr/oidc-client-service-worker': workspace:* - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.3.0 - '@testing-library/user-event': 14.4.3 - '@types/react': ^18.2.15 - '@vitejs/plugin-react': 4.0.3 - '@vitest/coverage-v8': ^0.33.0 - base64-js: 1.5.1 - cpy: ^10.1.0 - cpy-cli: ^5.0.0 - cross-env: ^7.0.3 - jsdom: 22.1.0 - msw: 1.2.2 - react: ^18.2.0 - react-dom: ^18.2.0 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: ^4.4.4 - vite-plugin-dts: ^3.3.0 - vitest: ^0.33.0 dependencies: - '@axa-fr/oidc-client': link:../oidc-client - '@axa-fr/oidc-client-service-worker': link:../oidc-client-service-worker - base64-js: 1.5.1 + '@axa-fr/oidc-client': + specifier: workspace:* + version: link:../oidc-client + '@axa-fr/oidc-client-service-worker': + specifier: workspace:* + version: link:../oidc-client-service-worker + base64-js: + specifier: 1.5.1 + version: 1.5.1 devDependencies: - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y - '@testing-library/user-event': 14.4.3 - '@types/react': 18.2.17 - '@vitejs/plugin-react': 4.0.3_vite@4.4.7 - '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 - cpy: 10.1.0 - cpy-cli: 5.0.0 - cross-env: 7.0.3 - jsdom: 22.1.0 - msw: 1.2.2_typescript@5.1.6 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - rimraf: 5.0.1 - typescript: 5.1.6 - vite: 4.4.7 - vite-plugin-dts: 3.4.0_npxhaqyhuvoil5zmsh4ym23fea - vitest: 0.33.0_jsdom@22.1.0 + '@testing-library/jest-dom': + specifier: 5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: 13.3.0 + version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: 14.4.3 + version: 14.4.3(@testing-library/dom@9.3.1) + '@types/react': + specifier: ^18.2.15 + version: 18.2.17 + '@vitejs/plugin-react': + specifier: 4.0.3 + version: 4.0.3(vite@4.4.7) + '@vitest/coverage-v8': + specifier: ^0.33.0 + version: 0.33.0(vitest@0.33.0) + cpy: + specifier: ^10.1.0 + version: 10.1.0 + cpy-cli: + specifier: ^5.0.0 + version: 5.0.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + jsdom: + specifier: 22.1.0 + version: 22.1.0 + msw: + specifier: 1.2.2 + version: 1.2.2(typescript@5.1.6) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + rimraf: + specifier: 5.0.1 + version: 5.0.1 + typescript: + specifier: 5.1.6 + version: 5.1.6 + vite: + specifier: ^4.4.4 + version: 4.4.7(@types/node@18.17.1) + vite-plugin-dts: + specifier: ^3.3.0 + version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + vitest: + specifier: ^0.33.0 + version: 0.33.0(jsdom@22.1.0) packages: - /@aashutoshrathi/word-wrap/1.2.6: + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools/4.2.0: + /@adobe/css-tools@4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} - /@ampproject/remapping/2.2.1: + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: @@ -242,27 +334,26 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame/7.22.5: + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 - dev: true - /@babel/compat-data/7.22.9: + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.22.9: + /@babel/core@7.22.9: resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9_@babel+core@7.22.9 - '@babel/helper-module-transforms': 7.22.9_@babel+core@7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) '@babel/helpers': 7.22.6 '@babel/parser': 7.22.7 '@babel/template': 7.22.5 @@ -277,7 +368,7 @@ packages: - supports-color dev: true - /@babel/generator/7.22.9: + /@babel/generator@7.22.9: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: @@ -287,7 +378,7 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets/7.22.9_@babel+core@7.22.9: + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -301,12 +392,12 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-environment-visitor/7.22.5: + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name/7.22.5: + /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: @@ -314,21 +405,21 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables/7.22.5: + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports/7.22.5: + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-transforms/7.22.9_@babel+core@7.22.9: + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -342,41 +433,40 @@ packages: '@babel/helper-validator-identifier': 7.22.5 dev: true - /@babel/helper-plugin-utils/7.22.5: + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.22.5: + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration/7.22.6: + /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-string-parser/7.22.5: + /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.22.5: + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option/7.22.5: + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.22.6: + /@babel/helpers@7.22.6: resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: @@ -387,16 +477,15 @@ packages: - supports-color dev: true - /@babel/highlight/7.22.5: + /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - /@babel/parser/7.22.7: + /@babel/parser@7.22.7: resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -404,7 +493,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self/7.22.5_@babel+core@7.22.9: + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -414,7 +503,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source/7.22.5_@babel+core@7.22.9: + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -424,13 +513,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime/7.22.6: + /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template/7.22.5: + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: @@ -439,7 +528,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/traverse/7.22.8: + /@babel/traverse@7.22.8: resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: @@ -457,7 +546,7 @@ packages: - supports-color dev: true - /@babel/types/7.22.5: + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: @@ -466,68 +555,68 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@esbuild-kit/cjs-loader/2.4.2: + /@esbuild-kit/cjs-loader@2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.6.2 dev: true - /@esbuild-kit/core-utils/3.1.0: + /@esbuild-kit/core-utils@3.1.0: resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: esbuild: 0.17.19 source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.5.5: + /@esbuild-kit/esm-loader@2.5.5: resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.6.2 dev: true - /@esbuild/android-arm/0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm/0.18.17: - resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} + /@esbuild/android-arm64@0.18.17: + resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64/0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64/0.18.17: - resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} + /@esbuild/android-arm@0.18.17: + resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-x64/0.17.19: + /@esbuild/android-x64@0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} cpu: [x64] @@ -536,7 +625,7 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.18.17: + /@esbuild/android-x64@0.18.17: resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} engines: {node: '>=12'} cpu: [x64] @@ -545,7 +634,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.19: + /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} cpu: [arm64] @@ -554,7 +643,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.18.17: + /@esbuild/darwin-arm64@0.18.17: resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} engines: {node: '>=12'} cpu: [arm64] @@ -563,7 +652,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.19: + /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} cpu: [x64] @@ -572,7 +661,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.18.17: + /@esbuild/darwin-x64@0.18.17: resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} engines: {node: '>=12'} cpu: [x64] @@ -581,7 +670,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.19: + /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} cpu: [arm64] @@ -590,7 +679,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.18.17: + /@esbuild/freebsd-arm64@0.18.17: resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} engines: {node: '>=12'} cpu: [arm64] @@ -599,7 +688,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.19: + /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} cpu: [x64] @@ -608,7 +697,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.18.17: + /@esbuild/freebsd-x64@0.18.17: resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} engines: {node: '>=12'} cpu: [x64] @@ -617,43 +706,43 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm/0.18.17: - resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} + /@esbuild/linux-arm64@0.18.17: + resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64/0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64/0.18.17: - resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} + /@esbuild/linux-arm@0.18.17: + resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-ia32/0.17.19: + /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} cpu: [ia32] @@ -662,7 +751,7 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.18.17: + /@esbuild/linux-ia32@0.18.17: resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} engines: {node: '>=12'} cpu: [ia32] @@ -671,7 +760,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.19: + /@esbuild/linux-loong64@0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] @@ -680,7 +769,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.18.17: + /@esbuild/linux-loong64@0.18.17: resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} engines: {node: '>=12'} cpu: [loong64] @@ -689,7 +778,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.19: + /@esbuild/linux-mips64el@0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} cpu: [mips64el] @@ -698,7 +787,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.18.17: + /@esbuild/linux-mips64el@0.18.17: resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} engines: {node: '>=12'} cpu: [mips64el] @@ -707,7 +796,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.19: + /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} cpu: [ppc64] @@ -716,7 +805,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.18.17: + /@esbuild/linux-ppc64@0.18.17: resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} engines: {node: '>=12'} cpu: [ppc64] @@ -725,7 +814,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.19: + /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} cpu: [riscv64] @@ -734,7 +823,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.18.17: + /@esbuild/linux-riscv64@0.18.17: resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} engines: {node: '>=12'} cpu: [riscv64] @@ -743,7 +832,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.19: + /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} cpu: [s390x] @@ -752,7 +841,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.18.17: + /@esbuild/linux-s390x@0.18.17: resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} engines: {node: '>=12'} cpu: [s390x] @@ -761,7 +850,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.19: + /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} cpu: [x64] @@ -770,7 +859,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.18.17: + /@esbuild/linux-x64@0.18.17: resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} engines: {node: '>=12'} cpu: [x64] @@ -779,7 +868,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.19: + /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} cpu: [x64] @@ -788,7 +877,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.18.17: + /@esbuild/netbsd-x64@0.18.17: resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} engines: {node: '>=12'} cpu: [x64] @@ -797,7 +886,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.19: + /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} cpu: [x64] @@ -806,7 +895,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.18.17: + /@esbuild/openbsd-x64@0.18.17: resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} engines: {node: '>=12'} cpu: [x64] @@ -815,7 +904,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.19: + /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} cpu: [x64] @@ -824,7 +913,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.18.17: + /@esbuild/sunos-x64@0.18.17: resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} engines: {node: '>=12'} cpu: [x64] @@ -833,7 +922,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.19: + /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} cpu: [arm64] @@ -842,7 +931,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.18.17: + /@esbuild/win32-arm64@0.18.17: resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} engines: {node: '>=12'} cpu: [arm64] @@ -851,7 +940,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.19: + /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} cpu: [ia32] @@ -860,7 +949,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.18.17: + /@esbuild/win32-ia32@0.18.17: resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} engines: {node: '>=12'} cpu: [ia32] @@ -869,7 +958,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.19: + /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} cpu: [x64] @@ -878,7 +967,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.18.17: + /@esbuild/win32-x64@0.18.17: resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} engines: {node: '>=12'} cpu: [x64] @@ -887,7 +976,7 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils/4.4.0_eslint@8.46.0: + /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -897,12 +986,12 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@eslint-community/regexpp/4.6.2: + /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc/2.1.1: + /@eslint/eslintrc@2.1.1: resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -919,12 +1008,12 @@ packages: - supports-color dev: true - /@eslint/js/8.46.0: + /@eslint/js@8.46.0: resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array/0.11.10: + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: @@ -935,40 +1024,40 @@ packages: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@isaacs/cliui/8.0.2: + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: /string-width/4.2.3 + string-width-cjs: /string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi/6.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi/7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/schemas/29.6.0: + /@jest/schemas@29.6.0: resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping/0.3.3: + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: @@ -977,32 +1066,32 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/sourcemap-codec/1.4.15: + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping/0.3.18: + /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@microsoft/api-extractor-model/7.27.5: + /@microsoft/api-extractor-model@7.27.5: resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -1012,7 +1101,7 @@ packages: - '@types/node' dev: true - /@microsoft/api-extractor/7.36.3: + /@microsoft/api-extractor@7.36.3: resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} hasBin: true dependencies: @@ -1032,7 +1121,7 @@ packages: - '@types/node' dev: true - /@microsoft/tsdoc-config/0.16.2: + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -1041,11 +1130,11 @@ packages: resolve: 1.19.0 dev: true - /@microsoft/tsdoc/0.14.2: + /@microsoft/tsdoc@0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@mswjs/cookies/0.2.2: + /@mswjs/cookies@0.2.2: resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} engines: {node: '>=14'} dependencies: @@ -1053,7 +1142,7 @@ packages: set-cookie-parser: 2.6.0 dev: true - /@mswjs/interceptors/0.17.9: + /@mswjs/interceptors@0.17.9: resolution: {integrity: sha512-4LVGt03RobMH/7ZrbHqRxQrS9cc2uh+iNKSj8UWr8M26A2i793ju+csaB5zaqYltqJmA2jUq4VeYfKmVqvsXQg==} engines: {node: '>=14'} dependencies: @@ -1069,11 +1158,11 @@ packages: - supports-color dev: true - /@next/env/13.4.12: + /@next/env@13.4.12: resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} dev: false - /@next/swc-darwin-arm64/13.4.12: + /@next/swc-darwin-arm64@13.4.12: resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} engines: {node: '>= 10'} cpu: [arm64] @@ -1082,7 +1171,7 @@ packages: dev: false optional: true - /@next/swc-darwin-x64/13.4.12: + /@next/swc-darwin-x64@13.4.12: resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} engines: {node: '>= 10'} cpu: [x64] @@ -1091,7 +1180,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu/13.4.12: + /@next/swc-linux-arm64-gnu@13.4.12: resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} engines: {node: '>= 10'} cpu: [arm64] @@ -1100,7 +1189,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl/13.4.12: + /@next/swc-linux-arm64-musl@13.4.12: resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} engines: {node: '>= 10'} cpu: [arm64] @@ -1109,7 +1198,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu/13.4.12: + /@next/swc-linux-x64-gnu@13.4.12: resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} engines: {node: '>= 10'} cpu: [x64] @@ -1118,7 +1207,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl/13.4.12: + /@next/swc-linux-x64-musl@13.4.12: resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} engines: {node: '>= 10'} cpu: [x64] @@ -1127,7 +1216,7 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc/13.4.12: + /@next/swc-win32-arm64-msvc@13.4.12: resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} engines: {node: '>= 10'} cpu: [arm64] @@ -1136,7 +1225,7 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc/13.4.12: + /@next/swc-win32-ia32-msvc@13.4.12: resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} engines: {node: '>= 10'} cpu: [ia32] @@ -1145,7 +1234,7 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc/13.4.12: + /@next/swc-win32-x64-msvc@13.4.12: resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} engines: {node: '>= 10'} cpu: [x64] @@ -1154,7 +1243,7 @@ packages: dev: false optional: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -1162,12 +1251,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -1175,18 +1264,18 @@ packages: fastq: 1.15.0 dev: true - /@open-draft/until/1.0.3: + /@open-draft/until@1.0.3: resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} dev: true - /@pkgjs/parseargs/0.11.0: + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true dev: true optional: true - /@pkgr/utils/2.4.2: + /@pkgr/utils@2.4.2: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: @@ -1198,12 +1287,12 @@ packages: tslib: 2.6.1 dev: true - /@remix-run/router/1.7.2: + /@remix-run/router@1.7.2: resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} engines: {node: '>=14'} dev: false - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1217,7 +1306,7 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/node-core-library/3.59.6: + /@rushstack/node-core-library@3.59.6: resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} peerDependencies: '@types/node': '*' @@ -1234,14 +1323,14 @@ packages: z-schema: 5.0.5 dev: true - /@rushstack/rig-package/0.4.0: + /@rushstack/rig-package@0.4.0: resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} dependencies: resolve: 1.22.2 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line/4.15.1: + /@rushstack/ts-command-line@4.15.1: resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} dependencies: '@types/argparse': 1.0.38 @@ -1250,17 +1339,17 @@ packages: string-argv: 0.3.2 dev: true - /@sinclair/typebox/0.27.8: + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers/0.5.1: + /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.1 dev: false - /@testing-library/dom/8.20.1: + /@testing-library/dom@8.20.1: resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} dependencies: @@ -1274,7 +1363,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/dom/9.3.1: + /@testing-library/dom@9.3.1: resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} engines: {node: '>=14'} dependencies: @@ -1286,9 +1375,8 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom/5.16.5: + /@testing-library/jest-dom@5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: @@ -1303,7 +1391,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/jest-dom/5.17.0: + /@testing-library/jest-dom@5.17.0: resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: @@ -1317,19 +1405,7 @@ packages: lodash: 4.17.21 redent: 3.0.0 - /@testing-library/react/13.3.0: - resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} - engines: {node: '>=12'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@babel/runtime': 7.22.6 - '@testing-library/dom': 8.20.1 - '@types/react-dom': 18.2.7 - dev: true - - /@testing-library/react/13.3.0_biqbaboplfbrettd7655fr4n2y: + /@testing-library/react@13.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} engines: {node: '>=12'} peerDependencies: @@ -1340,115 +1416,117 @@ packages: '@testing-library/dom': 8.20.1 '@types/react-dom': 18.2.7 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event/13.5.0: + /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.1): resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: '@babel/runtime': 7.22.6 + '@testing-library/dom': 9.3.1 dev: false - /@testing-library/user-event/14.4.3: + /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1): resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' + dependencies: + '@testing-library/dom': 9.3.1 dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@types/argparse/1.0.38: + /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true - /@types/aria-query/5.0.1: + /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} - dev: true - /@types/chai-subset/1.3.3: + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.5 dev: true - /@types/chai/4.3.5: + /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/cookie/0.4.1: + /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /@types/debug/4.1.8: + /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/estree/1.0.1: + /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/jest/27.5.2: + /@types/jest@27.5.2: resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 - /@types/js-levenshtein/1.1.1: + /@types/js-levenshtein@1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/json-schema/7.0.12: + /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node/18.17.1: + /@types/node@18.17.1: resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} dev: true - /@types/node/20.4.5: + /@types/node@20.4.5: resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom/18.2.7: + /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: '@types/react': 18.2.17 dev: true - /@types/react/18.2.17: + /@types/react@18.2.17: resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} dependencies: '@types/prop-types': 15.7.5 @@ -1456,26 +1534,26 @@ packages: csstype: 3.1.2 dev: true - /@types/scheduler/0.16.3: + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/semver/7.5.0: + /@types/semver@7.5.0: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/set-cookie-parser/2.4.3: + /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: '@types/node': 20.4.5 dev: true - /@types/testing-library__jest-dom/5.14.9: + /@types/testing-library__jest-dom@5.14.9: resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin/6.2.0_idzvfmj5qli4h3jfxnf522w3fe: + /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1487,10 +1565,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0_7haavtekmro7ptbnqmctjaodju - '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 eslint: 8.46.0 @@ -1499,13 +1577,13 @@ packages: natural-compare: 1.4.0 natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1_typescript@5.1.6 + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/6.2.0_7haavtekmro7ptbnqmctjaodju: + /@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1517,7 +1595,7 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.2.0 '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 eslint: 8.46.0 @@ -1526,7 +1604,7 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.62.0: + /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1534,7 +1612,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager/6.2.0: + /@typescript-eslint/scope-manager@6.2.0: resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: @@ -1542,7 +1620,7 @@ packages: '@typescript-eslint/visitor-keys': 6.2.0 dev: true - /@typescript-eslint/type-utils/6.2.0_7haavtekmro7ptbnqmctjaodju: + /@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1552,27 +1630,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 - '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.46.0 - ts-api-utils: 1.0.1_typescript@5.1.6 + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.62.0: + /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/6.2.0: + /@typescript-eslint/types@6.2.0: resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree/5.62.0_typescript@5.1.6: + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1587,13 +1665,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0_typescript@5.1.6 + tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/6.2.0_typescript@5.1.6: + /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6): resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1608,24 +1686,24 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1_typescript@5.1.6 + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.62.0_7haavtekmro7ptbnqmctjaodju: + /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.6 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) eslint: 8.46.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -1634,18 +1712,18 @@ packages: - typescript dev: true - /@typescript-eslint/utils/6.2.0_7haavtekmro7ptbnqmctjaodju: + /@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 6.2.0 '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6 + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) eslint: 8.46.0 semver: 7.5.4 transitivePeerDependencies: @@ -1653,7 +1731,7 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.62.0: + /@typescript-eslint/visitor-keys@5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1661,7 +1739,7 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@typescript-eslint/visitor-keys/6.2.0: + /@typescript-eslint/visitor-keys@6.2.0: resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: @@ -1669,22 +1747,22 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@vitejs/plugin-react/4.0.3_vite@4.4.7: + /@vitejs/plugin-react@4.0.3(vite@4.4.7): resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 dependencies: '@babel/core': 7.22.9 - '@babel/plugin-transform-react-jsx-self': 7.22.5_@babel+core@7.22.9 - '@babel/plugin-transform-react-jsx-source': 7.22.5_@babel+core@7.22.9 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) react-refresh: 0.14.0 - vite: 4.4.7 + vite: 4.4.7(@types/node@18.17.1) transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-c8/0.33.0_vitest@0.33.0: + /@vitest/coverage-c8@0.33.0(vitest@0.33.0): resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==} peerDependencies: vitest: '>=0.30.0 <1' @@ -1694,10 +1772,10 @@ packages: magic-string: 0.30.2 picocolors: 1.0.0 std-env: 3.3.3 - vitest: 0.33.0_jsdom@22.1.0 + vitest: 0.33.0(jsdom@22.1.0) dev: true - /@vitest/coverage-v8/0.33.0_vitest@0.33.0: + /@vitest/coverage-v8@0.33.0(vitest@0.33.0): resolution: {integrity: sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==} peerDependencies: vitest: '>=0.32.0 <1' @@ -1713,12 +1791,12 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.33.0 + vitest: 0.33.0(jsdom@22.1.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect/0.33.0: + /@vitest/expect@0.33.0: resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} dependencies: '@vitest/spy': 0.33.0 @@ -1726,7 +1804,7 @@ packages: chai: 4.3.7 dev: true - /@vitest/runner/0.33.0: + /@vitest/runner@0.33.0: resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} dependencies: '@vitest/utils': 0.33.0 @@ -1734,7 +1812,7 @@ packages: pathe: 1.1.1 dev: true - /@vitest/snapshot/0.33.0: + /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: magic-string: 0.30.2 @@ -1742,13 +1820,13 @@ packages: pretty-format: 29.6.2 dev: true - /@vitest/spy/0.33.0: + /@vitest/spy@0.33.0: resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils/0.33.0: + /@vitest/utils@0.33.0: resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} dependencies: diff-sequences: 29.4.3 @@ -1756,25 +1834,25 @@ packages: pretty-format: 29.6.2 dev: true - /@volar/language-core/1.10.0: + /@volar/language-core@1.10.0: resolution: {integrity: sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==} dependencies: '@volar/source-map': 1.10.0 dev: true - /@volar/source-map/1.10.0: + /@volar/source-map@1.10.0: resolution: {integrity: sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript/1.10.0: + /@volar/typescript@1.10.0: resolution: {integrity: sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==} dependencies: '@volar/language-core': 1.10.0 dev: true - /@vue/compiler-core/3.3.4: + /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: '@babel/parser': 7.22.7 @@ -1783,14 +1861,14 @@ packages: source-map-js: 1.0.2 dev: true - /@vue/compiler-dom/3.3.4: + /@vue/compiler-dom@3.3.4: resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} dependencies: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 dev: true - /@vue/language-core/1.8.8_typescript@5.1.6: + /@vue/language-core@1.8.8(typescript@5.1.6): resolution: {integrity: sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==} peerDependencies: typescript: '*' @@ -1809,41 +1887,41 @@ packages: vue-template-compiler: 2.7.14 dev: true - /@vue/reactivity/3.3.4: + /@vue/reactivity@3.3.4: resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} dependencies: '@vue/shared': 3.3.4 dev: true - /@vue/shared/3.3.4: + /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true - /@vue/typescript/1.8.8_typescript@5.1.6: + /@vue/typescript@1.8.8(typescript@5.1.6): resolution: {integrity: sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==} dependencies: '@volar/typescript': 1.10.0 - '@vue/language-core': 1.8.8_typescript@5.1.6 + '@vue/language-core': 1.8.8(typescript@5.1.6) transitivePeerDependencies: - typescript dev: true - /@xmldom/xmldom/0.8.10: + /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} dev: true - /@zxing/text-encoding/0.9.0: + /@zxing/text-encoding@0.9.0: resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} requiresBuild: true dev: true optional: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /acorn-jsx/5.3.2_acorn@8.10.0: + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1851,18 +1929,18 @@ packages: acorn: 8.10.0 dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/8.10.0: + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -1871,7 +1949,7 @@ packages: - supports-color dev: true - /aggregate-error/4.0.1: + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -1879,7 +1957,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -1888,45 +1966,44 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch/3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: @@ -1934,35 +2011,33 @@ packages: picomatch: 2.3.1 dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.2 - dev: true - /aria-query/5.3.0: + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - /array-buffer-byte-length/1.0.0: + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 - dev: true - /array-includes/3.1.6: + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: @@ -1973,12 +2048,12 @@ packages: is-string: 1.0.7 dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.findlastindex/1.2.2: + /array.prototype.findlastindex@1.2.2: resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} engines: {node: '>= 0.4'} dependencies: @@ -1989,7 +2064,7 @@ packages: get-intrinsic: 1.2.1 dev: true - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -1999,7 +2074,7 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap/1.3.1: + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: @@ -2009,7 +2084,7 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted/1.1.1: + /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 @@ -2019,7 +2094,7 @@ packages: get-intrinsic: 1.2.1 dev: true - /arraybuffer.prototype.slice/1.0.1: + /arraybuffer.prototype.slice@1.0.1: resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} engines: {node: '>= 0.4'} dependencies: @@ -2031,62 +2106,61 @@ packages: is-shared-array-buffer: 1.0.2 dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify/3.0.0: + /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types-flow/0.0.7: + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - dev: true - /axe-core/4.7.2: + /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: true - /axobject-query/3.2.1: + /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /big-integer/1.6.51: + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bl/4.1.0: + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 @@ -2094,41 +2168,44 @@ packages: readable-stream: 3.6.2 dev: true - /bootstrap/4.6.2: + /bootstrap@4.6.2(jquery@3.7.0)(popper.js@1.16.1): resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} peerDependencies: jquery: 1.9.1 - 3 popper.js: ^1.16.1 + dependencies: + jquery: 3.7.0 + popper.js: 1.16.1 dev: true - /bplist-parser/0.2.0: + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browserslist/4.21.10: + /browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2136,41 +2213,41 @@ packages: caniuse-lite: 1.0.30001517 electron-to-chromium: 1.4.477 node-releases: 2.0.13 - update-browserslist-db: 1.0.11_browserslist@4.21.10 + update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /builtins/5.0.1: + /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: semver: 7.5.4 dev: true - /bundle-name/3.0.0: + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 dev: true - /busboy/1.6.0: + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: false - /c8/7.14.0: + /c8@7.14.0: resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} engines: {node: '>=10.12.0'} hasBin: true @@ -2189,24 +2266,23 @@ packages: yargs-parser: 20.2.9 dev: true - /cac/6.7.14: + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 - dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-keys/8.0.2: + /camelcase-keys@8.0.2: resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} engines: {node: '>=14.16'} dependencies: @@ -2216,15 +2292,15 @@ packages: type-fest: 2.19.0 dev: true - /camelcase/7.0.1: + /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} dev: true - /caniuse-lite/1.0.30001517: + /caniuse-lite@1.0.30001517: resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -2237,23 +2313,22 @@ packages: type-detect: 4.0.8 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk/4.1.1: + /chalk@4.1.1: resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} engines: {node: '>=10'} dependencies: @@ -2261,22 +2336,22 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -2291,35 +2366,35 @@ packages: fsevents: 2.3.2 dev: true - /clean-stack/4.2.0: + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-spinners/2.9.0: + /cli-spinners@2.9.0: resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} engines: {node: '>=6'} dev: true - /cli-width/3.0.0: + /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} dev: true - /client-only/0.0.1: + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -2327,7 +2402,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -2336,68 +2411,66 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colors/1.2.5: + /colors@1.2.5: resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} engines: {node: '>=0.1.90'} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander/9.5.0: + /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} requiresBuild: true dev: true optional: true - /comment-parser/1.3.1: + /comment-parser@1.3.1: resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} engines: {node: '>= 12.0.0'} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /cookie/0.4.2: + /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} dev: true - /copyfiles/2.4.1: + /copyfiles@2.4.1: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true dependencies: @@ -2410,11 +2483,11 @@ packages: yargs: 16.2.0 dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cp-file/10.0.0: + /cp-file@10.0.0: resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} engines: {node: '>=14.16'} dependencies: @@ -2423,7 +2496,7 @@ packages: p-event: 5.0.1 dev: true - /cpy-cli/5.0.0: + /cpy-cli@5.0.0: resolution: {integrity: sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==} engines: {node: '>=16'} hasBin: true @@ -2432,7 +2505,7 @@ packages: meow: 12.0.1 dev: true - /cpy/10.1.0: + /cpy@10.1.0: resolution: {integrity: sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==} engines: {node: '>=16'} dependencies: @@ -2446,7 +2519,7 @@ packages: p-map: 6.0.0 dev: true - /cross-env/7.0.3: + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true @@ -2454,7 +2527,7 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -2463,25 +2536,25 @@ packages: which: 2.0.2 dev: true - /css.escape/1.5.1: + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - /cssstyle/3.0.0: + /cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} dependencies: rrweb-cssom: 0.6.0 dev: true - /csstype/3.1.2: + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /damerau-levenshtein/1.0.8: + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /data-urls/4.0.0: + /data-urls@4.0.0: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} dependencies: @@ -2490,11 +2563,11 @@ packages: whatwg-url: 12.0.1 dev: true - /de-indent/1.0.2: + /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -2505,7 +2578,7 @@ packages: ms: 2.1.3 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -2517,7 +2590,7 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys/2.0.1: + /decamelize-keys@2.0.1: resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} engines: {node: '>=14.16'} dependencies: @@ -2527,23 +2600,23 @@ packages: type-fest: 3.13.1 dev: true - /decamelize/6.0.0: + /decamelize@6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /decimal.js/10.4.3: + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-equal/2.2.2: + /deep-equal@2.2.2: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} dependencies: array-buffer-byte-length: 1.0.0 @@ -2564,13 +2637,12 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.11 - dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /default-browser-id/3.0.0: + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} dependencies: @@ -2578,7 +2650,7 @@ packages: untildify: 4.0.0 dev: true - /default-browser/4.0.0: + /default-browser@4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} engines: {node: '>=14.16'} dependencies: @@ -2588,102 +2660,101 @@ packages: titleize: 3.0.0 dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-lazy-prop/3.0.0: + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties/1.2.0: + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: true - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - /diff-sequences/27.5.1: + /diff-sequences@27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-accessibility-api/0.5.16: + /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium/1.4.477: + /electron-to-chromium@1.4.477: resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /entities/4.5.0: + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.22.1: + /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} dependencies: @@ -2728,7 +2799,7 @@ packages: which-typed-array: 1.1.11 dev: true - /es-get-iterator/1.1.3: + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 @@ -2740,9 +2811,8 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -2751,13 +2821,13 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2766,7 +2836,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild/0.17.19: + /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true @@ -2796,7 +2866,7 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild/0.18.17: + /esbuild@0.18.17: resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} hasBin: true @@ -2826,27 +2896,26 @@ packages: '@esbuild/win32-x64': 0.18.17 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: true - /eslint-config-prettier/8.9.0_eslint@8.46.0: + /eslint-config-prettier@8.9.0(eslint@8.46.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true peerDependencies: @@ -2855,12 +2924,12 @@ packages: eslint: 8.46.0 dev: true - /eslint-define-config/1.22.0: + /eslint-define-config@1.22.0: resolution: {integrity: sha512-pckNJppFwC4AX+AGK63aa4sX5BluPwWwHES3fq/ER0jDR2U2czwlngg38B4EQ2ibvofufc+R5QfmdPKI6+74vQ==} engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.0.0', pnpm: '>= 8.6.0'} dev: true - /eslint-import-resolver-node/0.3.7: + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 @@ -2870,7 +2939,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.8.0_yld263lccdegtok2y3jirl2p4y: + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2891,7 +2960,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 @@ -2899,18 +2968,18 @@ packages: - supports-color dev: true - /eslint-plugin-es-x/7.2.0_eslint@8.46.0: + /eslint-plugin-es-x@7.2.0(eslint@8.46.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@eslint-community/regexpp': 4.6.2 eslint: 8.46.0 dev: true - /eslint-plugin-import/2.28.0_ec5nhyiwpcpmef4grv6n2vqr5y: + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -2920,7 +2989,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 @@ -2929,7 +2998,7 @@ packages: doctrine: 2.1.0 eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_yld263lccdegtok2y3jirl2p4y + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -2946,7 +3015,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.46.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -2971,16 +3040,16 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-n/16.0.1_eslint@8.46.0: + /eslint-plugin-n@16.0.1(eslint@8.46.0): resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) builtins: 5.0.1 eslint: 8.46.0 - eslint-plugin-es-x: 7.2.0_eslint@8.46.0 + eslint-plugin-es-x: 7.2.0(eslint@8.46.0) ignore: 5.2.4 is-core-module: 2.12.1 minimatch: 3.1.2 @@ -2988,12 +3057,12 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-no-only-tests/3.1.0: + /eslint-plugin-no-only-tests@3.1.0: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier/5.0.0_zqxxaukdltekzrbl7w2kyx7tna: + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3008,13 +3077,13 @@ packages: optional: true dependencies: eslint: 8.46.0 - eslint-config-prettier: 8.9.0_eslint@8.46.0 + eslint-config-prettier: 8.9.0(eslint@8.46.0) prettier: 3.0.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.46.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.46.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -3023,7 +3092,7 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-react/7.33.1_eslint@8.46.0: + /eslint-plugin-react@7.33.1(eslint@8.46.0): resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} engines: {node: '>=4'} peerDependencies: @@ -3047,13 +3116,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-regexp/1.15.0_eslint@8.46.0: + /eslint-plugin-regexp@1.15.0(eslint@8.46.0): resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} engines: {node: ^12 || >=14} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@eslint-community/regexpp': 4.6.2 comment-parser: 1.3.1 eslint: 8.46.0 @@ -3064,7 +3133,7 @@ packages: scslre: 0.2.0 dev: true - /eslint-plugin-simple-import-sort/10.0.0_eslint@8.46.0: + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.46.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' @@ -3072,20 +3141,20 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-testing-library/5.11.0_7haavtekmro7ptbnqmctjaodju: + /eslint-plugin-testing-library@5.11.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0_7haavtekmro7ptbnqmctjaodju + '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6) eslint: 8.46.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -3093,7 +3162,7 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.2.2: + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3101,17 +3170,17 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys/3.4.2: + /eslint-visitor-keys@3.4.2: resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.46.0: + /eslint@8.46.0: resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.1 '@eslint/js': 8.46.0 @@ -3152,54 +3221,54 @@ packages: - supports-color dev: true - /espree/9.6.1: + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.10.0 - acorn-jsx: 5.3.2_acorn@8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.2 dev: true - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -3214,7 +3283,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/7.2.0: + /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: @@ -3229,7 +3298,7 @@ packages: strip-final-newline: 3.0.0 dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -3238,15 +3307,15 @@ packages: tmp: 0.0.33 dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff/1.3.0: + /fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob/3.3.1: + /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: @@ -3257,42 +3326,42 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq/1.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /figures/3.2.0: + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -3300,7 +3369,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/6.3.0: + /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3308,7 +3377,7 @@ packages: path-exists: 5.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -3316,17 +3385,16 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true - /foreground-child/2.0.0: + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -3334,7 +3402,7 @@ packages: signal-exit: 3.0.7 dev: true - /foreground-child/3.1.1: + /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} dependencies: @@ -3342,7 +3410,7 @@ packages: signal-exit: 4.1.0 dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -3351,7 +3419,7 @@ packages: mime-types: 2.1.35 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -3360,11 +3428,11 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -3372,11 +3440,10 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -3386,39 +3453,37 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.2.1: + /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 - dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -3426,31 +3491,31 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig/4.6.2: + /get-tsconfig@4.6.2: resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} dependencies: resolve-pkg-maps: 1.0.0 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob-to-regexp/0.4.1: + /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: false - /glob/10.3.3: + /glob@10.3.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -3462,7 +3527,7 @@ packages: path-scurry: 1.10.1 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -3473,26 +3538,26 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.20.0: + /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -3504,7 +3569,7 @@ packages: slash: 3.0.0 dev: true - /globby/13.2.2: + /globby@13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3515,111 +3580,103 @@ packages: slash: 4.0.0 dev: true - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 - dev: true - /graceful-fs/4.2.11: + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphemer/1.4.0: + /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql/16.7.1: + /graphql@16.7.1: resolution: {integrity: sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.1 - dev: true - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true - /he/1.2.0: + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true - /headers-polyfill/3.1.2: + /headers-polyfill@3.1.2: resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hosted-git-info/6.1.1: + /hosted-git-info@6.1.1: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: lru-cache: 7.18.3 dev: true - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -3630,7 +3687,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -3640,40 +3697,40 @@ packages: - supports-color dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals/4.3.1: + /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -3681,37 +3738,37 @@ packages: resolve-from: 4.0.0 dev: true - /import-lazy/4.0.0: + /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - /indent-string/5.0.0: + /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inquirer/8.2.5: + /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: @@ -3732,111 +3789,104 @@ packages: wrap-ansi: 7.0.0 dev: true - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 - dev: true - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - /is-array-buffer/3.0.2: + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-typed-array: 1.1.12 - dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true - /is-core-module/2.12.1: + /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true - /is-docker/3.0.0: + /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-function/1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-inside-container/1.0.0: + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -3844,150 +3894,139 @@ packages: is-docker: 3.0.0 dev: true - /is-interactive/1.0.0: + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} dev: true - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-node-process/1.2.0: + /is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array/1.1.12: + /is-typed-array@1.1.12: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.11 - dev: true - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - dev: true - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-report/3.0.1: + /istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} dependencies: @@ -3996,7 +4035,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -4007,7 +4046,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.6: + /istanbul-reports@3.1.6: resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} dependencies: @@ -4015,7 +4054,7 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /jackspeak/2.2.2: + /jackspeak@2.2.2: resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} engines: {node: '>=14'} dependencies: @@ -4024,7 +4063,7 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jest-diff/27.5.1: + /jest-diff@27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4033,11 +4072,11 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 - /jest-get-type/27.5.1: + /jest-get-type@27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /jest-matcher-utils/27.5.1: + /jest-matcher-utils@27.5.1: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4046,32 +4085,36 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 - /jju/1.4.0: + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /js-levenshtein/1.1.6: + /jquery@3.7.0: + resolution: {integrity: sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==} + dev: true + + /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsdoctypeparser/9.0.0: + /jsdoctypeparser@9.0.0: resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} engines: {node: '>=10'} hasBin: true dev: true - /jsdom/22.1.0: + /jsdom@22.1.0: resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} engines: {node: '>=16'} peerDependencies: @@ -4109,48 +4152,48 @@ packages: - utf-8-validate dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/1.0.2: + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 dev: true - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 dev: true - /jsx-ast-utils/3.3.5: + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: @@ -4160,31 +4203,31 @@ packages: object.values: 1.1.6 dev: true - /junk/4.0.1: + /junk@4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} dev: true - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kolorist/1.8.0: + /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true - /language-subtag-registry/0.3.22: + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags/1.0.5: + /language-tags@1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -4192,45 +4235,45 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /local-pkg/0.4.3: + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /locate-path/7.2.0: + /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 dev: true - /lodash.get/4.4.2: + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true - /lodash.isequal/4.5.0: + /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -4238,66 +4281,65 @@ packages: is-unicode-supported: 0.1.0 dev: true - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lru-cache/10.0.0: + /lru-cache@10.0.0: resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} engines: {node: 14 || >=16.14} dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lru-cache/7.18.3: + /lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} dev: true - /lz-string/1.5.0: + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - dev: true - /magic-string/0.30.2: + /magic-string@0.30.2: resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir/4.0.0: + /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: semver: 7.5.4 dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /meow/12.0.1: + /meow@12.0.1: resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==} engines: {node: '>=16.10'} dependencies: @@ -4315,16 +4357,16 @@ packages: yargs-parser: 21.1.1 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -4332,46 +4374,46 @@ packages: picomatch: 2.3.1 dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimatch/9.0.3: + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -4380,22 +4422,22 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass/7.0.2: + /minipass@7.0.2: resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} engines: {node: '>=16 || 14 >=14.17'} dev: true - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: true - /mlly/1.4.0: + /mlly@1.4.0: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: acorn: 8.10.0 @@ -4404,15 +4446,15 @@ packages: ufo: 1.2.0 dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw/1.2.2_typescript@5.1.6: + /msw@1.2.2(typescript@5.1.6): resolution: {integrity: sha512-GsW3PE/Es/a1tYThXcM8YHOZ1S1MtivcS3He/LQbbTCx3rbWJYCtWD5XXyJ53KlNPT7O1VI9sCW3xMtgFe8XpQ==} engines: {node: '>=14'} hasBin: true @@ -4448,32 +4490,32 @@ packages: - supports-color dev: true - /muggle-string/0.3.1: + /muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true - /mute-stream/0.0.8: + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nanoid/3.3.6: + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /nested-error-stacks/2.1.1: + /nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next/13.4.12_biqbaboplfbrettd7655fr4n2y: + /next@13.4.12(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} engines: {node: '>=16.8.0'} hasBin: true @@ -4497,8 +4539,8 @@ packages: caniuse-lite: 1.0.30001517 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.1.1_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: @@ -4516,7 +4558,7 @@ packages: - babel-plugin-macros dev: false - /node-fetch/2.6.12: + /node-fetch@2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -4528,18 +4570,18 @@ packages: whatwg-url: 5.0.0 dev: true - /node-releases/2.0.13: + /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true - /noms/0.0.0: + /noms@0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} dependencies: inherits: 2.0.4 readable-stream: 1.0.34 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -4549,7 +4591,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/5.0.0: + /normalize-package-data@5.0.0: resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: @@ -4559,52 +4601,49 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path/5.1.0: + /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /nwsapi/2.2.7: + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -4612,9 +4651,8 @@ packages: define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries/1.1.6: + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: @@ -4623,7 +4661,7 @@ packages: es-abstract: 1.22.1 dev: true - /object.fromentries/2.0.6: + /object.fromentries@2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: @@ -4632,7 +4670,7 @@ packages: es-abstract: 1.22.1 dev: true - /object.groupby/1.0.0: + /object.groupby@1.0.0: resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} dependencies: call-bind: 1.0.2 @@ -4641,14 +4679,14 @@ packages: get-intrinsic: 1.2.1 dev: true - /object.hasown/1.1.2: + /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 es-abstract: 1.22.1 dev: true - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: @@ -4657,27 +4695,27 @@ packages: es-abstract: 1.22.1 dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime/6.0.0: + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open/9.1.0: + /open@9.1.0: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} dependencies: @@ -4687,7 +4725,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.9.3: + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: @@ -4699,7 +4737,7 @@ packages: type-check: 0.4.0 dev: true - /ora/5.4.1: + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: @@ -4714,82 +4752,82 @@ packages: wcwidth: 1.0.1 dev: true - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outvariant/1.4.0: + /outvariant@1.4.0: resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} dev: true - /p-event/5.0.1: + /p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-timeout: 5.1.0 dev: true - /p-filter/3.0.0: + /p-filter@3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-map: 5.5.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-locate/6.0.0: + /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 dev: true - /p-map/5.5.0: + /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-map/6.0.0: + /p-map@6.0.0: resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} engines: {node: '>=16'} dev: true - /p-timeout/5.1.0: + /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -4799,42 +4837,42 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5/7.1.2: + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-exists/5.0.0: + /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-key/4.0.0: + /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry/1.10.1: + /path-scurry@1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: @@ -4842,32 +4880,32 @@ packages: minipass: 7.0.2 dev: true - /path-to-regexp/6.2.1: + /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe/1.1.1: + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pkg-types/1.0.3: + /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 @@ -4875,7 +4913,12 @@ packages: pathe: 1.1.1 dev: true - /postcss/8.4.14: + /popper.js@1.16.1: + resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} + deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 + dev: true + + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -4884,7 +4927,7 @@ packages: source-map-js: 1.0.2 dev: false - /postcss/8.4.27: + /postcss@8.4.27: resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -4893,25 +4936,25 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers/1.0.0: + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 dev: true - /prettier/3.0.0: + /prettier@3.0.0: resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} engines: {node: '>=14'} hasBin: true dev: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4919,7 +4962,7 @@ packages: ansi-styles: 5.2.0 react-is: 17.0.2 - /pretty-format/29.6.2: + /pretty-format@29.6.2: resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4928,11 +4971,11 @@ packages: react-is: 18.2.0 dev: true - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -4940,29 +4983,29 @@ packages: react-is: 16.13.1 dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/6.1.1: + /quick-lru@6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} dev: true - /react-dom/18.2.0_react@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -4971,23 +5014,23 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-refresh/0.14.0: + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.14.2_biqbaboplfbrettd7655fr4n2y: + /react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==} engines: {node: '>=14'} peerDependencies: @@ -4996,11 +5039,11 @@ packages: dependencies: '@remix-run/router': 1.7.2 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-router: 6.14.2_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.14.2(react@18.2.0) dev: false - /react-router/6.14.2_react@18.2.0: + /react-router@6.14.2(react@18.2.0): resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==} engines: {node: '>=14'} peerDependencies: @@ -5010,13 +5053,13 @@ packages: react: 18.2.0 dev: false - /react/18.2.0: + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - /read-pkg-up/9.1.0: + /read-pkg-up@9.1.0: resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -5025,7 +5068,7 @@ packages: type-fest: 2.19.0 dev: true - /read-pkg/7.1.0: + /read-pkg@7.1.0: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} dependencies: @@ -5035,7 +5078,7 @@ packages: type-fest: 2.19.0 dev: true - /readable-stream/1.0.34: + /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: core-util-is: 1.0.3 @@ -5044,7 +5087,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.8: + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -5056,7 +5099,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.2: + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: @@ -5065,21 +5108,21 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - /redent/4.0.0: + /redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -5087,17 +5130,17 @@ packages: strip-indent: 4.0.0 dev: true - /refa/0.11.0: + /refa@0.11.0: resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: '@eslint-community/regexpp': 4.6.2 dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp-ast-analysis/0.6.0: + /regexp-ast-analysis@0.6.0: resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: @@ -5105,41 +5148,40 @@ packages: refa: 0.11.0 dev: true - /regexp.prototype.flags/1.5.0: + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 functions-have-names: 1.2.3 - dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-pkg-maps/1.0.0: + /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve/1.19.0: + /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: is-core-module: 2.12.1 path-parse: 1.0.7 dev: true - /resolve/1.22.2: + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: @@ -5148,7 +5190,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve/1.22.3: + /resolve@1.22.3: resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} hasBin: true dependencies: @@ -5157,7 +5199,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve/2.0.0-next.4: + /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -5166,7 +5208,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -5174,19 +5216,19 @@ packages: signal-exit: 3.0.7 dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/5.0.1: + /rimraf@5.0.1: resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} engines: {node: '>=14'} hasBin: true @@ -5194,7 +5236,7 @@ packages: glob: 10.3.3 dev: true - /rollup/3.27.0: + /rollup@3.27.0: resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -5202,35 +5244,35 @@ packages: fsevents: 2.3.2 dev: true - /rrweb-cssom/0.6.0: + /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-applescript/5.0.0: + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 dev: true - /run-async/2.4.1: + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rxjs/7.8.1: + /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.6.1 dev: true - /safe-array-concat/1.0.0: + /safe-array-concat@1.0.0: resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} engines: {node: '>=0.4'} dependencies: @@ -5240,15 +5282,15 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -5256,23 +5298,23 @@ packages: is-regex: 1.1.4 dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler/0.23.0: + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /scslre/0.2.0: + /scslre@0.2.0: resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} dependencies: '@eslint-community/regexpp': 4.6.2 @@ -5280,12 +5322,12 @@ packages: regexp-ast-analysis: 0.6.0 dev: true - /semver/6.3.1: + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true dev: true - /semver/7.5.4: + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true @@ -5293,131 +5335,129 @@ packages: lru-cache: 6.0.0 dev: true - /set-cookie-parser/2.6.0: + /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 object-inspect: 1.12.3 - dev: true - /siginfo/2.0.0: + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit/4.1.0: + /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /spdx-correct/3.2.0: + /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids/3.0.13: + /spdx-license-ids@3.0.13: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stackback/0.0.2: + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env/3.3.3: + /std-env@3.3.3: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true - /stop-iteration-iterator/1.0.0: + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 - dev: true - /streamsearch/1.1.0: + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false - /strict-event-emitter/0.2.8: + /strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} dependencies: events: 3.3.0 dev: true - /strict-event-emitter/0.4.6: + /strict-event-emitter@0.4.6: resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} dev: true - /string-argv/0.3.2: + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -5426,7 +5466,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -5435,7 +5475,7 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall/4.0.8: + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -5448,7 +5488,7 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim/1.2.7: + /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: @@ -5457,7 +5497,7 @@ packages: es-abstract: 1.22.1 dev: true - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -5465,7 +5505,7 @@ packages: es-abstract: 1.22.1 dev: true - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -5473,76 +5513,76 @@ packages: es-abstract: 1.22.1 dev: true - /string_decoder/0.10.31: + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-ansi/7.1.0: + /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline/3.0.0: + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 - /strip-indent/4.0.0: + /strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal/1.0.1: + /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: acorn: 8.10.0 dev: true - /styled-jsx/5.1.1_react@18.2.0: + /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5559,29 +5599,28 @@ packages: react: 18.2.0 dev: false - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit/0.8.5: + /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: @@ -5589,7 +5628,7 @@ packages: tslib: 2.6.1 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -5598,60 +5637,60 @@ packages: minimatch: 3.1.2 dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /through2/2.0.5: + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 dev: true - /tinybench/2.5.0: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tinybench@2.5.0: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /tinypool/0.6.0: + /tinypool@0.6.0: resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/2.1.1: + /tinyspy@2.1.1: resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} engines: {node: '>=14.0.0'} dev: true - /titleize/3.0.0: + /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /tough-cookie/4.1.3: + /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} dependencies: @@ -5661,23 +5700,23 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/4.1.1: + /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: punycode: 2.3.0 dev: true - /trim-newlines/5.0.0: + /trim-newlines@5.0.0: resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==} engines: {node: '>=14.16'} dev: true - /ts-api-utils/1.0.1_typescript@5.1.6: + /ts-api-utils@1.0.1(typescript@5.1.6): resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: @@ -5686,7 +5725,7 @@ packages: typescript: 5.1.6 dev: true - /tsconfig-paths/3.14.2: + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 @@ -5695,14 +5734,14 @@ packages: strip-bom: 3.0.0 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.6.1: + /tslib@2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - /tsutils/3.21.0_typescript@5.1.6: + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -5712,7 +5751,7 @@ packages: typescript: 5.1.6 dev: true - /tsx/3.12.7: + /tsx@3.12.7: resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} hasBin: true dependencies: @@ -5723,39 +5762,39 @@ packages: fsevents: 2.3.2 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: true - /type-fest/3.13.1: + /type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} dev: true - /typed-array-buffer/1.0.0: + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: @@ -5764,7 +5803,7 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-byte-length/1.0.0: + /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: @@ -5774,7 +5813,7 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-byte-offset/1.0.0: + /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: @@ -5785,7 +5824,7 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -5793,22 +5832,22 @@ packages: is-typed-array: 1.1.12 dev: true - /typescript/5.0.4: + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true dev: true - /typescript/5.1.6: + /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true - /ufo/1.2.0: + /ufo@1.2.0: resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -5817,22 +5856,22 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db/1.0.11_browserslist@4.21.10: + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: @@ -5843,24 +5882,24 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 dev: true - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util/0.12.5: + /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 @@ -5870,7 +5909,7 @@ packages: which-typed-array: 1.1.11 dev: true - /v8-to-istanbul/9.1.0: + /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: @@ -5879,19 +5918,19 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true - /validator/13.9.0: + /validator@13.9.0: resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} dev: true - /vite-node/0.33.0_@types+node@20.4.5: + /vite-node@0.33.0(@types/node@20.4.5): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -5901,7 +5940,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.7_@types+node@20.4.5 + vite: 4.4.7(@types/node@20.4.5) transitivePeerDependencies: - '@types/node' - less @@ -5913,7 +5952,7 @@ packages: - terser dev: true - /vite-plugin-dts/3.4.0_npxhaqyhuvoil5zmsh4ym23fea: + /vite-plugin-dts@3.4.0(typescript@5.1.6)(vite@4.4.7): resolution: {integrity: sha512-B5UbhiF83hPlJpdri3k2FlseO2qIQfY95XJib7z1s8NTQKgPK+KgeuOQf8FR1hnE/pSU+RA3ra2T18HvymPDyA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5925,54 +5964,19 @@ packages: dependencies: '@microsoft/api-extractor': 7.36.3 '@rollup/pluginutils': 5.0.2 - '@vue/language-core': 1.8.8_typescript@5.1.6 + '@vue/language-core': 1.8.8(typescript@5.1.6) debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 - vite: 4.4.7 - vue-tsc: 1.8.8_typescript@5.1.6 + vite: 4.4.7(@types/node@18.17.1) + vue-tsc: 1.8.8(typescript@5.1.6) transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite/4.4.7: - resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.17 - postcss: 8.4.27 - rollup: 3.27.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vite/4.4.7_@types+node@18.17.1: + /vite@4.4.7(@types/node@18.17.1): resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6008,7 +6012,7 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.4.7_@types+node@20.4.5: + /vite@4.4.7(@types/node@20.4.5): resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6044,72 +6048,7 @@ packages: fsevents: 2.3.2 dev: true - /vitest/0.33.0: - resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 20.4.5 - '@vitest/expect': 0.33.0 - '@vitest/runner': 0.33.0 - '@vitest/snapshot': 0.33.0 - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - acorn: 8.10.0 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.2 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.3.3 - strip-literal: 1.0.1 - tinybench: 2.5.0 - tinypool: 0.6.0 - vite: 4.4.7_@types+node@20.4.5 - vite-node: 0.33.0_@types+node@20.4.5 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest/0.33.0_jsdom@22.1.0: + /vitest@0.33.0(jsdom@22.1.0): resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -6162,8 +6101,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.7_@types+node@20.4.5 - vite-node: 0.33.0_@types+node@20.4.5 + vite: 4.4.7(@types/node@20.4.5) + vite-node: 0.33.0(@types/node@20.4.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6175,33 +6114,33 @@ packages: - terser dev: true - /vue-template-compiler/2.7.14: + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: true - /vue-tsc/1.8.8_typescript@5.1.6: + /vue-tsc@1.8.8(typescript@5.1.6): resolution: {integrity: sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.8_typescript@5.1.6 - '@vue/typescript': 1.8.8_typescript@5.1.6 + '@vue/language-core': 1.8.8(typescript@5.1.6) + '@vue/typescript': 1.8.8(typescript@5.1.6) semver: 7.5.4 typescript: 5.1.6 dev: true - /w3c-xmlserializer/4.0.0: + /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /watchpack/2.4.0: + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} dependencies: @@ -6209,13 +6148,13 @@ packages: graceful-fs: 4.2.11 dev: false - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-encoding/1.1.5: + /web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} dependencies: util: 0.12.5 @@ -6223,32 +6162,32 @@ packages: '@zxing/text-encoding': 0.9.0 dev: true - /web-vitals/3.4.0: + /web-vitals@3.4.0: resolution: {integrity: sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==} dev: false - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/12.0.1: + /whatwg-url@12.0.1: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} dependencies: @@ -6256,14 +6195,14 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -6271,18 +6210,16 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-typed-array/1.1.11: + /which-typed-array@1.1.11: resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} dependencies: @@ -6291,9 +6228,8 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -6301,7 +6237,7 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running/2.2.2: + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -6310,7 +6246,7 @@ packages: stackback: 0.0.2 dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -6319,7 +6255,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/8.1.0: + /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} dependencies: @@ -6328,11 +6264,11 @@ packages: strip-ansi: 7.1.0 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws/8.13.0: + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -6345,44 +6281,44 @@ packages: optional: true dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -6395,7 +6331,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.7.2: + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: @@ -6408,17 +6344,17 @@ packages: yargs-parser: 21.1.1 dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /z-schema/5.0.5: + /z-schema@5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} engines: {node: '>=8.0.0'} hasBin: true @@ -6430,6 +6366,6 @@ packages: commander: 9.5.0 dev: true - /zod/3.21.4: + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false diff --git a/readme.md b/readme.md index 4c414ae67..5c84f6103 100644 --- a/readme.md +++ b/readme.md @@ -1,10 +1,8 @@ -# @axa-fr/react-oidc +# @axa-fr/oidc-client -[![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) +[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Coverage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) -- Try the demo react at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ -- Try the demo vanilla at https://icy-glacier-004ab4303.2.azurestaticapps.net/

-A set of react components to make Oidc (OpenID Connect) client easy. It aim to simplify OAuth authentication between multiples providers. It is compatible with NextJS. - - [About](#about) - [Getting Started](#getting-started) -- [Run The Demo](#run-the-demo) -- [Run The NextJS Demo](#run-the-nextjs-demo) +- [Run The Demos](#run-the-demos) - [How It Works](#how-it-works) - Packages - - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) - [`@axa-fr/oidc-client`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Foidc-client.svg)](https://badge.fury.io/js/%40axa-fr%2Foidc-client) - - [`@axa-fr/vanilla-oidc`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Fvanilla-oidc) **Deprecated in v6: has been renamed to @axa-fr/oidc-client** - - [`@axa-fr/react-oidc-context`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context) **Deprecated in v6: has been renamed to @axa-fr/react-oidc** - - [`@axa-fr/react-oidc-context-fetch`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-context-fetch) **Deprecated in v4** - - [`@axa-fr/react-oidc-redux`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux) **Deprecated in v4 : use react-oidc-context which works with redux and in fact does not use any react context** - - [`@axa-fr/react-oidc-redux-fetch`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-redux-fetch) **Deprecated in v4** - - [`@axa-fr/react-oidc-fetch-observable`] [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc-fetch-observable) **Deprecated in v4** + - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) + - `@axa-fr/svelte-oidc` : we are looking for contributor + - `@axa-fr/vue-oidc` : we are looking for contributor + - `@axa-fr/angular-oidc` : we are looking for contributor +- [FAQ](#FAQ) - [Migrations](#migrations) - [Contribute](#contribute) ## About -These libraries is used to manage client authentication. +**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. +**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. +**@axa-fr/react-oidc** is for **React** (compatible next.js, etc.), we expect soon to provide one for **Vue**, **Angular** and **Svelte**. + +Demos: +- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) +- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + + +**@axa-fr/oidc-client** is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSRF attacks) + - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** +- **Lightweight** : Unpacked Size on npm is **274 kB** - **Simple** - refresh_token and access_token are auto refreshed in background - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file -- **No cookies problem** : You can disable silent signin (that internally use an iFrame). For your information, your OIDC server should be in the same domain of your website in order to be able to send OIDC server cookies from your website via an internal IFRAME, else, you may encounter COOKIES problem. - **Multiple Authentication** : - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - You can authenticate to multiple different providers inside the same SPA (single page application) website - **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure) - -

- Schema Authorization Code Grant with pcke flow on the using service worker -
- The service worker catch access_token and refresh_token that will never be accessible to the client. -

+ - Work with Service Worker (more secure) and without for older browser (less secure). + - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. Works perfectly well with: - [Auth0](https://auth0.com/) - [Duende Identity Server](https://duendesoftware.com/) +- Azure AD - Google - AWS - [Keycloak](https://www.keycloak.org/) -- all OIDC compatible providers - -

- @axa-fr/react-oidc is one of the securest way to Authenticate. -
- @axa-fr/react-oidc is one of the securest way to Authenticate. -

+- etc., all OIDC providers -

- Service Worker lifetime drawback. -
- Service Worker lifetime drawback. -

-

- Silent-Signing constraints. -
- Silent-Signing constraints. -

-

- @axa-fr/react-oidc is the simplest and cheapest. -
- @axa-fr/react-oidc is the simplest and cheapest. -

## Getting Started -### Getting Started React using create-react-app +### Getting Started with @axa-fr/oidc-client ```sh -npm install @axa-fr/react-oidc --save +npm install @axa-fr/oidc-client --save # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` -If you require a very secure mode where `refresh_token` and `access_token` will be hidden behind a service worker that will proxify requests. -The only file you should edit is `OidcTrustedDomains.js`. - -```javascript -import React from 'react'; -import { render } from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { OidcProvider } from '@axa-fr/react-oidc'; -import Header from './Layout/Header'; -import Routes from './Router'; - -// This configuration use the ServiceWorker mode only -// "access_token" will be provided automaticaly to the urls and domains configured inside "OidcTrustedDomains.js" -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/authentication/callback', - silent_redirect_uri: window.location.origin + '/authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - service_worker_relative_url:'/OidcServiceWorker.js', - service_worker_only:true, -}; - -const App = () => ( - - -
- - - -); - -render(, document.getElementById('root')); -``` - -#### Trusted Domains - -Any domain that has a match in the `OidcTrustedDomains.js` will have the access token automatically injected on requests. - -The `OidcTrustedDomains.js` format is key (`default` being the default key) that has an array of string URLs or RegExp to match trusted domain URLs. - -> **Warning** -> You could use a wildcard for the value, by either providing the wildcard string value `'*'` or a RegExp such as `RegExp('^http.*')` , but you are reducing the security of your application by doing so and it is strongly discouraged. - -```javascript -// OidcTrustedDomains.js - -// Add below trusted domains, access tokens will automatically injected to be send to -// trusted domain can also be a path like https://www.myapi.com/users, -// then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. - -// Domains used by OIDC server must be also declared here -const trustedDomains = { - default:[ - "https://demo.duendesoftware.com", - "https://www.myapi.com/users", - new RegExp('^(https://[a-zA-Z0-9-]+.domain.com/api/)')] -}; - -// Service worker will continue to give access token to the JavaScript client -// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some -// scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { domains : ["https://demo.duendesoftware.com"], showAccessToken: true }; - -// This example defines domains used by OIDC server separately from domains to which access tokens will be injected. -trustedDomains.config_separate_oidc_access_token_domains = { - oidcDomains: ["https://demo.duendesoftware.com"], - accessTokenDomains: ["https://myapi"] -}; - -``` - -#### How to consume - -`useOidc` returns all props from the Hook : - -```javascript -import React from 'react'; -import {useOidc} from "./oidc"; - -export const Home = () => { - - const { login, logout, isAuthenticated} = useOidc(); - - return ( -
-
-
-
Welcome!
-

React Demo Application protected by OpenID Connect

- {!isAuthenticated && - } - {isAuthenticated && - } -
-
-
- ) -}; - -``` - -The Hook method exposes : - -- isAuthenticated : if the user is logged in or not -- logout: logout function (return a promise) -- login: login function 'return a promise' - -"OidcSecure" component trigger authentication in case user is not authenticated. So, the children of that component can be accessible only once you are connected. - -```javascript -import React from 'react'; -import { OidcSecure } from '@axa-fr/react-oidc'; +More documentation : -const AdminSecure = () => ( - -

My sub component

-
-); +- [`@axa-fr/oidc-client`](./packages/oidc-client#readme) -export default AdminSecure; -``` +### Getting Started with @axa-fr/react-oidc -How to get IDToken - -```javascript -import { useOidcIdToken } from '@axa-fr/react-oidc'; - -const DisplayIdToken =() => { - const{ idToken, idTokenPayload } = useOidcIdToken(); - - if(!idToken){ - return

you are not authentified

- } - - return ( -
-
-
ID Token
- {

{JSON.stringify(idToken)}

} - {idTokenPayload != null && -

{JSON.stringify(idTokenPayload)}

} -
-
- ); -} -``` +```sh +npm install @axa-fr/react-oidc --save -#### How to get User Information - -```javascript -import {useOidcUser} from '@axa-fr/react-oidc'; - -const DisplayUserInfo = () => { - const {oidcUser, oidcUserLoadingState} = useOidcUser(); - - switch (oidcUserLoadingState) { - case OidcUserStatus.Loading: - return

User Information are loading

; - case OidcUserStatus.Unauthenticated: - return

you are not authenticated

; - case OidcUserStatus.LoadingError: - return

Fail to load user information

; - default: - return ( -
-
-
User information
-

{JSON.stringify(oidcUser)}

-
-
- ); - } -}; +# If you have a "public" folder, the 2 files will be created : +# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" +# ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` More documentation : - [`@axa-fr/react-oidc`](./packages/react#readme) -### Getting Started Vanilla +## Run The Demos -More documentation : +```sh +git clone https://github.com/AxaFrance/oidc-client.git -- [`@axa-fr/vanilla-oidc`](./packages/vanilla#readme) +cd oidc-client +pnpm install -## Run The Demo +# oidc client demo +cd examples/oidc-client-demo +pnpm install +pnpm start +# then navigate to http://localhost:5174 -```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/react +# react vite demo +cd examples/react-oidc-demo pnpm install pnpm start # then navigate to http://localhost:4200 -``` - -## Run The NextJS Demo -```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/nextjs-demo +# react NextJS demo +cd examples/nextjs-demo pnpm install pnpm run dev # then navigate to http://localhost:3001 @@ -318,24 +123,34 @@ pnpm run dev ## How It Works +

+ Schema Authorization Code Grant with pcke flow on the using service worker +
+ The service worker catch access_token and refresh_token that will never be accessible to the client. +

+ + These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. -Internally, native History API is used to be router library agnostic. +Internally for "`@axa-fr/react-oidc`", native History API is used to be router library agnostic. -More information about OIDC +More information about OIDC : - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -## Migrations +## FAQ -v4 is a complete rewrite. It uses the libraries ["App-AuthJS"](https://github.com/openid/AppAuth-JS) instead of oidc-client. -In v4 we have chosen to remove a lot of the surface API in order to simplify usage and enforce security. -In this version you can use a ServiceWorker that will hide the `refresh_token` and `access_token` (more secure). +- Frequented Asked Question [`FAQ`](./FAQ.md) + +## Migrations - Migrating from v3 to v4 [`guide`](./MIGRATION_GUIDE_V3_TO_V4.md) - Migrating from v3 to v5 [`guide`](./MIGRATION_GUIDE_V3_TO_V5.md) - Migrating from v4 to v5 [`guide`](./MIGRATION_GUIDE_V4_TO_V5.md) - Migrating from v5 to v6 [`guide`](./MIGRATION_GUIDE_V5_TO_V6.md) +- Migrating from v6 to v7 [`guide`](./MIGRATION_GUIDE_V6_TO_V7.md) ## Contribute From e74c0df57140ca2bd3c7fd631eef39661b1b2b8c Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 1 Aug 2023 13:29:17 +0000 Subject: [PATCH 017/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index de0dbee59..398402a57 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "6.26.6", + "version": "7.0.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3d57a62e1..3ebd70c4b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "6.26.6", + "version": "7.0.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f844e9c5f..c0015a3db 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "6.26.6", + "version": "7.0.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From cd9789520090b27ea905401be6d03fd87f817f76 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 3 Aug 2023 11:35:14 +0200 Subject: [PATCH 018/565] fix(oidc): expire_in in string instead of number (#1118) (release) --- .github/workflows/npm-publish.yml | 2 +- FAQ.md | 3 +- .../oidc-client-service-worker/src/types.ts | 4 +- .../src/utils/__tests__/testHelper.ts | 8 ++-- .../src/utils/__tests__/tokens.spec.ts | 15 +++++--- .../src/utils/tokens.ts | 6 ++- packages/oidc-client/src/parseTokens.spec.ts | 38 ++++++++++++++++++- packages/oidc-client/src/parseTokens.ts | 26 ++++++++----- 8 files changed, 75 insertions(+), 27 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 39600d4c9..b0f6ad62c 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -68,7 +68,7 @@ jobs: id: which_tag run: | if [[ ${{ github.ref }} == refs/pull* ]]; then - last_commit_message=$(curl -s "https://api.github.com/repos/AxaFrance/react-oidc/pulls/${{ github.event.number }}/commits" | jq -r '.[-1].commit.message') + last_commit_message=$(curl -s "https://api.github.com/repos/AxaFrance/oidc-client/pulls/${{ github.event.number }}/commits" | jq -r '.[-1].commit.message') else last_commit_message=$(git log --format=%B -n 1) fi diff --git a/FAQ.md b/FAQ.md index 0f91b78f1..f94c86798 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,4 +1,3 @@ - # FAQ (Frequently Asked Questions) ## Condition to make silent signing work @@ -81,4 +80,4 @@ We think that @axa-fr/oidc-client is a good choice for the following reasons : />
@axa-fr/oidc-client is the simplest and cheapest. -

\ No newline at end of file +

diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 4fbce2143..0775e3a8a 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -86,14 +86,14 @@ export type AccessTokenPayload = { } export type Tokens = { - issued_at: number; + issued_at: number | string; access_token: string; accessTokenPayload: AccessTokenPayload | null; id_token: null | string; idTokenPayload: IdTokenPayload; refresh_token?: string; expiresAt: number; - expires_in: number; + expires_in: number | string; }; export type Database = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 37e11373b..97de3ae11 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -44,7 +44,7 @@ class TokenBuilder { return this; } - public WithNonExpiredToken(): TokenBuilder { + public withNonExpiredToken(): TokenBuilder { this.withExpiresAt(currentTimeUnixSeconds() + 60); this.withExpiresIn(currentTimeUnixSeconds() + 60); this.withIssuedAt(currentTimeUnixSeconds() - 60); @@ -56,12 +56,12 @@ class TokenBuilder { return this; } - public withIssuedAt(issued_at: number): TokenBuilder { + public withIssuedAt(issued_at: number | string): TokenBuilder { this.tokens.issued_at = issued_at; return this; } - public withExpiresIn(expires_in: number): TokenBuilder { + public withExpiresIn(expires_in: number | string): TokenBuilder { this.tokens.expires_in = expires_in; return this; } @@ -136,7 +136,7 @@ class OidcConfigBuilder { public withTestingDefault(): OidcConfigBuilder { this.oidcConfig.configurationName = 'test'; - this.oidcConfig.tokens = new TokenBuilder().WithNonExpiredToken().build(); + this.oidcConfig.tokens = new TokenBuilder().withNonExpiredToken().build(); this.oidcConfig.status = 'NOT_CONNECTED'; this.oidcConfig.state = 'state'; this.oidcConfig.codeVerifier = 'codeVerifier'; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index e8b9d0de5..41435f4b2 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -21,7 +21,7 @@ describe('tokens', () => { }); it('can check non-expired token', () => { - const token = new TokenBuilder().WithNonExpiredToken().build(); + const token = new TokenBuilder().withNonExpiredToken().build(); expect(isTokensValid(token)).toBeTruthy(); }); @@ -53,7 +53,7 @@ describe('tokens', () => { describe('isTokensOidcValid', () => { it('can validate valid token', () => { const token = new TokenBuilder() - .WithNonExpiredToken() + .withNonExpiredToken() .withIdTokenPayload({ iss: oidcServerConfig.issuer, exp: 0, @@ -69,9 +69,9 @@ describe('tokens', () => { describe('_hideTokens', () => { it.each([ - { hideAccessToken: true, expectedAccessToken: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_test' }, - { hideAccessToken: false, expectedAccessToken: 'test_access_token' }, - ])('accesstoken will be hide $hideAccessToken result should be $expectedAccessToken', ({ hideAccessToken, expectedAccessToken }) => { + { hideAccessToken: true, expectedAccessToken: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_test', issued_at: "0", expires_in: "2" }, + { hideAccessToken: false, expectedAccessToken: 'test_access_token', issued_at: 0, expires_in: 2 }, + ])('accesstoken will be hide $hideAccessToken result should be $expectedAccessToken', ({ hideAccessToken, expectedAccessToken, issued_at, expires_in }) => { const token = new TokenBuilder() .withIdTokenPayload({ iss: oidcServerConfig.issuer, @@ -79,12 +79,15 @@ describe('tokens', () => { iat: 0, nonce: null, }) - .WithNonExpiredToken() + .withNonExpiredToken() .withAccessToken('test_access_token') + .withExpiresIn(expires_in) + .withIssuedAt(issued_at) .build(); const oidcConfiguration = new OidcConfigBuilder().withTestingDefault().withHideAccessToken(hideAccessToken).build(); const secureTokens = _hideTokens(token, oidcConfiguration, 'test'); expect(secureTokens.access_token).toBe(expectedAccessToken); + expect(typeof secureTokens.expiresAt).toBe("number"); }); }); }); diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 75e5cb95f..8155d6b26 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -96,6 +96,8 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu if (!tokens.issued_at) { const currentTimeUnixSecond = new Date().getTime() / 1000; tokens.issued_at = currentTimeUnixSecond; + } else if (typeof tokens.issued_at == "string") { + tokens.issued_at = parseInt(tokens.issued_at, 10); } const accessTokenPayload = extractTokenPayload(tokens.access_token); @@ -124,6 +126,8 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu TOKEN.REFRESH_TOKEN + '_' + configurationName; } + const expireIn = typeof tokens.expires_in == "string" ? parseInt(tokens.expires_in, 10) : tokens.expires_in; + const idTokenExpiresAt = _idTokenPayload && _idTokenPayload.exp ? _idTokenPayload.exp @@ -131,7 +135,7 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu const accessTokenExpiresAt = accessTokenPayload && accessTokenPayload.exp ? accessTokenPayload.exp - : tokens.issued_at + tokens.expires_in; + : tokens.issued_at + expireIn; let expiresAt: number; const tokenRenewMode = ( diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 74bc76932..070bbeea6 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,6 +1,6 @@ import { describe, expect,it } from 'vitest'; -import {getValidTokenAsync, isTokensOidcValid} from "./parseTokens"; +import {getValidTokenAsync, isTokensOidcValid, parseOriginalTokens} from "./parseTokens"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -26,6 +26,40 @@ describe('ParseTokens test Suite', () => { }); + const id_token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUwNWZkODljLTM4YzktNGI2Mi04ZjQ3LWI4MGQ0ZTNhYjYxNSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsInN1YiI6ImFkbWluIiwiYXVkIjoiM2FTbk5XUGxZQWQwOGVES3c1UUNpSWVMcWpIdHkxTTVzSGFzcDJDZWREcWYzbmJkZm8xUFo1cXhmbWoyaFhkUyIsImV4cCI6MTY5MDk4NzQ1NCwiYXV0aF90aW1lIjoxNjkwOTg2NTUxLCJpYXQiOjE2OTA5ODY1NTQsImFjciI6IjAiLCJhenAiOiIzYVNuTldQbFlBZDA4ZURLdzVRQ2lJZUxxakh0eTFNNXNIYXNwMkNlZERxZjNuYmRmbzFQWjVxeGZtajJoWGRTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGdyb3VwcyBvZmZsaW5lX2FjY2VzcyIsIm5iZiI6MTY5MDk4NjU1NCwianRpIjoiNjMiLCJub25jZSI6ImNpQkVVOTdaVmRWVSIsImdyb3VwcyI6WyJhZG1pbiJdLCJuYW1lIjoiQWRtaW5pc3RyYXRvciIsInVwZGF0ZWRfYXQiOjE2OTA5ODY1NDV9.2MUdtQR_QtzDY9BTMctG8C4uvg92DgMIUUoJed2cI7WTd5_VEPFW87esDQLw4snVdAJM1_Wf3wB88B2MXFDMCnMTNn0TMnzetRDiG3xlr2LL-geL5SNgwD0Y6RPK_aITjrC9uiQCTj3LPEENrBulNRZPURwaVon9WUVNuuBmMTKd7QKEuFN0zYDoRs0HnXo6WKnFy1rldLGh_JpA3PBUuXt4VMjfGQ7yYEuNn7MkFVDX6OnTffR8jTQp74hREvuRLFjYxfgfgu547X7yIcboOl81D0ZQlP-gfvBOeypZolRLScuqAA3fHBYvE0vCtOM6ObekfeeTDfms75csMLUuZtTR07x32xYC8vdoFsY0sRpMByTqlhsae9VX_rETJ7PIWEfruojzcj47WN9dG0K3pdPiJHEwZ1CKgZfU_cY0gtuAGaIcIjKL0txXCevaiIiIsrgSU_HTjNVybp4WHSAs3h6x0XLz4_91luCylsaoMQbwKOQNwAfr2L74jF6DOg-8DIPb-WClRQzaQtrkx_iv6FtqCB3ogFoZwi6xljdYUc2EHUmoAo-LXal-QAgUXGGzfFU2YOpxV3RyAbMGPm7PfkMVzDsDJwORJNhh38QQ6o88GgNnV28BT-d2G0n7okc0QC6o2IW0jpyCrI6v0hWOBUX2EqiJ5Wao-4LYZfCaRgU"; + const refresh_token ="DEsqDca7nDGSgT6tJPkCwbPy98B8VOC4AA55lOPs03G3hqhZ8WH08REBcwTZg1s0jZyVoA3iCXzm4PPJ096gjV7ZKYyN8vnFKw6P6KLV3tUI6mWFaSROoh1LipThFrkS"; + const access_token ="opqavdgHEYx8nhCdc3iByd1HD0jiYN30LevhJy4f5wIavINXKdh4lQ9C3kA49QF0OH0XeA02"; + describe.each([ + [{ + "access_token":access_token, + "token_type":"Bearer", + "expires_in":"900", // Here a string instead of a number + "refresh_token":refresh_token, + "id_token":id_token + }], + [{ + "access_token":access_token, + "token_type":"Bearer", + "expires_in":900, + "refresh_token":refresh_token, + "id_token":id_token + }], + [{ + "access_token":access_token, + "token_type":"Bearer", + "expires_in":900, + "expiresAt": 1609987454, // Here expiresAt that come from Service Worker + "refresh_token":refresh_token, + "id_token":id_token + }], + ])('getValidTokenAsync', (tokens) => { + it('should parseOriginalTokens', async () => { + // @ts-ignore + const result = parseOriginalTokens(tokens); + expect(typeof result.issuedAt).toEqual("number"); + }); + }); + const idTokenPayload = {iss: "toto", exp: currentTimeUnixSecond +900, iat: currentTimeUnixSecond -900, nonce: "nonce"}; const oidcServerConfiguration = {issuer:"toto"}; const idTokenPayloadExpired = {...idTokenPayload, exp: currentTimeUnixSecond-20}; @@ -42,7 +76,7 @@ describe('ParseTokens test Suite', () => { const oidc = { idTokenPayload, }; - const {isValid} = await isTokensOidcValid(oidc, nonce, oidcServerConfiguration); + const {isValid} = isTokensOidcValid(oidc, nonce, oidcServerConfiguration); expect(isValid).toEqual(expectIsValidToken); }); }); diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index c5ddd8ab9..2acba0385 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -51,10 +51,13 @@ export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Toke return null; } let accessTokenPayload; + const expireIn = typeof tokens.expiresIn == "string" ? parseInt(tokens.expiresIn, 10) : tokens.expiresIn; if (!tokens.issuedAt) { const currentTimeUnixSecond = new Date().getTime() / 1000; tokens.issuedAt = currentTimeUnixSecond; + } else if (typeof tokens.issuedAt == "string") { + tokens.issuedAt = parseInt(tokens.issuedAt, 10); } if (tokens.accessTokenPayload !== undefined) { @@ -65,18 +68,23 @@ export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Toke const _idTokenPayload = tokens.idTokenPayload ? tokens.idTokenPayload : extractTokenPayload(tokens.idToken); const idTokenExpireAt = (_idTokenPayload && _idTokenPayload.exp) ? _idTokenPayload.exp : Number.MAX_VALUE; - const accessTokenExpiresAt = (accessTokenPayload && accessTokenPayload.exp) ? accessTokenPayload.exp : tokens.issuedAt + tokens.expiresIn; + const accessTokenExpiresAt = (accessTokenPayload && accessTokenPayload.exp) ? accessTokenPayload.exp : tokens.issuedAt + expireIn; let expiresAt; - - if (tokenRenewMode === TokenRenewMode.access_token_invalid) { - expiresAt = accessTokenExpiresAt; - } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) { - expiresAt = idTokenExpireAt; - } else { - expiresAt = idTokenExpireAt < accessTokenExpiresAt ? idTokenExpireAt : accessTokenExpiresAt; + if(tokens.expiresAt) + { + expiresAt = tokens.expiresAt; + } + else { + if (tokenRenewMode === TokenRenewMode.access_token_invalid) { + expiresAt = accessTokenExpiresAt; + } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) { + expiresAt = idTokenExpireAt; + } else { + expiresAt = idTokenExpireAt < accessTokenExpiresAt ? idTokenExpireAt : accessTokenExpiresAt; + } } - + const newTokens = { ...tokens, idTokenPayload: _idTokenPayload, accessTokenPayload, expiresAt }; // When refresh_token is not rotated we reuse ald refresh_token if (oldTokens != null && 'refreshToken' in oldTokens && !('refreshToken' in tokens)) { From 9f986c6b576c50b9d87d94e2fc5af0c7521c7bdf Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 3 Aug 2023 09:38:38 +0000 Subject: [PATCH 019/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/public/OidcServiceWorker.js | 5 ++++- packages/react-oidc/package.json | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 398402a57..8dfcd4382 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.0.0", + "version": "7.0.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3ebd70c4b..b500a0106 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.0.0", + "version": "7.0.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/public/OidcServiceWorker.js b/packages/oidc-client/public/OidcServiceWorker.js index 0d3e97871..82a329c80 100644 --- a/packages/oidc-client/public/OidcServiceWorker.js +++ b/packages/oidc-client/public/OidcServiceWorker.js @@ -158,6 +158,8 @@ function _hideTokens(tokens, currentDatabaseElement, configurationName) { if (!tokens.issued_at) { const currentTimeUnixSecond = (/* @__PURE__ */ new Date()).getTime() / 1e3; tokens.issued_at = currentTimeUnixSecond; + } else if (typeof tokens.issued_at == "string") { + tokens.issued_at = parseInt(tokens.issued_at, 10); } const accessTokenPayload = extractTokenPayload(tokens.access_token); const secureTokens = { @@ -181,8 +183,9 @@ function _hideTokens(tokens, currentDatabaseElement, configurationName) { if (tokens.refresh_token) { secureTokens.refresh_token = TOKEN.REFRESH_TOKEN + "_" + configurationName; } + const expireIn = typeof tokens.expires_in == "string" ? parseInt(tokens.expires_in, 10) : tokens.expires_in; const idTokenExpiresAt = _idTokenPayload && _idTokenPayload.exp ? _idTokenPayload.exp : Number.MAX_VALUE; - const accessTokenExpiresAt = accessTokenPayload && accessTokenPayload.exp ? accessTokenPayload.exp : tokens.issued_at + tokens.expires_in; + const accessTokenExpiresAt = accessTokenPayload && accessTokenPayload.exp ? accessTokenPayload.exp : tokens.issued_at + expireIn; let expiresAt; const tokenRenewMode = currentDatabaseElement.oidcConfiguration.token_renew_mode; if (tokenRenewMode === TokenRenewMode.access_token_invalid) { diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index c0015a3db..6522bdc8b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.0.0", + "version": "7.0.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From ae8a60130b4dacfe7a73f6e2262ca1238a07a509 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 4 Aug 2023 14:12:41 +0200 Subject: [PATCH 020/565] feat(oidc): update service worker from version (#1121) (release) --- .github/workflows/npm-publish.yml | 13 +++++ .../src/OidcServiceWorker.ts | 3 ++ .../oidc-client-service-worker/src/version.ts | 1 + packages/oidc-client/README.md | 1 + packages/oidc-client/src/initWorker.ts | 54 +++++++++++-------- packages/oidc-client/src/login.ts | 4 +- packages/oidc-client/src/types.ts | 3 ++ packages/oidc-client/src/version.ts | 1 + packages/react-oidc/README.md | 1 + 9 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/version.ts create mode 100644 packages/oidc-client/src/version.ts diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index b0f6ad62c..46290a5e9 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -132,6 +132,13 @@ jobs: if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' run: pnpm version ${{ steps.tag.outputs.new_version }} working-directory: ./packages/oidc-client-service-worker + + - name: update version.ts ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: | + echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts + working-directory: ./packages/oidc-client-service-worker/src + - name: pnpm ci run: pnpm i --frozen-lockfile @@ -154,6 +161,12 @@ jobs: cat package.json working-directory: ./packages/oidc-client + - name: update version.ts ${{ steps.tag.outputs.new_version }} + if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + run: | + echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts + working-directory: ./packages/oidc-client/src + - name: pnpm ci run: pnpm i --frozen-lockfile working-directory: ./packages/oidc-client diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index e3777ef67..8eeda4ef5 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -1,4 +1,5 @@ import { acceptAnyDomainToken, scriptFilename, TOKEN } from './constants'; +import version from './version'; import { Database, MessageEventData, @@ -347,6 +348,7 @@ const handleMessage = (event: ExtendableMessageEvent) => { tokens: null, status: currentDatabase.status, configurationName, + version }); } else { const tokens = { @@ -370,6 +372,7 @@ const handleMessage = (event: ExtendableMessageEvent) => { tokens, status: currentDatabase.status, configurationName, + version }); } return; diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts new file mode 100644 index 000000000..b70e25dfa --- /dev/null +++ b/packages/oidc-client-service-worker/src/version.ts @@ -0,0 +1 @@ +export default "7.0.1"; \ No newline at end of file diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 96fcb5471..34ad60a0f 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -159,6 +159,7 @@ const configuration = { refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds service_worker_relative_url: String, service_worker_only: Boolean, // default false + service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index e38f718c8..537e3fd5c 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -1,6 +1,7 @@ import { parseOriginalTokens } from './parseTokens.js'; import timer from './timer.js'; import { OidcConfiguration } from './types.js'; +import codeVersion from './version.js'; export const getOperatingSystem = (navigator) => { const nVer = navigator.appVersion; @@ -107,16 +108,24 @@ export const sleepAsync = (milliseconds) => { return new Promise(resolve => timer.setTimeout(resolve, milliseconds)); }; +let keepAliveController ; const keepAlive = () => { try { const operatingSystem = getOperatingSystem(navigator); const minSleepSeconds = operatingSystem.os === 'Android' ? 240 : 150; - const promise = fetch(`/OidcKeepAliveServiceWorker.json?minSleepSeconds=${minSleepSeconds}`); + keepAliveController = new AbortController(); + const promise = fetch(`/OidcKeepAliveServiceWorker.json?minSleepSeconds=${minSleepSeconds}`, { signal: keepAliveController.signal }); promise.catch(error => { console.log(error); }); sleepAsync(minSleepSeconds * 1000).then(keepAlive); } catch (error) { console.log(error); } }; +const stopKeepAlive = () => { + if(keepAliveController) { + keepAliveController.abort(); + } +}; + const isServiceWorkerProxyActiveAsync = () => { return fetch('/OidcKeepAliveServiceWorker.json', { headers: { @@ -183,26 +192,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName } catch (err) { return null; } - - const unregisterAsync = async () => { - return await registration.unregister(); - }; - - registration.addEventListener('updatefound', () => { - const newWorker = registration.installing; - newWorker.addEventListener('statechange', () => { - switch (newWorker.state) { - case 'installed': - if (navigator.serviceWorker.controller) { - registration.unregister().then(() => { - window.location.reload(); - }); - } - break; - } - }); - }); - + const clearAsync = async (status) => { return sendMessageAsync(registration)({ type: 'clear', data: { status }, configurationName }); }; @@ -219,6 +209,25 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName }, configurationName, }); + + // @ts-ignore + const serviceWorkerVersion = result.version; + if(serviceWorkerVersion !== codeVersion) { + console.warn(`Service worker ${serviceWorkerVersion} version mismatch with js client version ${codeVersion}, unregistering and reloading`); + + if(oidcConfiguration.service_worker_update_require_callback) + { + await oidcConfiguration.service_worker_update_require_callback(registration, stopKeepAlive); + } else { + stopKeepAlive(); + await registration.update(); + const isSuccess = await registration.unregister(); + console.log(`Service worker unregistering ${isSuccess}`) + await sleepAsync(2000); + window.location.reload(); + } + } + // @ts-ignore return { tokens: parseOriginalTokens(result.tokens, null, oidcConfiguration.token_renew_mode), status: result.status }; }; @@ -244,7 +253,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName sessionStorage['oidc.nonce'] = nonce.nonce; return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName }); }; - const getNonceAsync = async () => { + const getNonceAsync = async () => { // @ts-ignore const result = await sendMessageAsync(registration)({ type: 'getNonce', data: null, configurationName }); // @ts-ignore @@ -310,7 +319,6 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName getSessionStateAsync, setNonceAsync, getNonceAsync, - unregisterAsync, setLoginParams, getLoginParams, getStateAsync, diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index f738b1791..4e166b29c 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -43,9 +43,9 @@ export const defaultLoginAsync = (window, configurationName, configuration:OidcC let storage; if (serviceWorker) { serviceWorker.setLoginParams(configurationName, { callbackPath: url, extras: originExtras }); - serviceWorker.startKeepAliveServiceWorker(); await serviceWorker.initAsync(oidcServerConfiguration, 'loginAsync', configuration); await serviceWorker.setNonceAsync(nonce); + serviceWorker.startKeepAliveServiceWorker(); storage = serviceWorker; } else { const session = initSession(configurationName, configuration.storage ?? sessionStorage); @@ -88,12 +88,12 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { let getLoginParams; let state; if (serviceWorker) { - serviceWorker.startKeepAliveServiceWorker(); await serviceWorker.initAsync(oidcServerConfiguration, 'loginCallbackAsync', configuration); await serviceWorker.setSessionStateAsync(sessionState); nonceData = await serviceWorker.getNonceAsync(); getLoginParams = serviceWorker.getLoginParams(oidc.configurationName); state = await serviceWorker.getStateAsync(); + serviceWorker.startKeepAliveServiceWorker(); storage = serviceWorker; } else { const session = initSession(oidc.configurationName, configuration.storage ?? sessionStorage); diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index 7ac7c58ea..47e061106 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -2,6 +2,8 @@ export type Fetch = typeof window.fetch; export type LogoutToken = 'access_token' | 'refresh_token'; +export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAlive:Function) => Promise; + export type OidcConfiguration = { client_id: string; redirect_uri: string; @@ -18,6 +20,7 @@ export type OidcConfiguration = { service_worker_relative_url?:string; service_worker_only?:boolean; service_worker_convert_all_requests_to_cors?:boolean; + service_worker_update_require_callback?:ServiceWorkerUpdateRequireCallback; extras?:StringMap; token_request_extras?:StringMap; storage?: Storage; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts new file mode 100644 index 000000000..44ffa6af5 --- /dev/null +++ b/packages/oidc-client/src/version.ts @@ -0,0 +1 @@ +export default "7.0.1"; \ No newline at end of file diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 3ee51d99b..f4ebc7081 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -174,6 +174,7 @@ const configuration = { refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds service_worker_relative_url: String, service_worker_only: Boolean, // default false + service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) From c74edeb0380c726fb861f499ba3811fa7317d343 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 4 Aug 2023 12:16:01 +0000 Subject: [PATCH 021/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/public/OidcServiceWorker.js | 7 +++++-- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 8dfcd4382..ba4b2422b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.0.1", + "version": "7.1.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index b70e25dfa..e5d44bc30 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default "7.0.1"; \ No newline at end of file +export default '7.1.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b500a0106..f9c809450 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.0.1", + "version": "7.1.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/public/OidcServiceWorker.js b/packages/oidc-client/public/OidcServiceWorker.js index 82a329c80..2d2a54661 100644 --- a/packages/oidc-client/public/OidcServiceWorker.js +++ b/packages/oidc-client/public/OidcServiceWorker.js @@ -12,6 +12,7 @@ const TokenRenewMode = { id_token_invalid: "id_token_invalid" }; const openidWellknownUrlEndWith = "/.well-known/openid-configuration"; +const version = "7.1.0"; function checkDomain(domains, endpoint) { if (!endpoint) { return; @@ -486,7 +487,8 @@ const handleMessage = (event) => { port.postMessage({ tokens: null, status: currentDatabase.status, - configurationName + configurationName, + version }); } else { const tokens = { @@ -504,7 +506,8 @@ const handleMessage = (event) => { port.postMessage({ tokens, status: currentDatabase.status, - configurationName + configurationName, + version }); } return; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 44ffa6af5..e5d44bc30 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default "7.0.1"; \ No newline at end of file +export default '7.1.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6522bdc8b..4efbfd581 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.0.1", + "version": "7.1.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 60ea58b266c4173e3a92b8637d9abd09cca0ea1a Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 4 Aug 2023 16:09:10 +0200 Subject: [PATCH 022/565] feat(oidc-service-worker): copy become manual (#1120) (release) --- examples/nextjs-demo/package.json | 3 +- examples/oidc-client-demo/package.json | 3 +- examples/react-oidc-demo/package.json | 3 +- .../public/OidcServiceWorker.js.map | 1 - packages/oidc-client/README.md | 11 +++++++ ...tall.mjs => copy-service-worker-files.mjs} | 13 +++++--- packages/oidc-client/package.json | 2 +- packages/react-oidc/README.md | 10 +++++++ ...tall.mjs => copy-service-worker-files.mjs} | 12 ++++---- packages/react-oidc/package.json | 2 +- readme.md | 22 ++++++++++++++ scripts/publish-changelog.js | 16 ---------- scripts/twitter.js | 30 ------------------- 13 files changed, 67 insertions(+), 61 deletions(-) delete mode 100644 examples/react-oidc-demo/public/OidcServiceWorker.js.map rename packages/oidc-client/bin/{post-install.mjs => copy-service-worker-files.mjs} (73%) rename packages/react-oidc/bin/{post-install.mjs => copy-service-worker-files.mjs} (71%) delete mode 100644 scripts/publish-changelog.js delete mode 100644 scripts/twitter.js diff --git a/examples/nextjs-demo/package.json b/examples/nextjs-demo/package.json index 4ba56d7f6..48f54b625 100644 --- a/examples/nextjs-demo/package.json +++ b/examples/nextjs-demo/package.json @@ -3,7 +3,8 @@ "scripts": { "dev": "next dev -p 3001", "build": "next build", - "start": "next start" + "start": "next start", + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index b64e62557..582b02dfd 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -14,7 +14,8 @@ "start": "vite", "build": "vite build", "serve": "vite preview", - "clean": "rimraf dist" + "clean": "rimraf dist", + "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" }, "browserslist": { "production": [ diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 7f30f2314..65d4fab0a 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -14,7 +14,8 @@ "start": "vite", "build": "vite build", "serve": "vite preview", - "clean": "rimraf dist" + "clean": "rimraf dist", + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, "dependencies": { "@axa-fr/react-oidc":"workspace:*", diff --git a/examples/react-oidc-demo/public/OidcServiceWorker.js.map b/examples/react-oidc-demo/public/OidcServiceWorker.js.map deleted file mode 100644 index 07cfaecde..000000000 --- a/examples/react-oidc-demo/public/OidcServiceWorker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OidcServiceWorker.js","sources":["../src/constants.ts","../src/utils/domains.ts","../src/utils/strings.ts","../src/utils/tokens.ts","../src/utils/serializeHeaders.ts","../src/utils/sleep.ts","../src/utils/codeVerifier.ts","../src/OidcServiceWorker.ts"],"sourcesContent":["const scriptFilename = 'OidcTrustedDomains.js'; /* global trustedDomains */\r\nconst acceptAnyDomainToken = '*';\r\n\r\ntype TokenType = {\r\n readonly REFRESH_TOKEN: string;\r\n readonly ACCESS_TOKEN: string;\r\n readonly NONCE_TOKEN: string;\r\n readonly CODE_VERIFIER: string;\r\n};\r\n\r\nconst TOKEN: TokenType = {\r\n REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\r\n ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\r\n NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER',\r\n CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER',\r\n};\r\n\r\ntype TokenRenewModeType = {\r\n readonly access_token_or_id_token_invalid: string;\r\n readonly access_token_invalid: string;\r\n readonly id_token_invalid: string;\r\n};\r\n\r\nconst TokenRenewMode: TokenRenewModeType = {\r\n access_token_or_id_token_invalid: 'access_token_or_id_token_invalid',\r\n access_token_invalid: 'access_token_invalid',\r\n id_token_invalid: 'id_token_invalid',\r\n};\r\n\r\nconst openidWellknownUrlEndWith = '/.well-known/openid-configuration';\r\n\r\nexport { scriptFilename, acceptAnyDomainToken, TOKEN, TokenRenewMode, openidWellknownUrlEndWith };\r\n","import { DomainDetails, TrustedDomains } from './../types';\r\nimport {\r\n acceptAnyDomainToken,\r\n openidWellknownUrlEndWith,\r\n scriptFilename,\r\n} from '../constants';\r\nimport { Database, Domain, OidcConfig } from '../types';\r\n\r\nfunction checkDomain(domains: Domain[], endpoint: string) {\r\n if (!endpoint) {\r\n return;\r\n }\r\n\r\n const domain = domains.find((domain) => {\r\n let testable: RegExp;\r\n\r\n if (typeof domain === 'string') {\r\n testable = new RegExp(`^${domain}`);\r\n } else {\r\n testable = domain;\r\n }\r\n\r\n return testable.test?.(endpoint);\r\n });\r\n if (!domain) {\r\n throw new Error(\r\n 'Domain ' +\r\n endpoint +\r\n ' is not trusted, please add domain in ' +\r\n scriptFilename\r\n );\r\n }\r\n}\r\n\r\nexport const getDomains = (trustedDomain: Domain[] | DomainDetails, type: 'oidc' | 'accessToken') => {\r\n if(Array.isArray(trustedDomain)) {\r\n return trustedDomain;\r\n }\r\n\r\n return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? [];\r\n}\r\n\r\nconst getCurrentDatabaseDomain = (\r\n database: Database,\r\n url: string,\r\n trustedDomains: TrustedDomains\r\n) => {\r\n if (url.endsWith(openidWellknownUrlEndWith)) {\r\n return null;\r\n }\r\n for (const [key, currentDatabase] of Object.entries(database)) {\r\n const oidcServerConfiguration = currentDatabase.oidcServerConfiguration;\r\n\r\n if (!oidcServerConfiguration) {\r\n continue;\r\n }\r\n\r\n if (\r\n oidcServerConfiguration.tokenEndpoint &&\r\n url === oidcServerConfiguration.tokenEndpoint\r\n ) {\r\n continue;\r\n }\r\n if (\r\n oidcServerConfiguration.revocationEndpoint &&\r\n url === oidcServerConfiguration.revocationEndpoint\r\n ) {\r\n continue;\r\n }\r\n const trustedDomain = trustedDomains == null ? [] : trustedDomains[key];\r\n\r\n const domains = getDomains(trustedDomain, 'accessToken');\r\n const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint\r\n ? [oidcServerConfiguration.userInfoEndpoint, ...domains]\r\n : [...domains];\r\n\r\n let hasToSendToken = false;\r\n if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) {\r\n hasToSendToken = true;\r\n } else {\r\n for (let i = 0; i < domainsToSendTokens.length; i++) {\r\n let domain = domainsToSendTokens[i];\r\n\r\n if (typeof domain === 'string') {\r\n domain = new RegExp(`^${domain}`);\r\n }\r\n\r\n if (domain.test?.(url)) {\r\n hasToSendToken = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasToSendToken) {\r\n if (!currentDatabase.tokens) {\r\n return null;\r\n }\r\n return currentDatabase;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport { checkDomain, getCurrentDatabaseDomain };\r\n","/**\r\n * Count occurances of letter in string\r\n * @param str\r\n * @param find\r\n * @returns\r\n */\r\nexport function countLetter(str: string, find: string) {\r\n return str.split(find).length - 1;\r\n}\r\n","import { TOKEN, TokenRenewMode } from '../constants';\r\nimport { OidcConfig, OidcConfiguration, OidcServerConfiguration, Tokens } from '../types';\r\nimport { countLetter } from './strings';\r\n\r\nfunction parseJwt(token: string) {\r\n return JSON.parse(\r\n b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/'))\r\n );\r\n}\r\nfunction b64DecodeUnicode(str: string) {\r\n return decodeURIComponent(\r\n Array.prototype.map\r\n .call(\r\n atob(str),\r\n (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n )\r\n .join('')\r\n );\r\n}\r\n\r\nfunction computeTimeLeft(\r\n refreshTimeBeforeTokensExpirationInSecond: number,\r\n expiresAt: number\r\n) {\r\n const currentTimeUnixSecond = new Date().getTime() / 1000;\r\n return Math.round(\r\n expiresAt -\r\n refreshTimeBeforeTokensExpirationInSecond -\r\n currentTimeUnixSecond\r\n );\r\n}\r\n\r\nfunction isTokensValid(tokens: Tokens | null) {\r\n if (!tokens) {\r\n return false;\r\n }\r\n return computeTimeLeft(0, tokens.expiresAt) > 0;\r\n}\r\n\r\nconst extractTokenPayload = (token?: string) => {\r\n try {\r\n if (!token) {\r\n return null;\r\n }\r\n if (countLetter(token, '.') === 2) {\r\n return parseJwt(token);\r\n } else {\r\n return null;\r\n }\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n return null;\r\n};\r\n\r\n// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation (excluding rules #1, #4, #5, #7, #8, #12, and #13 which did not apply).\r\n// https://github.com/openid/AppAuth-JS/issues/65\r\nconst isTokensOidcValid = (\r\n tokens: Tokens,\r\n nonce: string | null,\r\n oidcServerConfiguration: OidcServerConfiguration\r\n): { isValid: boolean; reason: string } => {\r\n if (tokens.idTokenPayload) {\r\n const idTokenPayload = tokens.idTokenPayload;\r\n // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim.\r\n if (oidcServerConfiguration.issuer !== idTokenPayload.iss) {\r\n return { isValid: false, reason: 'Issuer does not match' };\r\n }\r\n // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client.\r\n\r\n // 6: If the ID Token is received via direct communication between the Client and the Token Endpoint (which it is in this flow), the TLS server validation MAY be used to validate the issuer in place of checking the token signature. The Client MUST validate the signature of all other ID Tokens according to JWS [JWS] using the algorithm specified in the JWT alg Header Parameter. The Client MUST use the keys provided by the Issuer.\r\n\r\n // 9: The current time MUST be before the time represented by the exp Claim.\r\n const currentTimeUnixSecond = new Date().getTime() / 1000;\r\n if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) {\r\n return { isValid: false, reason: 'Token expired' };\r\n }\r\n // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific.\r\n const timeInSevenDays = 60 * 60 * 24 * 7;\r\n if (\r\n idTokenPayload.iat &&\r\n idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond\r\n ) {\r\n return { isValid: false, reason: 'Token is used from too long time' };\r\n }\r\n // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific.\r\n if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) {\r\n return { isValid: false, reason: 'Nonce does not match' };\r\n }\r\n }\r\n return { isValid: true, reason: '' };\r\n};\r\n\r\nfunction _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string) {\r\n if (!tokens.issued_at) {\r\n const currentTimeUnixSecond = new Date().getTime() / 1000;\r\n tokens.issued_at = currentTimeUnixSecond;\r\n }\r\n\r\n const accessTokenPayload = extractTokenPayload(tokens.access_token);\r\n const secureTokens = {\r\n ...tokens,\r\n accessTokenPayload,\r\n };\r\n if (currentDatabaseElement.hideAccessToken) {\r\n secureTokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\r\n }\r\n tokens.accessTokenPayload = accessTokenPayload;\r\n\r\n let _idTokenPayload = null;\r\n if (tokens.id_token) {\r\n _idTokenPayload = extractTokenPayload(tokens.id_token);\r\n tokens.idTokenPayload = {..._idTokenPayload};\r\n if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) {\r\n const keyNonce =\r\n TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName;\r\n _idTokenPayload.nonce = keyNonce;\r\n }\r\n secureTokens.idTokenPayload = _idTokenPayload;\r\n }\r\n if (tokens.refresh_token) {\r\n secureTokens.refresh_token =\r\n TOKEN.REFRESH_TOKEN + '_' + configurationName;\r\n }\r\n\r\n const idTokenExpiresAt =\r\n _idTokenPayload && _idTokenPayload.exp\r\n ? _idTokenPayload.exp\r\n : Number.MAX_VALUE;\r\n const accessTokenExpiresAt =\r\n accessTokenPayload && accessTokenPayload.exp\r\n ? accessTokenPayload.exp\r\n : tokens.issued_at + tokens.expires_in;\r\n\r\n let expiresAt: number;\r\n const tokenRenewMode = (\r\n currentDatabaseElement.oidcConfiguration as OidcConfiguration\r\n ).token_renew_mode;\r\n if (tokenRenewMode === TokenRenewMode.access_token_invalid) {\r\n expiresAt = accessTokenExpiresAt;\r\n } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) {\r\n expiresAt = idTokenExpiresAt;\r\n } else {\r\n expiresAt =\r\n idTokenExpiresAt < accessTokenExpiresAt\r\n ? idTokenExpiresAt\r\n : accessTokenExpiresAt;\r\n }\r\n secureTokens.expiresAt = expiresAt;\r\n\r\n tokens.expiresAt = expiresAt;\r\n const nonce = currentDatabaseElement.nonce\r\n ? currentDatabaseElement.nonce.nonce\r\n : null;\r\n const {isValid, reason} = isTokensOidcValid(\r\n tokens,\r\n nonce,\r\n currentDatabaseElement.oidcServerConfiguration as OidcServerConfiguration\r\n ); //TODO: Type assertion, could be null.\r\n if (!isValid) {\r\n throw Error(`Tokens are not OpenID valid, reason: ${reason}`);\r\n }\r\n\r\n // When refresh_token is not rotated we reuse ald refresh_token\r\n if (\r\n currentDatabaseElement.tokens != null &&\r\n 'refresh_token' in currentDatabaseElement.tokens &&\r\n !('refresh_token' in tokens)\r\n ) {\r\n const refreshToken = currentDatabaseElement.tokens.refresh_token;\r\n\r\n currentDatabaseElement.tokens = {\r\n ...tokens,\r\n refresh_token: refreshToken,\r\n };\r\n } else {\r\n currentDatabaseElement.tokens = tokens;\r\n }\r\n\r\n currentDatabaseElement.status = 'LOGGED_IN';\r\n return secureTokens;\r\n}\r\n\r\nfunction hideTokens(currentDatabaseElement: OidcConfig) {\r\n const configurationName = currentDatabaseElement.configurationName;\r\n return (response: Response) => {\r\n if (response.status !== 200) {\r\n return response;\r\n }\r\n return response.json().then((tokens: Tokens) => {\r\n const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName);\r\n const body = JSON.stringify(secureTokens);\r\n return new Response(body, response);\r\n });\r\n };\r\n}\r\n\r\nexport {\r\n b64DecodeUnicode,\r\n computeTimeLeft,\r\n isTokensValid,\r\n extractTokenPayload,\r\n isTokensOidcValid,\r\n hideTokens,\r\n _hideTokens\r\n};\r\n","import { FetchHeaders } from '../types';\r\n\r\nfunction serializeHeaders(headers: Headers) {\r\n const headersObj: Record = {};\r\n for (const key of (headers as FetchHeaders).keys()) {\r\n if (headers.has(key)) {\r\n headersObj[key] = headers.get(key) as string;\r\n }\r\n }\r\n return headersObj;\r\n}\r\nexport {serializeHeaders};","const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\r\nexport { sleep };\r\n","\r\n\r\nexport function replaceCodeVerifier(codeVerifier:string, newCodeVerifier:string):string {\r\n const regex = /code_verifier=[A-Za-z0-9_-]+/i;\r\n return codeVerifier.replace(regex, `code_verifier=${newCodeVerifier}`);\r\n}","import { acceptAnyDomainToken, TOKEN, scriptFilename } from './constants';\r\nimport {\r\n TrustedDomains,\r\n Database,\r\n OidcConfig,\r\n OidcConfiguration,\r\n MessageEventData,\r\n // TrustedDomainsShowAccessToken,\r\n} from './types';\r\nimport {\r\n checkDomain,\r\n getCurrentDatabaseDomain,\r\n hideTokens,\r\n isTokensValid,\r\n serializeHeaders,\r\n sleep,\r\n getDomains,\r\n} from './utils';\r\nimport {replaceCodeVerifier} from \"./utils/codeVerifier\";\r\n\r\nconst _self = self as ServiceWorkerGlobalScope & typeof globalThis;\r\n\r\ndeclare let trustedDomains: TrustedDomains;\r\n\r\n_self.importScripts(scriptFilename);\r\n\r\nconst id = Math.round(new Date().getTime() / 1000).toString();\r\n\r\nconst keepAliveJsonFilename = 'OidcKeepAliveServiceWorker.json';\r\nconst handleInstall = (event: ExtendableEvent) => {\r\n console.log('[OidcServiceWorker] service worker installed ' + id);\r\n event.waitUntil(_self.skipWaiting());\r\n};\r\n\r\nconst handleActivate = (event: ExtendableEvent) => {\r\n console.log('[OidcServiceWorker] service worker activated ' + id);\r\n event.waitUntil(_self.clients.claim());\r\n};\r\n\r\nlet currentLoginCallbackConfigurationName: string | null = null;\r\nconst database: Database = {\r\n default: {\r\n configurationName: 'default',\r\n tokens: null,\r\n status: null,\r\n state: null,\r\n codeVerifier: null,\r\n nonce: null,\r\n oidcServerConfiguration: null,\r\n hideAccessToken: true,\r\n },\r\n};\r\n\r\nconst getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => {\r\n const databases: OidcConfig[] = [];\r\n for (const [, value] of Object.entries(database)) {\r\n if (\r\n value.oidcServerConfiguration != null &&\r\n url.startsWith(value.oidcServerConfiguration.tokenEndpoint)\r\n ) {\r\n databases.push(value);\r\n } else if (\r\n value.oidcServerConfiguration != null &&\r\n value.oidcServerConfiguration.revocationEndpoint &&\r\n url.startsWith(value.oidcServerConfiguration.revocationEndpoint)\r\n ) {\r\n databases.push(value);\r\n }\r\n }\r\n return databases;\r\n};\r\n\r\nconst keepAliveAsync = async (event: FetchEvent) => {\r\n const originalRequest = event.request;\r\n const isFromVanilla = originalRequest.headers.has('oidc-vanilla');\r\n const init = { status: 200, statusText: 'oidc-service-worker' };\r\n const response = new Response('{}', init);\r\n if (!isFromVanilla) {\r\n const originalRequestUrl = new URL(originalRequest.url);\r\n const minSleepSeconds = Number(originalRequestUrl.searchParams.get('minSleepSeconds')) || 240;\r\n for (let i = 0; i < minSleepSeconds; i++) {\r\n await sleep(1000 + Math.floor(Math.random() * 1000));\r\n const cache = await caches.open('oidc_dummy_cache');\r\n await cache.put(event.request, response.clone());\r\n }\r\n }\r\n return response;\r\n};\r\n\r\nconst handleFetch = async (event: FetchEvent) => {\r\n const originalRequest = event.request;\r\n const url = originalRequest.url;\r\n if (originalRequest.url.includes(keepAliveJsonFilename)) {\r\n event.respondWith(keepAliveAsync(event));\r\n return;\r\n }\r\n\r\n const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain(\r\n database,\r\n originalRequest.url,\r\n trustedDomains\r\n );\r\n if (\r\n currentDatabaseForRequestAccessToken &&\r\n currentDatabaseForRequestAccessToken.tokens &&\r\n currentDatabaseForRequestAccessToken.tokens.access_token\r\n ) {\r\n while (\r\n currentDatabaseForRequestAccessToken.tokens &&\r\n !isTokensValid(currentDatabaseForRequestAccessToken.tokens)\r\n ) {\r\n await sleep(200);\r\n }\r\n const newRequest =\r\n originalRequest.mode == 'navigate'\r\n ? new Request(originalRequest, {\r\n headers: {\r\n ...serializeHeaders(originalRequest.headers),\r\n authorization:\r\n 'Bearer ' +\r\n currentDatabaseForRequestAccessToken.tokens.access_token,\r\n },\r\n })\r\n : new Request(originalRequest, {\r\n headers: {\r\n ...serializeHeaders(originalRequest.headers),\r\n authorization:\r\n 'Bearer ' +\r\n currentDatabaseForRequestAccessToken.tokens.access_token,\r\n },\r\n mode: (\r\n currentDatabaseForRequestAccessToken.oidcConfiguration as OidcConfiguration\r\n ).service_worker_convert_all_requests_to_cors\r\n ? 'cors'\r\n : originalRequest.mode,\r\n });\r\n\r\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\r\n event.waitUntil(event.respondWith(fetch(newRequest)));\r\n\r\n return;\r\n }\r\n\r\n if (event.request.method !== 'POST') {\r\n return;\r\n }\r\n\r\n let currentDatabase: OidcConfig | null = null;\r\n const currentDatabases = getCurrentDatabasesTokenEndpoint(\r\n database,\r\n originalRequest.url\r\n );\r\n const numberDatabase = currentDatabases.length;\r\n if (numberDatabase > 0) {\r\n const maPromesse = new Promise((resolve, reject) => {\r\n const clonedRequest = originalRequest.clone();\r\n const response = clonedRequest.text().then((actualBody) => {\r\n if (\r\n actualBody.includes(TOKEN.REFRESH_TOKEN) ||\r\n actualBody.includes(TOKEN.ACCESS_TOKEN)\r\n ) {\r\n let newBody = actualBody;\r\n for (let i = 0; i < numberDatabase; i++) {\r\n const currentDb = currentDatabases[i];\r\n\r\n if (currentDb && currentDb.tokens != null) {\r\n const keyRefreshToken =\r\n TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName;\r\n if (actualBody.includes(keyRefreshToken)) {\r\n newBody = newBody.replace(\r\n keyRefreshToken,\r\n encodeURIComponent(currentDb.tokens.refresh_token as string)\r\n );\r\n currentDatabase = currentDb;\r\n break;\r\n }\r\n const keyAccessToken =\r\n TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName;\r\n if (actualBody.includes(keyAccessToken)) {\r\n newBody = newBody.replace(\r\n keyAccessToken,\r\n encodeURIComponent(currentDb.tokens.access_token)\r\n );\r\n currentDatabase = currentDb;\r\n break;\r\n }\r\n }\r\n }\r\n const fetchPromise = fetch(originalRequest, {\r\n body: newBody,\r\n method: clonedRequest.method,\r\n headers: {\r\n ...serializeHeaders(originalRequest.headers),\r\n },\r\n mode: clonedRequest.mode,\r\n cache: clonedRequest.cache,\r\n redirect: clonedRequest.redirect,\r\n referrer: clonedRequest.referrer,\r\n credentials: clonedRequest.credentials,\r\n integrity: clonedRequest.integrity,\r\n });\r\n\r\n if (\r\n currentDatabase &&\r\n currentDatabase.oidcServerConfiguration != null &&\r\n currentDatabase.oidcServerConfiguration.revocationEndpoint &&\r\n url.startsWith(\r\n currentDatabase.oidcServerConfiguration.revocationEndpoint\r\n )\r\n ) {\r\n return fetchPromise.then(async (response) => {\r\n const text = await response.text();\r\n return new Response(text, response);\r\n });\r\n }\r\n return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); //todo type assertion to OidcConfig but could be null, NEEDS REVIEW\r\n } else if (\r\n actualBody.includes('code_verifier=') &&\r\n currentLoginCallbackConfigurationName\r\n ) {\r\n currentDatabase = database[currentLoginCallbackConfigurationName];\r\n currentLoginCallbackConfigurationName = null;\r\n let newBody = actualBody;\r\n if (currentDatabase && currentDatabase.codeVerifier != null) {\r\n newBody = replaceCodeVerifier(newBody, currentDatabase.codeVerifier);\r\n }\r\n\r\n return fetch(originalRequest, {\r\n body: newBody,\r\n method: clonedRequest.method,\r\n headers: {\r\n ...serializeHeaders(originalRequest.headers),\r\n },\r\n mode: clonedRequest.mode,\r\n cache: clonedRequest.cache,\r\n redirect: clonedRequest.redirect,\r\n referrer: clonedRequest.referrer,\r\n credentials: clonedRequest.credentials,\r\n integrity: clonedRequest.integrity,\r\n }).then(hideTokens(currentDatabase));\r\n }\r\n return undefined;\r\n });\r\n response\r\n .then((r) => {\r\n if (r !== undefined) {\r\n resolve(r);\r\n } else {\r\n console.log('success undefined');\r\n reject(new Error('Response is undefined inside a success'));\r\n }\r\n })\r\n .catch((err) => {\r\n if (err !== undefined) {\r\n reject(err);\r\n } else {\r\n console.log('error undefined');\r\n reject(new Error('Response is undefined inside a error'));\r\n }\r\n });\r\n });\r\n\r\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\r\n event.waitUntil(event.respondWith(maPromesse));\r\n }\r\n};\r\n\r\ntype TrustedDomainsShowAccessToken = {\r\n [key: string]: boolean\r\n}\r\n\r\nconst trustedDomainsShowAccessToken: TrustedDomainsShowAccessToken = {};\r\n\r\nconst handleMessage = (event: ExtendableMessageEvent) => {\r\n const port = event.ports[0];\r\n const data = event.data as MessageEventData;\r\n const configurationName = data.configurationName;\r\n let currentDatabase = database[configurationName];\r\n if(trustedDomains== null){\r\n trustedDomains = {};\r\n }\r\n if (!currentDatabase) {\r\n \r\n if (trustedDomainsShowAccessToken[configurationName] === undefined) {\r\n let trustedDomain = trustedDomains[configurationName];\r\n trustedDomainsShowAccessToken[configurationName] = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken;\r\n }\r\n database[configurationName] = {\r\n tokens: null,\r\n state: null,\r\n codeVerifier: null,\r\n oidcServerConfiguration: null,\r\n oidcConfiguration: undefined,\r\n nonce: null,\r\n status: null,\r\n configurationName,\r\n hideAccessToken: !trustedDomainsShowAccessToken[configurationName],\r\n };\r\n currentDatabase = database[configurationName];\r\n \r\n if (!trustedDomains[configurationName]) {\r\n trustedDomains[configurationName] = [];\r\n }\r\n }\r\n\r\n switch (data.type) {\r\n case 'clear':\r\n currentDatabase.tokens = null;\r\n currentDatabase.state = null;\r\n currentDatabase.codeVerifier = null;\r\n currentDatabase.status = data.data.status;\r\n port.postMessage({ configurationName });\r\n return;\r\n case 'init': {\r\n const oidcServerConfiguration = data.data.oidcServerConfiguration;\r\n let trustedDomain = trustedDomains[configurationName];\r\n const domains = getDomains(trustedDomain, 'oidc');\r\n if (!domains.find((f) => f === acceptAnyDomainToken)) {\r\n [\r\n oidcServerConfiguration.tokenEndpoint,\r\n oidcServerConfiguration.revocationEndpoint,\r\n oidcServerConfiguration.userInfoEndpoint,\r\n oidcServerConfiguration.issuer,\r\n ].forEach((url) => {\r\n checkDomain(domains, url);\r\n });\r\n }\r\n currentDatabase.oidcServerConfiguration = oidcServerConfiguration;\r\n currentDatabase.oidcConfiguration = data.data.oidcConfiguration;\r\n const where = data.data.where;\r\n if (\r\n where === 'loginCallbackAsync' ||\r\n where === 'tryKeepExistingSessionAsync'\r\n ) {\r\n currentLoginCallbackConfigurationName = configurationName;\r\n } else {\r\n currentLoginCallbackConfigurationName = null;\r\n }\r\n\r\n if (!currentDatabase.tokens) {\r\n port.postMessage({\r\n tokens: null,\r\n status: currentDatabase.status,\r\n configurationName,\r\n });\r\n } else {\r\n const tokens = {\r\n ...currentDatabase.tokens,\r\n };\r\n if(currentDatabase.hideAccessToken) {\r\n tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\r\n }\r\n if (tokens.refresh_token) {\r\n tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName;\r\n }\r\n if (\r\n tokens.idTokenPayload &&\r\n tokens.idTokenPayload.nonce &&\r\n currentDatabase.nonce != null\r\n ) {\r\n tokens.idTokenPayload.nonce =\r\n TOKEN.NONCE_TOKEN + '_' + configurationName;\r\n }\r\n port.postMessage({\r\n tokens,\r\n status: currentDatabase.status,\r\n configurationName,\r\n });\r\n }\r\n return;\r\n }\r\n case 'setState':\r\n currentDatabase.state = data.data.state;\r\n port.postMessage({ configurationName });\r\n return;\r\n case 'getState': {\r\n const state = currentDatabase.state;\r\n port.postMessage({ configurationName, state });\r\n return;\r\n }\r\n case 'setCodeVerifier':\r\n currentDatabase.codeVerifier = data.data.codeVerifier;\r\n port.postMessage({ configurationName });\r\n return;\r\n case 'getCodeVerifier': {\r\n port.postMessage({\r\n configurationName,\r\n codeVerifier: currentDatabase.codeVerifier != null ? TOKEN.CODE_VERIFIER + '_' + configurationName : null,\r\n });\r\n return;\r\n }\r\n case 'setSessionState':\r\n currentDatabase.sessionState = data.data.sessionState;\r\n port.postMessage({ configurationName });\r\n return;\r\n case 'getSessionState': {\r\n const sessionState = currentDatabase.sessionState;\r\n port.postMessage({ configurationName, sessionState });\r\n return;\r\n }\r\n case 'setNonce': {\r\n let nonce = data.data.nonce;\r\n if (nonce) {\r\n currentDatabase.nonce = nonce;\r\n }\r\n port.postMessage({configurationName});\r\n return;\r\n }\r\n case 'getNonce': {\r\n const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName;\r\n const nonce = currentDatabase.nonce ? keyNonce : null;\r\n port.postMessage({configurationName, nonce});\r\n return;\r\n }\r\n default:\r\n currentDatabase.items = { ...data.data };\r\n port.postMessage({ configurationName });\r\n }\r\n};\r\n\r\n_self.addEventListener('install', handleInstall);\r\n_self.addEventListener('activate', handleActivate);\r\n_self.addEventListener('fetch', handleFetch);\r\n_self.addEventListener('message', handleMessage);\r\n"],"names":["domain","database","trustedDomains","response"],"mappings":"AAAA,MAAM,iBAAiB;AACvB,MAAM,uBAAuB;AAS7B,MAAM,QAAmB;AAAA,EACvB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AACjB;AAQA,MAAM,iBAAqC;AAAA,EACzC,kCAAkC;AAAA,EAClC,sBAAsB;AAAA,EACtB,kBAAkB;AACpB;AAEA,MAAM,4BAA4B;ACrBlC,SAAS,YAAY,SAAmB,UAAkB;AACxD,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,SAAS,QAAQ,KAAK,CAACA,YAAW;ADb1C;ACcQ,QAAA;AAEA,QAAA,OAAOA,YAAW,UAAU;AAC9B,iBAAW,IAAI,OAAO,IAAIA,OAAM,EAAE;AAAA,IAAA,OAC7B;AACMA,iBAAAA;AAAAA,IACb;AAEO,YAAA,cAAS,SAAT,kCAAgB;AAAA,EAAQ,CAChC;AACD,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,YACE,WACA,2CACA;AAAA,IAAA;AAAA,EAEN;AACF;AAEa,MAAA,aAAa,CAAC,eAAyC,SAAiC;AAChG,MAAA,MAAM,QAAQ,aAAa,GAAG;AACxB,WAAA;AAAA,EACT;AAEA,SAAO,cAAc,GAAG,IAAI,SAAS,KAAK,cAAc,WAAW;AACrE;AAEA,MAAM,2BAA2B,CAC/BC,WACA,KACAC,oBACG;AD9CL;AC+CM,MAAA,IAAI,SAAS,yBAAyB,GAAG;AACpC,WAAA;AAAA,EACT;AACA,aAAW,CAAC,KAAK,eAAe,KAAK,OAAO,QAAoBD,SAAQ,GAAG;AACzE,UAAM,0BAA0B,gBAAgB;AAEhD,QAAI,CAAC,yBAAyB;AAC5B;AAAA,IACF;AAEA,QACE,wBAAwB,iBACxB,QAAQ,wBAAwB,eAChC;AACA;AAAA,IACF;AACA,QACE,wBAAwB,sBACxB,QAAQ,wBAAwB,oBAChC;AACA;AAAA,IACF;AACA,UAAM,gBAAgBC,mBAAkB,OAAO,CAAA,IAAKA,gBAAe,GAAG;AAEhE,UAAA,UAAU,WAAW,eAAe,aAAa;AACjD,UAAA,sBAAsB,wBAAwB,mBAChD,CAAC,wBAAwB,kBAAkB,GAAG,OAAO,IACrD,CAAC,GAAG,OAAO;AAEf,QAAI,iBAAiB;AACrB,QAAI,oBAAoB,KAAK,CAAC,MAAM,MAAM,oBAAoB,GAAG;AAC9C,uBAAA;AAAA,IAAA,OACZ;AACL,eAAS,IAAI,GAAG,IAAI,oBAAoB,QAAQ,KAAK;AAC/C,YAAA,SAAS,oBAAoB,CAAC;AAE9B,YAAA,OAAO,WAAW,UAAU;AAC9B,mBAAS,IAAI,OAAO,IAAI,MAAM,EAAE;AAAA,QAClC;AAEI,aAAA,YAAO,SAAP,gCAAc,MAAM;AACL,2BAAA;AACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,gBAAgB;AACd,UAAA,CAAC,gBAAgB,QAAQ;AACpB,eAAA;AAAA,MACT;AACO,aAAA;AAAA,IACT;AAAA,EACF;AACO,SAAA;AACT;AChGgB,SAAA,YAAY,KAAa,MAAc;AACrD,SAAO,IAAI,MAAM,IAAI,EAAE,SAAS;AAClC;ACJA,SAAS,SAAS,OAAe;AAC/B,SAAO,KAAK;AAAA,IACV,iBAAiB,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,EAAA;AAE5E;AACA,SAAS,iBAAiB,KAAa;AAC9B,SAAA;AAAA,IACL,MAAM,UAAU,IACb;AAAA,MACC,KAAK,GAAG;AAAA,MACR,CAAC,MAAM,OAAO,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AAAA,IAAA,EAE5D,KAAK,EAAE;AAAA,EAAA;AAEd;AAEA,SAAS,gBACP,2CACA,WACA;AACA,QAAM,yBAAwB,oBAAI,KAAK,GAAE,YAAY;AACrD,SAAO,KAAK;AAAA,IACV,YACE,4CACA;AAAA,EAAA;AAEN;AAEA,SAAS,cAAc,QAAuB;AAC5C,MAAI,CAAC,QAAQ;AACJ,WAAA;AAAA,EACT;AACA,SAAO,gBAAgB,GAAG,OAAO,SAAS,IAAI;AAChD;AAEA,MAAM,sBAAsB,CAAC,UAAmB;AAC1C,MAAA;AACF,QAAI,CAAC,OAAO;AACH,aAAA;AAAA,IACT;AACA,QAAI,YAAY,OAAO,GAAG,MAAM,GAAG;AACjC,aAAO,SAAS,KAAK;AAAA,IAAA,OAChB;AACE,aAAA;AAAA,IACT;AAAA,WACO,GAAG;AACV,YAAQ,KAAK,CAAC;AAAA,EAChB;AACO,SAAA;AACT;AAIA,MAAM,oBAAoB,CACxB,QACA,OACA,4BACyC;AACzC,MAAI,OAAO,gBAAgB;AACzB,UAAM,iBAAiB,OAAO;AAE1B,QAAA,wBAAwB,WAAW,eAAe,KAAK;AACzD,aAAO,EAAE,SAAS,OAAO,QAAQ,wBAAwB;AAAA,IAC3D;AAMA,UAAM,yBAAwB,oBAAI,KAAK,GAAE,YAAY;AACrD,QAAI,eAAe,OAAO,eAAe,MAAM,uBAAuB;AACpE,aAAO,EAAE,SAAS,OAAO,QAAQ,gBAAgB;AAAA,IACnD;AAEM,UAAA,kBAAkB,KAAK,KAAK,KAAK;AACvC,QACE,eAAe,OACf,eAAe,MAAM,kBAAkB,uBACvC;AACA,aAAO,EAAE,SAAS,OAAO,QAAQ,mCAAmC;AAAA,IACtE;AAEA,QAAI,SAAS,eAAe,SAAS,eAAe,UAAU,OAAO;AACnE,aAAO,EAAE,SAAS,OAAO,QAAQ,uBAAuB;AAAA,IAC1D;AAAA,EACF;AACA,SAAO,EAAE,SAAS,MAAM,QAAQ,GAAG;AACrC;AAEA,SAAS,YAAY,QAAgB,wBAAoC,mBAA2B;AAC9F,MAAA,CAAC,OAAO,WAAW;AACrB,UAAM,yBAAwB,oBAAI,KAAK,GAAE,YAAY;AACrD,WAAO,YAAY;AAAA,EACrB;AAEM,QAAA,qBAAqB,oBAAoB,OAAO,YAAY;AAClE,QAAM,eAAe;AAAA,IACnB,GAAG;AAAA,IACH;AAAA,EAAA;AAEF,MAAI,uBAAuB,iBAAiB;AAC7B,iBAAA,eAAe,MAAM,eAAe,MAAM;AAAA,EACzD;AACA,SAAO,qBAAqB;AAE5B,MAAI,kBAAkB;AACtB,MAAI,OAAO,UAAU;AACD,sBAAA,oBAAoB,OAAO,QAAQ;AAC9C,WAAA,iBAAiB,EAAC,GAAG;AAC5B,QAAI,gBAAgB,SAAS,uBAAuB,SAAS,MAAM;AACjE,YAAM,WACF,MAAM,cAAc,MAAM,uBAAuB;AACrD,sBAAgB,QAAQ;AAAA,IAC1B;AACA,iBAAa,iBAAiB;AAAA,EAChC;AACA,MAAI,OAAO,eAAe;AACX,iBAAA,gBACT,MAAM,gBAAgB,MAAM;AAAA,EAClC;AAEA,QAAM,mBACF,mBAAmB,gBAAgB,MAC7B,gBAAgB,MAChB,OAAO;AACX,QAAA,uBACF,sBAAsB,mBAAmB,MACnC,mBAAmB,MACnB,OAAO,YAAY,OAAO;AAEhC,MAAA;AACE,QAAA,iBACF,uBAAuB,kBACzB;AACE,MAAA,mBAAmB,eAAe,sBAAsB;AAC9C,gBAAA;AAAA,EAAA,WACH,mBAAmB,eAAe,kBAAkB;AACjD,gBAAA;AAAA,EAAA,OACP;AAED,gBAAA,mBAAmB,uBACb,mBACA;AAAA,EACZ;AACA,eAAa,YAAY;AAEzB,SAAO,YAAY;AACnB,QAAM,QAAQ,uBAAuB,QAC/B,uBAAuB,MAAM,QAC7B;AACA,QAAA,EAAC,SAAS,OAAA,IAAU;AAAA,IACtB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,EAAA;AAE3B,MAAI,CAAC,SAAS;AACN,UAAA,MAAM,wCAAwC,MAAM,EAAE;AAAA,EAC9D;AAII,MAAA,uBAAuB,UAAU,QACjC,mBAAmB,uBAAuB,UAC1C,EAAE,mBAAmB,SACvB;AACM,UAAA,eAAe,uBAAuB,OAAO;AAEnD,2BAAuB,SAAS;AAAA,MAC9B,GAAG;AAAA,MACH,eAAe;AAAA,IAAA;AAAA,EACjB,OACK;AACL,2BAAuB,SAAS;AAAA,EAClC;AAEA,yBAAuB,SAAS;AACzB,SAAA;AACT;AAEA,SAAS,WAAW,wBAAoC;AACtD,QAAM,oBAAoB,uBAAuB;AACjD,SAAO,CAAC,aAAuB;AACzB,QAAA,SAAS,WAAW,KAAK;AACpB,aAAA;AAAA,IACT;AACA,WAAO,SAAS,KAAA,EAAO,KAAe,CAAC,WAAmB;AACxD,YAAM,eAAe,YAAY,QAAQ,wBAAwB,iBAAiB;AAC5E,YAAA,OAAO,KAAK,UAAU,YAAY;AACjC,aAAA,IAAI,SAAS,MAAM,QAAQ;AAAA,IAAA,CACnC;AAAA,EAAA;AAEL;ACjMA,SAAS,iBAAiB,SAAkB;AAC1C,QAAM,aAAqC,CAAA;AAChC,aAAA,OAAQ,QAAyB,QAAQ;AAC9C,QAAA,QAAQ,IAAI,GAAG,GAAG;AACpB,iBAAW,GAAG,IAAI,QAAQ,IAAI,GAAG;AAAA,IACnC;AAAA,EACF;AACO,SAAA;AACT;ACVA,MAAM,QAAQ,CAAC,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;ACE9D,SAAA,oBAAoB,cAAqB,iBAA+B;AACpF,QAAM,QAAQ;AACd,SAAO,aAAa,QAAQ,OAAO,iBAAiB,eAAe,EAAE;AACzE;ACeA,MAAM,QAAQ;AAId,MAAM,cAAc,cAAc;AAElC,MAAM,KAAK,KAAK,OAAU,oBAAA,QAAO,YAAY,GAAI,EAAE;AAEnD,MAAM,wBAAwB;AAC9B,MAAM,gBAAgB,CAAC,UAA2B;AACxC,UAAA,IAAI,kDAAkD,EAAE;AAC1D,QAAA,UAAU,MAAM,YAAa,CAAA;AACrC;AAEA,MAAM,iBAAiB,CAAC,UAA2B;AACzC,UAAA,IAAI,kDAAkD,EAAE;AAChE,QAAM,UAAU,MAAM,QAAQ,MAAO,CAAA;AACvC;AAEA,IAAI,wCAAuD;AAC3D,MAAM,WAAqB;AAAA,EACzB,SAAS;AAAA,IACP,mBAAmB;AAAA,IACnB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,IACd,OAAO;AAAA,IACP,yBAAyB;AAAA,IACzB,iBAAiB;AAAA,EACnB;AACF;AAEA,MAAM,mCAAmC,CAACD,WAAoB,QAAgB;AAC5E,QAAM,YAA0B,CAAA;AAChC,aAAW,CAAG,EAAA,KAAK,KAAK,OAAO,QAAoBA,SAAQ,GAAG;AAE1D,QAAA,MAAM,2BAA2B,QACjC,IAAI,WAAW,MAAM,wBAAwB,aAAa,GAC1D;AACA,gBAAU,KAAK,KAAK;AAAA,IAEpB,WAAA,MAAM,2BAA2B,QACjC,MAAM,wBAAwB,sBAC9B,IAAI,WAAW,MAAM,wBAAwB,kBAAkB,GAC/D;AACA,gBAAU,KAAK,KAAK;AAAA,IACtB;AAAA,EACF;AACO,SAAA;AACT;AAEA,MAAM,iBAAiB,OAAO,UAAsB;AAClD,QAAM,kBAAkB,MAAM;AAC9B,QAAM,gBAAgB,gBAAgB,QAAQ,IAAI,cAAc;AAChE,QAAM,OAAO,EAAE,QAAQ,KAAK,YAAY,sBAAsB;AAC9D,QAAM,WAAW,IAAI,SAAS,MAAM,IAAI;AACxC,MAAI,CAAC,eAAe;AAClB,UAAM,qBAAqB,IAAI,IAAI,gBAAgB,GAAG;AACtD,UAAM,kBAAkB,OAAO,mBAAmB,aAAa,IAAI,iBAAiB,CAAC,KAAK;AAC1F,aAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AAClC,YAAA,MAAM,MAAO,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,CAAC;AACnD,YAAM,QAAQ,MAAM,OAAO,KAAK,kBAAkB;AAClD,YAAM,MAAM,IAAI,MAAM,SAAS,SAAS,OAAO;AAAA,IACjD;AAAA,EACF;AACO,SAAA;AACT;AAEA,MAAM,cAAc,OAAO,UAAsB;AAC/C,QAAM,kBAAkB,MAAM;AAC9B,QAAM,MAAM,gBAAgB;AAC5B,MAAI,gBAAgB,IAAI,SAAS,qBAAqB,GAAG;AACjD,UAAA,YAAY,eAAe,KAAK,CAAC;AACvC;AAAA,EACF;AAEA,QAAM,uCAAuC;AAAA,IAC3C;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEF,MACE,wCACA,qCAAqC,UACrC,qCAAqC,OAAO,cAC5C;AACA,WACE,qCAAqC,UACrC,CAAC,cAAc,qCAAqC,MAAM,GAC1D;AACA,YAAM,MAAM,GAAG;AAAA,IACjB;AACA,UAAM,aACJ,gBAAgB,QAAQ,aACpB,IAAI,QAAQ,iBAAiB;AAAA,MAC3B,SAAS;AAAA,QACP,GAAG,iBAAiB,gBAAgB,OAAO;AAAA,QAC3C,eACE,YACA,qCAAqC,OAAO;AAAA,MAChD;AAAA,IAAA,CACD,IACD,IAAI,QAAQ,iBAAiB;AAAA,MAC3B,SAAS;AAAA,QACP,GAAG,iBAAiB,gBAAgB,OAAO;AAAA,QAC3C,eACE,YACA,qCAAqC,OAAO;AAAA,MAChD;AAAA,MACA,MACE,qCAAqC,kBACrC,8CACE,SACA,gBAAgB;AAAA,IAAA,CACrB;AAGP,UAAM,UAAU,MAAM,YAAY,MAAM,UAAU,CAAC,CAAC;AAEpD;AAAA,EACF;AAEI,MAAA,MAAM,QAAQ,WAAW,QAAQ;AACnC;AAAA,EACF;AAEA,MAAI,kBAAqC;AACzC,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,gBAAgB;AAAA,EAAA;AAElB,QAAM,iBAAiB,iBAAiB;AACxC,MAAI,iBAAiB,GAAG;AACtB,UAAM,aAAa,IAAI,QAAkB,CAAC,SAAS,WAAW;AACtD,YAAA,gBAAgB,gBAAgB;AACtC,YAAM,WAAW,cAAc,KAAO,EAAA,KAAK,CAAC,eAAe;AAEvD,YAAA,WAAW,SAAS,MAAM,aAAa,KACvC,WAAW,SAAS,MAAM,YAAY,GACtC;AACA,cAAI,UAAU;AACd,mBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACjC,kBAAA,YAAY,iBAAiB,CAAC;AAEhC,gBAAA,aAAa,UAAU,UAAU,MAAM;AACzC,oBAAM,kBACJ,MAAM,gBAAgB,MAAM,UAAU;AACpC,kBAAA,WAAW,SAAS,eAAe,GAAG;AACxC,0BAAU,QAAQ;AAAA,kBAChB;AAAA,kBACA,mBAAmB,UAAU,OAAO,aAAuB;AAAA,gBAAA;AAE3C,kCAAA;AAClB;AAAA,cACF;AACA,oBAAM,iBACJ,MAAM,eAAe,MAAM,UAAU;AACnC,kBAAA,WAAW,SAAS,cAAc,GAAG;AACvC,0BAAU,QAAQ;AAAA,kBAChB;AAAA,kBACA,mBAAmB,UAAU,OAAO,YAAY;AAAA,gBAAA;AAEhC,kCAAA;AAClB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACM,gBAAA,eAAe,MAAM,iBAAiB;AAAA,YAC1C,MAAM;AAAA,YACN,QAAQ,cAAc;AAAA,YACtB,SAAS;AAAA,cACP,GAAG,iBAAiB,gBAAgB,OAAO;AAAA,YAC7C;AAAA,YACA,MAAM,cAAc;AAAA,YACpB,OAAO,cAAc;AAAA,YACrB,UAAU,cAAc;AAAA,YACxB,UAAU,cAAc;AAAA,YACxB,aAAa,cAAc;AAAA,YAC3B,WAAW,cAAc;AAAA,UAAA,CAC1B;AAED,cACE,mBACA,gBAAgB,2BAA2B,QAC3C,gBAAgB,wBAAwB,sBACxC,IAAI;AAAA,YACF,gBAAgB,wBAAwB;AAAA,UAAA,GAE1C;AACO,mBAAA,aAAa,KAAK,OAAOE,cAAa;AACrC,oBAAA,OAAO,MAAMA,UAAS;AACrB,qBAAA,IAAI,SAAS,MAAMA,SAAQ;AAAA,YAAA,CACnC;AAAA,UACH;AACA,iBAAO,aAAa,KAAK,WAAW,eAA6B,CAAC;AAAA,QAElE,WAAA,WAAW,SAAS,gBAAgB,KACpC,uCACA;AACA,4BAAkB,SAAS,qCAAqC;AACxB,kDAAA;AACxC,cAAI,UAAU;AACV,cAAA,mBAAmB,gBAAgB,gBAAgB,MAAM;AACjD,sBAAA,oBAAoB,SAAS,gBAAgB,YAAY;AAAA,UACrE;AAEA,iBAAO,MAAM,iBAAiB;AAAA,YAC5B,MAAM;AAAA,YACN,QAAQ,cAAc;AAAA,YACtB,SAAS;AAAA,cACP,GAAG,iBAAiB,gBAAgB,OAAO;AAAA,YAC7C;AAAA,YACA,MAAM,cAAc;AAAA,YACpB,OAAO,cAAc;AAAA,YACrB,UAAU,cAAc;AAAA,YACxB,UAAU,cAAc;AAAA,YACxB,aAAa,cAAc;AAAA,YAC3B,WAAW,cAAc;AAAA,UAC1B,CAAA,EAAE,KAAK,WAAW,eAAe,CAAC;AAAA,QACrC;AACO,eAAA;AAAA,MAAA,CACR;AAEE,eAAA,KAAK,CAAC,MAAM;AACX,YAAI,MAAM,QAAW;AACnB,kBAAQ,CAAC;AAAA,QAAA,OACJ;AACL,kBAAQ,IAAI,mBAAmB;AACxB,iBAAA,IAAI,MAAM,wCAAwC,CAAC;AAAA,QAC5D;AAAA,MAAA,CACD,EACA,MAAM,CAAC,QAAQ;AACd,YAAI,QAAQ,QAAW;AACrB,iBAAO,GAAG;AAAA,QAAA,OACL;AACL,kBAAQ,IAAI,iBAAiB;AACtB,iBAAA,IAAI,MAAM,sCAAsC,CAAC;AAAA,QAC1D;AAAA,MAAA,CACD;AAAA,IAAA,CACJ;AAGD,UAAM,UAAU,MAAM,YAAY,UAAU,CAAC;AAAA,EAC/C;AACF;AAMA,MAAM,gCAA+D,CAAA;AAErE,MAAM,gBAAgB,CAAC,UAAkC;AACjD,QAAA,OAAO,MAAM,MAAM,CAAC;AAC1B,QAAM,OAAO,MAAM;AACnB,QAAM,oBAAoB,KAAK;AAC3B,MAAA,kBAAkB,SAAS,iBAAiB;AAChD,MAAG,kBAAiB,MAAK;AACvB,qBAAiB,CAAA;AAAA,EACnB;AACA,MAAI,CAAC,iBAAiB;AAEhB,QAAA,8BAA8B,iBAAiB,MAAM,QAAW;AAC9D,UAAA,gBAAgB,eAAe,iBAAiB;AACpD,oCAA8B,iBAAiB,IAAI,MAAM,QAAQ,aAAa,IAAI,QAAQ,cAAc;AAAA,IAC1G;AACA,aAAS,iBAAiB,IAAI;AAAA,MAC5B,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,cAAc;AAAA,MACd,yBAAyB;AAAA,MACzB,mBAAmB;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,MACA,iBAAiB,CAAC,8BAA8B,iBAAiB;AAAA,IAAA;AAEnE,sBAAkB,SAAS,iBAAiB;AAExC,QAAA,CAAC,eAAe,iBAAiB,GAAG;AACvB,qBAAA,iBAAiB,IAAI;IACtC;AAAA,EACF;AAEA,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,sBAAgB,SAAS;AACzB,sBAAgB,QAAQ;AACxB,sBAAgB,eAAe;AACf,sBAAA,SAAS,KAAK,KAAK;AAC9B,WAAA,YAAY,EAAE,kBAAA,CAAmB;AACtC;AAAA,IACF,KAAK,QAAQ;AACL,YAAA,0BAA0B,KAAK,KAAK;AACtC,UAAA,gBAAgB,eAAe,iBAAiB;AAC9C,YAAA,UAAU,WAAW,eAAe,MAAM;AAChD,UAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,MAAM,oBAAoB,GAAG;AACpD;AAAA,UACE,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,UACxB,wBAAwB;AAAA,QAAA,EACxB,QAAQ,CAAC,QAAQ;AACjB,sBAAY,SAAS,GAAG;AAAA,QAAA,CACzB;AAAA,MACH;AACF,sBAAgB,0BAA0B;AACxB,sBAAA,oBAAoB,KAAK,KAAK;AACxC,YAAA,QAAQ,KAAK,KAAK;AAEtB,UAAA,UAAU,wBACV,UAAU,+BACV;AACwC,gDAAA;AAAA,MAAA,OACnC;AACmC,gDAAA;AAAA,MAC1C;AAEI,UAAA,CAAC,gBAAgB,QAAQ;AAC3B,aAAK,YAAY;AAAA,UACf,QAAQ;AAAA,UACR,QAAQ,gBAAgB;AAAA,UACxB;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACL,cAAM,SAAS;AAAA,UACb,GAAG,gBAAgB;AAAA,QAAA;AAErB,YAAG,gBAAgB,iBAAiB;AAC3B,iBAAA,eAAe,MAAM,eAAe,MAAM;AAAA,QACnD;AACA,YAAI,OAAO,eAAe;AACjB,iBAAA,gBAAgB,MAAM,gBAAgB,MAAM;AAAA,QACrD;AACA,YACE,OAAO,kBACP,OAAO,eAAe,SACtB,gBAAgB,SAAS,MACzB;AACA,iBAAO,eAAe,QACpB,MAAM,cAAc,MAAM;AAAA,QAC9B;AACA,aAAK,YAAY;AAAA,UACf;AAAA,UACA,QAAQ,gBAAgB;AAAA,UACxB;AAAA,QAAA,CACD;AAAA,MACH;AACA;AAAA,IACF;AAAA,IACA,KAAK;AACa,sBAAA,QAAQ,KAAK,KAAK;AAC7B,WAAA,YAAY,EAAE,kBAAA,CAAmB;AACtC;AAAA,IACF,KAAK,YAAY;AACf,YAAM,QAAQ,gBAAgB;AAC9B,WAAK,YAAY,EAAE,mBAAmB,MAAO,CAAA;AAC7C;AAAA,IACF;AAAA,IACA,KAAK;AACa,sBAAA,eAAe,KAAK,KAAK;AACpC,WAAA,YAAY,EAAE,kBAAA,CAAmB;AACtC;AAAA,IACF,KAAK,mBAAmB;AACtB,WAAK,YAAY;AAAA,QACf;AAAA,QACA,cAAc,gBAAgB,gBAAgB,OAAO,MAAM,gBAAgB,MAAM,oBAAoB;AAAA,MAAA,CACtG;AACD;AAAA,IACF;AAAA,IACA,KAAK;AACa,sBAAA,eAAe,KAAK,KAAK;AACpC,WAAA,YAAY,EAAE,kBAAA,CAAmB;AACtC;AAAA,IACF,KAAK,mBAAmB;AACtB,YAAM,eAAe,gBAAgB;AACrC,WAAK,YAAY,EAAE,mBAAmB,aAAc,CAAA;AACpD;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACX,UAAA,QAAQ,KAAK,KAAK;AACtB,UAAI,OAAO;AACT,wBAAgB,QAAQ;AAAA,MAC1B;AACK,WAAA,YAAY,EAAC,kBAAA,CAAkB;AACpC;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACT,YAAA,WAAW,MAAM,cAAc,MAAM;AACrC,YAAA,QAAQ,gBAAgB,QAAQ,WAAW;AACjD,WAAK,YAAY,EAAC,mBAAmB,MAAM,CAAA;AAC3C;AAAA,IACF;AAAA,IACA;AACE,sBAAgB,QAAQ,EAAE,GAAG,KAAK,KAAK;AAClC,WAAA,YAAY,EAAE,kBAAA,CAAmB;AAAA,EAC1C;AACF;AAEA,MAAM,iBAAiB,WAAW,aAAa;AAC/C,MAAM,iBAAiB,YAAY,cAAc;AACjD,MAAM,iBAAiB,SAAS,WAAW;AAC3C,MAAM,iBAAiB,WAAW,aAAa;"} \ No newline at end of file diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 34ad60a0f..266ada49e 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -42,11 +42,22 @@ The service worker catch **access_token** and **refresh_token** that will never ```sh npm install @axa-fr/oidc-client --save +# To install or update OidcServiceWorker.js file, you can run +node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs + # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + }, +``` + If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. The only file you should edit is "OidcTrustedDomains.js". diff --git a/packages/oidc-client/bin/post-install.mjs b/packages/oidc-client/bin/copy-service-worker-files.mjs similarity index 73% rename from packages/oidc-client/bin/post-install.mjs rename to packages/oidc-client/bin/copy-service-worker-files.mjs index ce0c6bc88..512482ba8 100644 --- a/packages/oidc-client/bin/post-install.mjs +++ b/packages/oidc-client/bin/copy-service-worker-files.mjs @@ -1,5 +1,6 @@ import path from 'path'; import fs from 'fs'; +import { fileURLToPath } from 'url'; try { @@ -28,11 +29,15 @@ try { const fileExists = (path) => { return !!fs.existsSync(path); }; + + const initPath = process.cwd(); - const initPath = process.env.INIT_CWD; - - const srcDir = '../oidc-client-service-worker/dist/'; - const destinationDir = path.join(initPath, 'public'); + + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + const srcDir = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist') ; + + const destinationFolder = process.argv.length >= 3 ? process.argv[2] : 'public'; + const destinationDir = path.join(initPath, destinationFolder); const files = [ { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f9c809450..f50cb974a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -50,7 +50,7 @@ "build": "tsc && vite build", "test": "vitest --root . --coverage", "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", - "postinstall": "node ./bin/post-install.mjs" + "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'" }, "license": "MIT", "publishConfig": { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index f4ebc7081..d5042779f 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -53,11 +53,21 @@ The service worker catch **access_token** and **refresh_token** that will never ```sh npm install @axa-fr/react-oidc --save +# To install or update OidcServiceWorker.js file, you can run +node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs + # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + }, +``` If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. The only file you should edit is "OidcTrustedDomains.js". diff --git a/packages/react-oidc/bin/post-install.mjs b/packages/react-oidc/bin/copy-service-worker-files.mjs similarity index 71% rename from packages/react-oidc/bin/post-install.mjs rename to packages/react-oidc/bin/copy-service-worker-files.mjs index 67c64c9db..9a77e40b5 100644 --- a/packages/react-oidc/bin/post-install.mjs +++ b/packages/react-oidc/bin/copy-service-worker-files.mjs @@ -1,5 +1,6 @@ -import path from 'path'; +import path from 'path'; import fs from 'fs'; +import { fileURLToPath } from 'url'; try { @@ -29,10 +30,11 @@ try { return !!fs.existsSync(path); }; - const initPath = process.env.INIT_CWD; - - const srcDir = '../oidc-client-service-worker/dist/'; - const destinationDir = path.join(initPath, 'public'); + const initPath = process.cwd(); + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + const srcDir = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist') ; + const destinationFolder = process.argv.length >= 3 ? process.argv[2] : 'public'; + const destinationDir = path.join(initPath, destinationFolder); const files = [ { diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 4efbfd581..3983b35e4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -35,7 +35,7 @@ "serve": "vite preview", "test": "vitest --root . --coverage", "clean": "rimraf dist", - "postinstall": "node ./bin/post-install.mjs", + "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'", "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "lint": "eslint src" }, diff --git a/readme.md b/readme.md index 5c84f6103..18a01a3bf 100644 --- a/readme.md +++ b/readme.md @@ -71,11 +71,22 @@ Works perfectly well with: ```sh npm install @axa-fr/oidc-client --save +# To install or update OidcServiceWorker.js file, you can run +node .\node_modules\@axa-fr\oidc-client\bin\copy-service-worker-files.mjs public + # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + }, +``` + More documentation : - [`@axa-fr/oidc-client`](./packages/oidc-client#readme) @@ -85,11 +96,22 @@ More documentation : ```sh npm install @axa-fr/react-oidc --save +# To install or update OidcServiceWorker.js file, you can run +node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs public + # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + }, +``` + More documentation : - [`@axa-fr/react-oidc`](./packages/react#readme) diff --git a/scripts/publish-changelog.js b/scripts/publish-changelog.js deleted file mode 100644 index bee28d60e..000000000 --- a/scripts/publish-changelog.js +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs-extra'); -const VERSION = require('../packages/react/package.json').version; - -try { - const execSync = require('child_process').execSync; - child = execSync( - `npm run changelog && git add . && git commit -m "docs(changelog) update to new ${VERSION}" && git push` - ); - console.log('error', child.error); - console.log('stdout ', child.stdout); - console.log('stderr ', child.stderr); - - console.log('success!'); -} catch (err) { - console.error(err); -} diff --git a/scripts/twitter.js b/scripts/twitter.js deleted file mode 100644 index d53a261c6..000000000 --- a/scripts/twitter.js +++ /dev/null @@ -1,30 +0,0 @@ -const Twit = require("twit"); // eslint-disable-line - -/* should be ran with "node twitter consumer_key consumer_secret access_token access_token_secret" - in this order -*/ -const argv = process.argv; - -const T = new Twit({ - consumer_key: argv[2], - consumer_secret: argv[3], - access_token: argv[4], - access_token_secret: argv[5], - timeout_ms: 60 * 1000, - strictSSL: true -}); - -const json = require("../packages/context/package.json"); - -const message = `Hey a new version (${ - json.version -}) of the @axa-fr/react-oidc is available on @github and @npm! -check out the new changelog https://github.com/AxaGuilDEv/react-oidc/blob/master/CHANGELOG.md`; - -T.post("statuses/update", { status: message }, err => { - if (!err) { - console.log("Greate job"); // eslint-disable-line - } else { - console.error(err); - } -}); From 3713dd65a6be6ff4a42b1507cd94e904445efb00 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 4 Aug 2023 14:12:48 +0000 Subject: [PATCH 023/565] [skip ci] Update version package.json --- .../nextjs-demo/public/OidcTrustedDomains.js | 26 +++++++++++++++++++ .../oidc-client-service-worker/package.json | 2 +- .../oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 examples/nextjs-demo/public/OidcTrustedDomains.js diff --git a/examples/nextjs-demo/public/OidcTrustedDomains.js b/examples/nextjs-demo/public/OidcTrustedDomains.js new file mode 100644 index 000000000..1aea5cd1a --- /dev/null +++ b/examples/nextjs-demo/public/OidcTrustedDomains.js @@ -0,0 +1,26 @@ +// Add bellow trusted domains, access tokens will automatically injected to be send to +// trusted domain can also be a path like https://www.myapi.com/users, +// then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. + +// Domains used by OIDC server must be also declared here +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const trustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + config_classic: ['https://demo.duendesoftware.com'], + config_without_silent_login: ['https://demo.duendesoftware.com'], + config_without_refresh_token: ['https://demo.duendesoftware.com'], + config_without_refresh_token_silent_login: ['https://demo.duendesoftware.com'], + config_google: ['https://oauth2.googleapis.com', 'https://openidconnect.googleapis.com'], + config_with_hash: ['https://demo.duendesoftware.com'], +}; + +// Service worker will continue to give access token to the JavaScript client +// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some +// scenarios which require it. For example, to send it via websocket connection. +trustedDomains.config_show_access_token = { domains: ['https://demo.duendesoftware.com'], showAccessToken: true }; + +// This example defines domains used by OIDC server separately from domains to which access tokens will be injected. +trustedDomains.config_separate_oidc_access_token_domains = { + oidcDomains: ['https://demo.duendesoftware.com'], + accessTokenDomains: ['https://myapi'], +}; diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ba4b2422b..79faf39d6 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.1.0", + "version": "7.2.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index e5d44bc30..94b704628 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.1.0'; +export default '7.2.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f50cb974a..f18191a4c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.1.0", + "version": "7.2.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index e5d44bc30..94b704628 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.1.0'; +export default '7.2.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 3983b35e4..fbfc943ba 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.1.0", + "version": "7.2.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From faa0da2235239a0b12e82a070b3f6e2c30572bfa Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 4 Aug 2023 16:13:56 +0200 Subject: [PATCH 024/565] fix(readme): some path was broken --- packages/oidc-client/bin/copy-service-worker-files.mjs | 1 - packages/react-oidc/README.md | 2 +- readme.md | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client/bin/copy-service-worker-files.mjs b/packages/oidc-client/bin/copy-service-worker-files.mjs index 512482ba8..205e27715 100644 --- a/packages/oidc-client/bin/copy-service-worker-files.mjs +++ b/packages/oidc-client/bin/copy-service-worker-files.mjs @@ -32,7 +32,6 @@ try { const initPath = process.cwd(); - const __dirname = path.dirname(fileURLToPath(import.meta.url)); const srcDir = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist') ; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index d5042779f..505014cd4 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -65,7 +65,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node .\\node_modules\\@axa-fr\\react-oidc\\bin\\copy-service-worker-files.mjs public" }, ``` If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. diff --git a/readme.md b/readme.md index 18a01a3bf..0dc1e75b7 100644 --- a/readme.md +++ b/readme.md @@ -108,13 +108,13 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node .\\node_modules\\@axa-fr\\react-oidc\\bin\\copy-service-worker-files.mjs public" }, ``` More documentation : -- [`@axa-fr/react-oidc`](./packages/react#readme) +- [`@axa-fr/react-oidc`](./packages/react-oidc#readme) ## Run The Demos From 3d0aaff74fd1b14afe2aa3ec2b8b3c028dd3fe75 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 4 Aug 2023 16:32:21 +0200 Subject: [PATCH 025/565] fix(oidc): add more detail on state error --- packages/oidc-client/src/login.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 4e166b29c..375287f2f 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -107,10 +107,11 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { const params = getParseQueryStringFromLocation(window.location.toString()); if (params.iss && params.iss !== oidcServerConfiguration.issuer) { - throw new Error('issuer not valid'); + console.error(); + throw new Error(`issuer not valid (expected: ${oidcServerConfiguration.issuer}, received: ${params.iss})`); } if (params.state && params.state !== state) { - throw new Error('state not valid'); + throw new Error(`state not valid (expected: ${state}, received: ${params.state})`); } const data = { From 0e52c56e1d747aa17ee2bf3005893a8d67a03ab3 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 7 Aug 2023 11:12:56 +0200 Subject: [PATCH 026/565] fix(package.json): update new repository link (release) --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 79faf39d6..34f13f025 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -21,7 +21,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/AxaGuilDEv/react-oidc.git" + "url": "https://github.com/AxaFrance/oidc-client.git" }, "scripts": { "copy": "cpy --flat ./src/OidcTrustedDomains.js ./dist/", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f18191a4c..d97c8cb9c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -17,7 +17,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/AxaGuilDEv/react-oidc.git" + "url": "https://github.com/AxaFrance/oidc-client.git" }, "dependencies": { "@axa-fr/oidc-client-service-worker": "workspace:*" diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index fbfc943ba..0683bbb83 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -9,7 +9,7 @@ "description": "OpenID Connect & OAuth authentication using react", "repository": { "type": "git", - "url": "https://github.com/AxaGuilDEv/react-oidc.git" + "url": "https://github.com/AxaFrance/oidc-client.git" }, "files": [ "dist", From ad3a73b9a65c942e2f3aee61516581613844a5ec Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 7 Aug 2023 09:17:00 +0000 Subject: [PATCH 027/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 34f13f025..5f49d4a21 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.2.0", + "version": "7.2.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 94b704628..da9502dac 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.2.0'; +export default '7.2.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index d97c8cb9c..1b8750bd8 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.2.0", + "version": "7.2.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 94b704628..da9502dac 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.2.0'; +export default '7.2.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0683bbb83..9ccb9508b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.2.0", + "version": "7.2.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From a5d2e5892cf456225618f55602c87c654cdad62c Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 7 Aug 2023 18:01:12 +0200 Subject: [PATCH 028/565] fix(oidc+serviceworker): add more log detail on token validation --- packages/oidc-client-service-worker/src/utils/tokens.ts | 8 ++++---- packages/oidc-client/src/parseTokens.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 8155d6b26..8504b9a42 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -65,7 +65,7 @@ const isTokensOidcValid = ( const idTokenPayload = tokens.idTokenPayload; // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim. if (oidcServerConfiguration.issuer !== idTokenPayload.iss) { - return { isValid: false, reason: 'Issuer does not match' }; + return { isValid: false, reason: `Issuer does not match (oidcServerConfiguration issuer) ${oidcServerConfiguration.issuer} !== (idTokenPayload issuer) ${idTokenPayload.iss}` }; } // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client. @@ -74,7 +74,7 @@ const isTokensOidcValid = ( // 9: The current time MUST be before the time represented by the exp Claim. const currentTimeUnixSecond = new Date().getTime() / 1000; if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) { - return { isValid: false, reason: 'Token expired' }; + return { isValid: false, reason: `Token expired at (idTokenPayload exp) ${idTokenPayload.exp} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific. const timeInSevenDays = 60 * 60 * 24 * 7; @@ -82,11 +82,11 @@ const isTokensOidcValid = ( idTokenPayload.iat && idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond ) { - return { isValid: false, reason: 'Token is used from too long time' }; + return { isValid: false, reason: `Token is used from too long time (idTokenPayload iat + timeInSevenDays) ${idTokenPayload.iat + timeInSevenDays} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific. if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) { - return { isValid: false, reason: 'Nonce does not match' }; + return { isValid: false, reason: `Nonce does not match (nonce) ${nonce} !== (idTokenPayload nonce) ${idTokenPayload.nonce}` }; } } return { isValid: true, reason: '' }; diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index 2acba0385..cd10b11cb 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -177,7 +177,7 @@ export const isTokensOidcValid = (tokens, nonce, oidcServerConfiguration) => { const idTokenPayload = tokens.idTokenPayload; // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim. if (oidcServerConfiguration.issuer !== idTokenPayload.iss) { - return { isValid: false, reason: 'Issuer does not match' }; + return { isValid: false, reason: `Issuer does not match (oidcServerConfiguration issuer) ${oidcServerConfiguration.issuer} !== (idTokenPayload issuer) ${idTokenPayload.iss}` }; } // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client. @@ -186,16 +186,16 @@ export const isTokensOidcValid = (tokens, nonce, oidcServerConfiguration) => { // 9: The current time MUST be before the time represented by the exp Claim. const currentTimeUnixSecond = new Date().getTime() / 1000; if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) { - return { isValid: false, reason: 'Token expired' }; + return { isValid: false, reason: `Token expired (idTokenPayload exp) ${idTokenPayload.exp} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific. const timeInSevenDays = 60 * 60 * 24 * 7; if (idTokenPayload.iat && (idTokenPayload.iat + timeInSevenDays) < currentTimeUnixSecond) { - return { isValid: false, reason: 'Token is used from too long time' }; + return { isValid: false, reason: `Token is used from too long time (idTokenPayload iat + timeInSevenDays) ${idTokenPayload.iat + timeInSevenDays} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific. if (idTokenPayload.nonce && idTokenPayload.nonce !== nonce) { - return { isValid: false, reason: 'Nonce does not match' }; + return { isValid: false, reason: `Nonce does not match (idTokenPayload nonce) ${idTokenPayload.nonce} !== (nonce) ${nonce}` }; } } return { isValid: true, reason: '' }; From e0cad22179fb1d9e641fbbf14b879ea2d2d78c3a Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 7 Aug 2023 18:07:09 +0200 Subject: [PATCH 029/565] fix(faq): update faq (release) --- FAQ.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/FAQ.md b/FAQ.md index f94c86798..3ff9da526 100644 --- a/FAQ.md +++ b/FAQ.md @@ -4,9 +4,11 @@ Third party cookies are blocked by default on Safari. They will be on all browsers very soon. -Today, silent sigin work on safari only if OIDC provider is on the same domain than client application. +Today, silent signing work on safari only if OIDC provider is on the same domain than client application. Third party cookies are blocked. They will be on all browsers very soon. +The only way to be sure to have silent signing working on all browsers, you need to have your OIDC provider on the same domain than your client application. + Example of domain that work: - https://oidc-provider.axa.fr - https://my-app.axa.fr @@ -14,12 +16,12 @@ Example of domain that work: Silent Signing use cookies with your OIDC provider to restore the session and retrieve tokens. It open in background an IFrame to a specific page to your OIDC provider. -## Condition to single logout work +## Condition to make Single Logout to work -Same contraint for Single Logout that for "silent signing". +Same constraint for Single Logout that for "silent signing". *Single logout allow your to disconnect from multiple OIDC Client session in one action event if your are connected on different application. -## Condition to Monitor Session work +## Condition to make Monitor Session to work Same constraint for "monitorSession" that for "silent signing". From 32b286181436129e6d15e0e166108d1f0d4d5641 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 7 Aug 2023 16:11:24 +0000 Subject: [PATCH 030/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5f49d4a21..0a1c6c4db 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.2.1", + "version": "7.2.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index da9502dac..57f4cb3c5 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.2.1'; +export default '7.2.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 1b8750bd8..721d7b81f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.2.1", + "version": "7.2.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index da9502dac..57f4cb3c5 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.2.1'; +export default '7.2.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9ccb9508b..3bf21b104 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.2.1", + "version": "7.2.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7ffcde465f5f4cbba4b39e0da43dee34d4ec37d9 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 8 Aug 2023 09:41:51 +0200 Subject: [PATCH 031/565] doc(readme): update images urls --- FAQ.md | 3 ++- packages/oidc-client/README.md | 13 ++++++++++++- packages/react-oidc/README.md | 2 +- readme.md | 6 ++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/FAQ.md b/FAQ.md index 3ff9da526..873ef2041 100644 --- a/FAQ.md +++ b/FAQ.md @@ -19,7 +19,8 @@ It open in background an IFrame to a specific page to your OIDC provider. ## Condition to make Single Logout to work Same constraint for Single Logout that for "silent signing". -*Single logout allow your to disconnect from multiple OIDC Client session in one action event if your are connected on different application. + +Single logout allow your to disconnect from multiple OIDC Client session in one action event if your are connected on different application. ## Condition to make Monitor Session to work diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 266ada49e..15970b8c7 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -3,8 +3,19 @@ [![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Corevage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) -Try the demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ +**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. +**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. +We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) and we expect soon to provide one for **Vue**, **Angular** and **Svelte**. + +- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) +- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + +

+ Sample React Oicd +

- [About](#about) - [Getting Started](#getting-started) diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 505014cd4..e780279cf 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -12,7 +12,7 @@ We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) a - Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/

- Sample React Oicd

diff --git a/readme.md b/readme.md index 0dc1e75b7..aa15fa527 100644 --- a/readme.md +++ b/readme.md @@ -5,7 +5,7 @@

- Sample React Oicd

@@ -62,8 +62,6 @@ Works perfectly well with: - etc., all OIDC providers - - ## Getting Started ### Getting Started with @axa-fr/oidc-client @@ -146,7 +144,7 @@ pnpm run dev ## How It Works

- Schema Authorization Code Grant with pcke flow on the using service worker
From c94163d02f5947761d00bd5e18df6749106d6f3d Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 8 Aug 2023 10:33:13 +0200 Subject: [PATCH 032/565] doc(FAQ): add "Does Service Worker is mandatory ?" --- FAQ.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/FAQ.md b/FAQ.md index 873ef2041..da70b23bd 100644 --- a/FAQ.md +++ b/FAQ.md @@ -28,6 +28,27 @@ Same constraint for "monitorSession" that for "silent signing". Monitor session allow you to be notified when your session is expired or when you are disconnected from your OIDC provider. +## Does Service Worker is mandatory ? + +Service Worker can be disable. +You can use classic mode without Service Worker. + +Just comment "service_worker_relative_url" like bellow: + +````javascript +export const configuration = { + client_id: 'interactive.public.short', + redirect_uri: window.location.origin + '/#/authentication/callback', + silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', + scope: 'openid profile email api offline_access', + authority: 'https://demo.duendesoftware.com', + // service_worker_relative_url: '/OidcServiceWorker.js', + service_worker_only: false, +}; +```` + +If your Service Worker file is already registered on your browser, your need to unregister it. For example from chrome dev tool. + ## Tokens are always refreshed in background every seconds @axa-fr/oidc-client refresh automatically tokens in background. From 282c0f72ab7741f24468b2278466eb307d1fa0ce Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 8 Aug 2023 13:49:47 +0200 Subject: [PATCH 033/565] feat(oidc+serviceworker): add property setAccessTokenToNavigateRequests + service_worker_convert_all_requests_to_cors moved to TrustedDomains.js (#1123) (release) * feat(oidc+serviceworker): add property setAccessTokenToNavigateRequests to TrustedDomains.js * configuration.service_worker_convert_all_requests_to_cors moved to TrustedDomains.js --- MIGRATION_GUIDE_V6_TO_V7.md | 17 +++- .../src/OidcServiceWorker.ts | 86 +++++++++---------- .../src/OidcTrustedDomains.js | 7 +- .../oidc-client-service-worker/src/types.ts | 5 +- .../src/utils/__tests__/domains.spec.ts | 2 + .../src/utils/__tests__/testHelper.ts | 13 +-- packages/oidc-client/README.md | 5 +- packages/react-oidc/README.md | 5 +- 8 files changed, 76 insertions(+), 64 deletions(-) diff --git a/MIGRATION_GUIDE_V6_TO_V7.md b/MIGRATION_GUIDE_V6_TO_V7.md index 7d6c39a85..51cb01b41 100644 --- a/MIGRATION_GUIDE_V6_TO_V7.md +++ b/MIGRATION_GUIDE_V6_TO_V7.md @@ -1,4 +1,19 @@ # Migrating from v6 to v7 - Package `@axa-fr/vanilla-oidc` as been renamed to `@axa-fr/oidc-client` -- VanillaOidc class as been renamed to OidcClient \ No newline at end of file +- VanillaOidc class as been renamed to OidcClient +- On version 7.3.0 configuration.service_worker_convert_all_requests_to_cors as been moved to TrustedDomains.js + +```javascript + +// Service worker will continue to give access token to the JavaScript client +// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some +// scenarios which require it. For example, to send it via websocket connection. +trustedDomains.config_show_access_token = { + domains: ['https://demo.duendesoftware.com'], + showAccessToken: true, + // convertAllRequestsToCorsExceptNavigate: false, // default value is false + // setAccessTokenToNavigateRequests: true, // default value is true +}; + +``` \ No newline at end of file diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 8eeda4ef5..7b675e59f 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -4,9 +4,7 @@ import { Database, MessageEventData, OidcConfig, - OidcConfiguration, TrustedDomains, - // TrustedDomainsShowAccessToken, } from './types'; import { checkDomain, @@ -39,18 +37,7 @@ const handleActivate = (event: ExtendableEvent) => { }; let currentLoginCallbackConfigurationName: string | null = null; -const database: Database = { - default: { - configurationName: 'default', - tokens: null, - status: null, - state: null, - codeVerifier: null, - nonce: null, - oidcServerConfiguration: null, - hideAccessToken: true, - }, -}; +const database: Database = {}; const getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => { const databases: OidcConfig[] = []; @@ -112,29 +99,37 @@ const handleFetch = async (event: FetchEvent) => { ) { await sleep(200); } - const newRequest = - originalRequest.mode === 'navigate' - ? new Request(originalRequest, { - headers: { - ...serializeHeaders(originalRequest.headers), - authorization: - 'Bearer ' + - currentDatabaseForRequestAccessToken.tokens.access_token, - }, - }) - : new Request(originalRequest, { - headers: { - ...serializeHeaders(originalRequest.headers), - authorization: - 'Bearer ' + - currentDatabaseForRequestAccessToken.tokens.access_token, - }, - mode: ( - currentDatabaseForRequestAccessToken.oidcConfiguration as OidcConfiguration - ).service_worker_convert_all_requests_to_cors - ? 'cors' - : originalRequest.mode, - }); + + let requestMode = originalRequest.mode; + + if(originalRequest.mode !== "navigate" && currentDatabaseForRequestAccessToken.convertAllRequestsToCorsExceptNavigate) { + requestMode = "cors"; + } + + let headers: { [p: string]: string }; + if(originalRequest.mode == "navigate" && !currentDatabaseForRequestAccessToken.setAccessTokenToNavigateRequests ) { + headers = { + ...serializeHeaders(originalRequest.headers), + } + } else{ + headers = { + ...serializeHeaders(originalRequest.headers), + authorization: 'Bearer ' + currentDatabaseForRequestAccessToken.tokens.access_token, + } + } + let init: RequestInit; + if(originalRequest.mode === "navigate"){ + init = { + headers: headers, + } + } else{ + init = { + headers: headers, + mode: requestMode, + } + } + + const newRequest = new Request(originalRequest, init); // @ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void event.waitUntil(event.respondWith(fetch(newRequest))); @@ -272,11 +267,6 @@ const handleFetch = async (event: FetchEvent) => { } }; -type TrustedDomainsShowAccessToken = { - [key: string]: boolean; -} - -const trustedDomainsShowAccessToken: TrustedDomainsShowAccessToken = {}; const handleMessage = (event: ExtendableMessageEvent) => { const port = event.ports[0]; @@ -287,10 +277,10 @@ const handleMessage = (event: ExtendableMessageEvent) => { trustedDomains = {}; } if (!currentDatabase) { - if (trustedDomainsShowAccessToken[configurationName] === undefined) { - const trustedDomain = trustedDomains[configurationName]; - trustedDomainsShowAccessToken[configurationName] = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken; - } + const trustedDomain = trustedDomains[configurationName]; + const showAccessToken = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken; + const doNotSetAccessTokenToNavigateRequests = Array.isArray(trustedDomain) ? true : trustedDomain.setAccessTokenToNavigateRequests; + const convertAllRequestsToCorsExceptNavigate = Array.isArray(trustedDomain) ? false : trustedDomain.convertAllRequestsToCorsExceptNavigate; database[configurationName] = { tokens: null, state: null, @@ -300,7 +290,9 @@ const handleMessage = (event: ExtendableMessageEvent) => { nonce: null, status: null, configurationName, - hideAccessToken: !trustedDomainsShowAccessToken[configurationName], + hideAccessToken: !showAccessToken, + setAccessTokenToNavigateRequests: doNotSetAccessTokenToNavigateRequests || true, + convertAllRequestsToCorsExceptNavigate: convertAllRequestsToCorsExceptNavigate || false, }; currentDatabase = database[configurationName]; diff --git a/packages/oidc-client-service-worker/src/OidcTrustedDomains.js b/packages/oidc-client-service-worker/src/OidcTrustedDomains.js index 1aea5cd1a..9a31a5bbd 100644 --- a/packages/oidc-client-service-worker/src/OidcTrustedDomains.js +++ b/packages/oidc-client-service-worker/src/OidcTrustedDomains.js @@ -17,7 +17,12 @@ const trustedDomains = { // Service worker will continue to give access token to the JavaScript client // Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some // scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { domains: ['https://demo.duendesoftware.com'], showAccessToken: true }; +trustedDomains.config_show_access_token = { + domains: ['https://demo.duendesoftware.com'], + showAccessToken: true, + // convertAllRequestsToCorsExceptNavigate: false, + // setAccessTokenToNavigateRequests: true, +}; // This example defines domains used by OIDC server separately from domains to which access tokens will be injected. trustedDomains.config_separate_oidc_access_token_domains = { diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 0775e3a8a..911eb4f6b 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -3,6 +3,8 @@ export type DomainDetails = { oidcDomains?: Domain[]; accessTokenDomains?: Domain[]; showAccessToken: boolean; + convertAllRequestsToCorsExceptNavigate?: boolean, + setAccessTokenToNavigateRequests?: boolean, } export type Domain = string | RegExp; @@ -21,7 +23,6 @@ export type OidcServerConfiguration = { export type OidcConfiguration = { token_renew_mode: string; - service_worker_convert_all_requests_to_cors: boolean; } // Uncertain why the Headers interface in lib.webworker.d.ts does not have a keys() function, so extending @@ -65,6 +66,8 @@ export type OidcConfig = { sessionState?: string | null; items?: MessageData; hideAccessToken: boolean; + convertAllRequestsToCorsExceptNavigate: boolean, + setAccessTokenToNavigateRequests: boolean, } export type IdTokenPayload = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 9ba81d569..6794c76b8 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -49,6 +49,8 @@ describe('domains', () => { nonce: null, oidcServerConfiguration: {} as OidcServerConfiguration, hideAccessToken: true, + convertAllRequestsToCorsExceptNavigate: false, + setAccessTokenToNavigateRequests: true, }, }; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 97de3ae11..d620bab03 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -96,7 +96,6 @@ class TokenBuilder { class OidcConfigurationBuilder { private oidcConfiguration: OidcConfiguration = { token_renew_mode: 'offline', - service_worker_convert_all_requests_to_cors: true, }; public withTokenRenewMode( @@ -105,15 +104,7 @@ class OidcConfigurationBuilder { this.oidcConfiguration.token_renew_mode = token_renew_mode; return this; } - - public withServiceWorkerConvertAllRequestsToCors( - service_worker_convert_all_requests_to_cors: boolean, - ): OidcConfigurationBuilder { - this.oidcConfiguration.service_worker_convert_all_requests_to_cors = - service_worker_convert_all_requests_to_cors; - return this; - } - + public build(): OidcConfiguration { return this.oidcConfiguration; } @@ -132,6 +123,8 @@ class OidcConfigBuilder { sessionState: null, items: undefined, hideAccessToken: true, + convertAllRequestsToCorsExceptNavigate: false, + setAccessTokenToNavigateRequests: true, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 15970b8c7..e9d4e81d5 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -93,7 +93,9 @@ const trustedDomains = { trustedDomains.config_show_access_token = { oidcDomains :["https://demo.duendesoftware.com"], accessTokenDomains : ["https://www.myapi.com/users"], - showAccessToken: true + showAccessToken: true, + // convertAllRequestsToCorsExceptNavigate: false, // default value is false + // setAccessTokenToNavigateRequests: true, // default value is true }; ``` @@ -182,7 +184,6 @@ const configuration = { service_worker_relative_url: String, service_worker_only: Boolean, // default false service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process - service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index e780279cf..081363613 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -92,7 +92,9 @@ const trustedDomains = { trustedDomains.config_show_access_token = { oidcDomains :["https://demo.duendesoftware.com"], accessTokenDomains : ["https://www.myapi.com/users"], - showAccessToken: true + showAccessToken: true, + // convertAllRequestsToCorsExceptNavigate: false, // default value is false + // setAccessTokenToNavigateRequests: true, // default value is true }; ``` @@ -185,7 +187,6 @@ const configuration = { service_worker_relative_url: String, service_worker_only: Boolean, // default false service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process - service_worker_convert_all_requests_to_cors: Boolean, // force all requests that service worker upgrades to have 'cors' mode. This allows setting an authentication token on requests initiated by HTML parsing (e.g., img tags, download links, etc.). extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) withCustomHistory: Function, // Override history modification, return an instance with replaceState(url, stateHistory) implemented (like History.replaceState()) From 0bc3398f09fd3bf6dff5a6443d5d42f0a26454bf Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 8 Aug 2023 11:53:04 +0000 Subject: [PATCH 034/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0a1c6c4db..a496beeb4 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.2.2", + "version": "7.3.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 57f4cb3c5..9b641657f 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.2.2'; +export default '7.3.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 721d7b81f..7f7f5e61a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.2.2", + "version": "7.3.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 57f4cb3c5..9b641657f 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.2.2'; +export default '7.3.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 3bf21b104..6b9f41af2 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.2.2", + "version": "7.3.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From c2564f9ef6de2122962cfb4a8e0f9195aa688d84 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 8 Aug 2023 18:10:00 +0200 Subject: [PATCH 035/565] fix(all): copy of service worker files (release) --- packages/oidc-client/README.md | 4 +- .../bin/copy-service-worker-files.mjs | 37 +++++++++++-------- packages/react-oidc/README.md | 4 +- .../bin/copy-service-worker-files.mjs | 19 +++++++--- readme.md | 8 ++-- 5 files changed, 44 insertions(+), 28 deletions(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index e9d4e81d5..c3e1f0cd1 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -54,7 +54,7 @@ The service worker catch **access_token** and **refresh_token** that will never npm install @axa-fr/oidc-client --save # To install or update OidcServiceWorker.js file, you can run -node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -65,7 +65,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, ``` diff --git a/packages/oidc-client/bin/copy-service-worker-files.mjs b/packages/oidc-client/bin/copy-service-worker-files.mjs index 205e27715..599985339 100644 --- a/packages/oidc-client/bin/copy-service-worker-files.mjs +++ b/packages/oidc-client/bin/copy-service-worker-files.mjs @@ -3,41 +3,41 @@ import fs from 'fs'; import { fileURLToPath } from 'url'; try { - + /** * Script to run after npm install * * Copy selected files to user's directory */ const script_prefix= 'oidc-client'; - + const copyFile = async (src, dest, overwrite) => { if(!fileExists(src)) { - console.log(`[${script_prefix}:skip] file does not exist ${src}`); - return; + console.log(`[${script_prefix}:skip] file does not exist ${src}`); + return false; } if (!overwrite) { if (fileExists(dest)) { console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); - return; + return true; } } await fs.promises.copyFile(src, dest); console.log(`[${script_prefix}:copy] ${dest}`); + return true }; - + const fileExists = (path) => { return !!fs.existsSync(path); }; const initPath = process.cwd(); - const __dirname = path.dirname(fileURLToPath(import.meta.url)); - const srcDir = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist') ; - + const srcDir = path.join(__dirname, ".." , ".." ,'oidc-client-service-worker', 'dist'); + const srcDirFallback = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist'); const destinationFolder = process.argv.length >= 3 ? process.argv[2] : 'public'; const destinationDir = path.join(initPath, destinationFolder); - + const files = [ { fileName: 'OidcServiceWorker.js', @@ -48,13 +48,20 @@ try { overwrite: false, }, ]; - + for await (const file of files) { - await copyFile( - path.join(srcDir, file.fileName), - path.join(destinationDir, file.fileName), - file.overwrite + const success = await copyFile( + path.join(srcDir, file.fileName), + path.join(destinationDir, file.fileName), + file.overwrite ); + if(!success){ + await copyFile( + path.join(srcDirFallback, file.fileName), + path.join(destinationDir, file.fileName), + file.overwrite + ); + } } } catch (err) { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 081363613..bd2551426 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -54,7 +54,7 @@ The service worker catch **access_token** and **refresh_token** that will never npm install @axa-fr/react-oidc --save # To install or update OidcServiceWorker.js file, you can run -node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -65,7 +65,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\react-oidc\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, ``` If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. diff --git a/packages/react-oidc/bin/copy-service-worker-files.mjs b/packages/react-oidc/bin/copy-service-worker-files.mjs index 9a77e40b5..3fe82d871 100644 --- a/packages/react-oidc/bin/copy-service-worker-files.mjs +++ b/packages/react-oidc/bin/copy-service-worker-files.mjs @@ -9,21 +9,22 @@ try { * * Copy selected files to user's directory */ - const script_prefix= 'oidc-client'; + const script_prefix= 'react-oidc'; const copyFile = async (src, dest, overwrite) => { if(!fileExists(src)) { console.log(`[${script_prefix}:skip] file does not exist ${src}`); - return; + return false; } if (!overwrite) { if (fileExists(dest)) { console.log(`[${script_prefix}:skip] file exists not overwriting ${dest}`); - return; + return true; } } await fs.promises.copyFile(src, dest); console.log(`[${script_prefix}:copy] ${dest}`); + return true }; const fileExists = (path) => { @@ -32,7 +33,8 @@ try { const initPath = process.cwd(); const __dirname = path.dirname(fileURLToPath(import.meta.url)); - const srcDir = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist') ; + const srcDir = path.join(__dirname, ".." , ".." ,'oidc-client-service-worker', 'dist'); + const srcDirFallback = path.join(__dirname, "..", 'node_modules', '@axa-fr' ,'oidc-client-service-worker', 'dist'); const destinationFolder = process.argv.length >= 3 ? process.argv[2] : 'public'; const destinationDir = path.join(initPath, destinationFolder); @@ -48,11 +50,18 @@ try { ]; for await (const file of files) { - await copyFile( + const success = await copyFile( path.join(srcDir, file.fileName), path.join(destinationDir, file.fileName), file.overwrite ); + if(!success){ + await copyFile( + path.join(srcDirFallback, file.fileName), + path.join(destinationDir, file.fileName), + file.overwrite + ); + } } } catch (err) { diff --git a/readme.md b/readme.md index aa15fa527..27fd11420 100644 --- a/readme.md +++ b/readme.md @@ -70,7 +70,7 @@ Works perfectly well with: npm install @axa-fr/oidc-client --save # To install or update OidcServiceWorker.js file, you can run -node .\node_modules\@axa-fr\oidc-client\bin\copy-service-worker-files.mjs public +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -81,7 +81,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\oidc-client\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, ``` @@ -95,7 +95,7 @@ More documentation : npm install @axa-fr/react-oidc --save # To install or update OidcServiceWorker.js file, you can run -node .\node_modules\@axa-fr\react-oidc\bin\copy-service-worker-files.mjs public +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -106,7 +106,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node .\\node_modules\\@axa-fr\\react-oidc\\bin\\copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, ``` From bb7de0060ea81fa4206a5696a5479100f0c64898 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 8 Aug 2023 16:15:10 +0000 Subject: [PATCH 036/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a496beeb4..a3b9bda8d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.3.0", + "version": "7.3.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 9b641657f..fcca45f46 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.3.0'; +export default '7.3.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7f7f5e61a..ef230d814 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.3.0", + "version": "7.3.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 9b641657f..fcca45f46 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.3.0'; +export default '7.3.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6b9f41af2..ab2c0a42f 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.3.0", + "version": "7.3.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 790ec468355967462b9bfce40196e9336efed0d7 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 15 Aug 2023 21:04:05 +0200 Subject: [PATCH 037/565] fix(oidc): allow service worker to chrome 70 (release) --- packages/oidc-client/src/initWorker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 537e3fd5c..9567c9825 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -165,7 +165,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName return null; } const { name, version } = getBrowser(); - if (name === 'chrome' && parseInt(version) < 90) { + if (name === 'chrome' && parseInt(version) <= 70) { return null; } if (name === 'opera') { From 28e21acd8fbda1a7190917a80239b595fa5f2f36 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 15 Aug 2023 19:09:00 +0000 Subject: [PATCH 038/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a3b9bda8d..3c04235ce 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.3.1", + "version": "7.3.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index fcca45f46..c90cbc7e7 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.3.1'; +export default '7.3.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index ef230d814..c92e5f303 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.3.1", + "version": "7.3.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index fcca45f46..c90cbc7e7 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.3.1'; +export default '7.3.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ab2c0a42f..19705035a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.3.1", + "version": "7.3.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e4e74091a8a6fadb64429dcccbd43331af62f920 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 15 Aug 2023 22:17:04 +0200 Subject: [PATCH 039/565] fix(oidc): parent instead of top for iframe allow app inside iframe (#1130) (release) --- packages/oidc-client/src/oidc.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 318cd51cf..017987cc7 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -161,14 +161,14 @@ Please checkout that you are using OIDC hook inside a Date: Tue, 15 Aug 2023 20:20:54 +0000 Subject: [PATCH 040/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 3c04235ce..89c9b6d53 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.3.2", + "version": "7.3.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index c90cbc7e7..610bd06db 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.3.2'; +export default '7.3.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index c92e5f303..f0594efee 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.3.2", + "version": "7.3.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index c90cbc7e7..610bd06db 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.3.2'; +export default '7.3.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 19705035a..bc1020eb6 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.3.2", + "version": "7.3.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 6d371ff1ce909ae40ef2f44a145bdcd322ca9d90 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 25 Aug 2023 15:47:23 +0200 Subject: [PATCH 041/565] fix(oidc-service-worker): gracefull timeout on firefox (release) (#1132) * fix(oidc-service-worker): gracefull timeout on firefox * Update OidcServiceWorker.ts (alpha) --- .../oidc-client-service-worker/src/OidcServiceWorker.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 7b675e59f..9702d2649 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -131,8 +131,7 @@ const handleFetch = async (event: FetchEvent) => { const newRequest = new Request(originalRequest, init); - // @ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void - event.waitUntil(event.respondWith(fetch(newRequest))); + event.respondWith(fetch(newRequest)); return; } @@ -262,8 +261,7 @@ const handleFetch = async (event: FetchEvent) => { }); }); - // @ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void - event.waitUntil(event.respondWith(maPromesse)); + event.respondWith(maPromesse); } }; From 9a05b9f13a7d429f044bf84d57af64d356999955 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 25 Aug 2023 13:50:35 +0000 Subject: [PATCH 042/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 89c9b6d53..6020c6114 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.3.3", + "version": "7.3.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 610bd06db..ea66b643f 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.3.3'; +export default '7.3.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f0594efee..7eb133d68 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.3.3", + "version": "7.3.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 610bd06db..ea66b643f 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.3.3'; +export default '7.3.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index bc1020eb6..f80026ff4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.3.3", + "version": "7.3.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 823a3c37351e39b0bb1290228f72c58f11a28960 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 5 Sep 2023 15:16:28 +0200 Subject: [PATCH 043/565] fix(oidc+serviceworker): better issueAt --- .../oidc-client-service-worker/src/types.ts | 1 + .../src/utils/tokens.ts | 27 ++++++++++++++- packages/oidc-client/src/parseTokens.ts | 34 +++++++++++++------ 3 files changed, 51 insertions(+), 11 deletions(-) diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 911eb4f6b..61f3a0bc9 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -86,6 +86,7 @@ export type IdTokenPayload = { export type AccessTokenPayload = { exp: number; sub: string; + iat: number; } export type Tokens = { diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 8504b9a42..80a9157db 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -1,6 +1,13 @@ /* eslint-disable simple-import-sort/exports */ import { TOKEN, TokenRenewMode } from '../constants'; -import { OidcConfig, OidcConfiguration, OidcServerConfiguration, Tokens } from '../types'; +import { + AccessTokenPayload, + IdTokenPayload, + OidcConfig, + OidcConfiguration, + OidcServerConfiguration, + Tokens +} from '../types'; import { countLetter } from './strings'; function parseJwt(token: string) { @@ -92,6 +99,22 @@ const isTokensOidcValid = ( return { isValid: true, reason: '' }; }; +function extractedIssueAt(tokens: Tokens, accessTokenPayload: AccessTokenPayload | null, _idTokenPayload : IdTokenPayload) { + if (!tokens.issued_at) { + if (accessTokenPayload && accessTokenPayload.iat) { + return accessTokenPayload.iat; + } else if (_idTokenPayload && _idTokenPayload.iat) { + return _idTokenPayload.iat; + } else { + const currentTimeUnixSecond = new Date().getTime() / 1000; + return currentTimeUnixSecond; + } + } else if (typeof tokens.issued_at == "string") { + return parseInt(tokens.issued_at, 10); + } + return tokens.issued_at; +} + function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string) { if (!tokens.issued_at) { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -126,6 +149,8 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu TOKEN.REFRESH_TOKEN + '_' + configurationName; } + tokens.issued_at = extractedIssueAt(tokens, accessTokenPayload, _idTokenPayload); + const expireIn = typeof tokens.expires_in == "string" ? parseInt(tokens.expires_in, 10) : tokens.expires_in; const idTokenExpiresAt = diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index cd10b11cb..c57816ca9 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -1,4 +1,4 @@ -import { sleepAsync } from './initWorker.js'; +import {sleepAsync} from './initWorker.js'; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); @@ -46,20 +46,29 @@ export const TokenRenewMode = { id_token_invalid: 'id_token_invalid', }; +function extractedIssueAt(tokens, accessTokenPayload, _idTokenPayload) { + if (!tokens.issuedAt) { + if (accessTokenPayload && accessTokenPayload.iat) { + return accessTokenPayload.iat; + } else if (_idTokenPayload && _idTokenPayload.iat) { + return _idTokenPayload.iat; + } else { + const currentTimeUnixSecond = new Date().getTime() / 1000; + return currentTimeUnixSecond; + } + } else if (typeof tokens.issuedAt == "string") { + return parseInt(tokens.issuedAt, 10); + } + return tokens.issuedAt; +} + export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Tokens => { if (!tokens) { return null; } let accessTokenPayload; const expireIn = typeof tokens.expiresIn == "string" ? parseInt(tokens.expiresIn, 10) : tokens.expiresIn; - - if (!tokens.issuedAt) { - const currentTimeUnixSecond = new Date().getTime() / 1000; - tokens.issuedAt = currentTimeUnixSecond; - } else if (typeof tokens.issuedAt == "string") { - tokens.issuedAt = parseInt(tokens.issuedAt, 10); - } - + if (tokens.accessTokenPayload !== undefined) { accessTokenPayload = tokens.accessTokenPayload; } else { @@ -70,6 +79,8 @@ export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Toke const idTokenExpireAt = (_idTokenPayload && _idTokenPayload.exp) ? _idTokenPayload.exp : Number.MAX_VALUE; const accessTokenExpiresAt = (accessTokenPayload && accessTokenPayload.exp) ? accessTokenPayload.exp : tokens.issuedAt + expireIn; + tokens.issuedAt = extractedIssueAt(tokens, accessTokenPayload, _idTokenPayload); + let expiresAt; if(tokens.expiresAt) { @@ -133,7 +144,10 @@ export const parseOriginalTokens = (tokens, oldTokens, tokenRenewMode: string) = export const computeTimeLeft = (refreshTimeBeforeTokensExpirationInSecond, expiresAt) => { const currentTimeUnixSecond = new Date().getTime() / 1000; - return Math.round(((expiresAt - refreshTimeBeforeTokensExpirationInSecond) - currentTimeUnixSecond)); + + const timeLeftSecond = expiresAt - currentTimeUnixSecond; + + return Math.round(timeLeftSecond - refreshTimeBeforeTokensExpirationInSecond); }; export const isTokensValid = (tokens) => { From 6941766614d18ff3c92bbd00bdf0583350b16b7f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 7 Sep 2023 21:52:06 +0200 Subject: [PATCH 044/565] fix(service-worker): setAccessTokenToNavigateRequests always true (#1136) (release) --- packages/oidc-client-service-worker/src/OidcServiceWorker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 9702d2649..a3f892351 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -289,8 +289,8 @@ const handleMessage = (event: ExtendableMessageEvent) => { status: null, configurationName, hideAccessToken: !showAccessToken, - setAccessTokenToNavigateRequests: doNotSetAccessTokenToNavigateRequests || true, - convertAllRequestsToCorsExceptNavigate: convertAllRequestsToCorsExceptNavigate || false, + setAccessTokenToNavigateRequests: doNotSetAccessTokenToNavigateRequests ?? true, + convertAllRequestsToCorsExceptNavigate: convertAllRequestsToCorsExceptNavigate ?? false, }; currentDatabase = database[configurationName]; From 8165fab52b89ce20946378c5173783ef06f014ef Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Sep 2023 19:55:52 +0000 Subject: [PATCH 045/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 6020c6114..953e1e47f 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.3.4", + "version": "7.4.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index ea66b643f..7fd0c5df9 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.3.4'; +export default '7.4.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7eb133d68..9fd4d1713 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.3.4", + "version": "7.4.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index ea66b643f..7fd0c5df9 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.3.4'; +export default '7.4.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f80026ff4..ded42d171 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.3.4", + "version": "7.4.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 1980813234a63e13353b8e5623982e714b42ac12 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 14 Sep 2023 11:15:36 +0200 Subject: [PATCH 046/565] feat(demo): hack iframe unregister serviceworker (#1137) --- FAQ.md | 22 +++++++++++++++++++ .../public/staticwebapp.config.json | 9 ++++++++ examples/oidc-client-demo/vite.config.js | 7 +++++- .../public/staticwebapp.config.json | 3 +++ examples/react-oidc-demo/src/Home.tsx | 15 ++++++++++++- examples/react-oidc-demo/vite.config.js | 7 +++++- 6 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 examples/oidc-client-demo/public/staticwebapp.config.json diff --git a/FAQ.md b/FAQ.md index da70b23bd..d6625ab96 100644 --- a/FAQ.md +++ b/FAQ.md @@ -105,3 +105,25 @@ We think that @axa-fr/oidc-client is a good choice for the following reasons :
@axa-fr/oidc-client is the simplest and cheapest.

+ + +## Good Security Practices : does a Hacker can unregister the Service Worker and retrieve tokens via an Iframe ? + +If you follow these 2 practices, it is impossible to retrieve tokens via an Iframe call and Service Worker unregistration. + +1 - Configure the CSP (Content Security Policy) correctly (server side). +example: + +````bash +server: { + headers: { + "Content-Security-Policy": "script-src 'self';", + }, + } +```` + +This will make impossible to inject dynamic script into an iframe. + +2 - Set up for **react** or your redirect callback for **oidc-client** at your beginning of your script of your application. +It should be configured before any fetch call to any services. +This will prevent from any XSS attacks. diff --git a/examples/oidc-client-demo/public/staticwebapp.config.json b/examples/oidc-client-demo/public/staticwebapp.config.json new file mode 100644 index 000000000..ccdf4d9d6 --- /dev/null +++ b/examples/oidc-client-demo/public/staticwebapp.config.json @@ -0,0 +1,9 @@ +{ + "navigationFallback": { + "rewrite": "index.html", + "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] + }, + "globalHeaders": { + "content-security-policy": "script-src 'self';" + } +} \ No newline at end of file diff --git a/examples/oidc-client-demo/vite.config.js b/examples/oidc-client-demo/vite.config.js index 755ce8f3c..e95902064 100644 --- a/examples/oidc-client-demo/vite.config.js +++ b/examples/oidc-client-demo/vite.config.js @@ -4,5 +4,10 @@ export default defineConfig({ build: { sourcemap: true, minify: false, - } + }, + server: { + headers: { + //"Content-Security-Policy": "script-src 'self';", + }, + }, }); diff --git a/examples/react-oidc-demo/public/staticwebapp.config.json b/examples/react-oidc-demo/public/staticwebapp.config.json index ba338eae6..ccdf4d9d6 100644 --- a/examples/react-oidc-demo/public/staticwebapp.config.json +++ b/examples/react-oidc-demo/public/staticwebapp.config.json @@ -2,5 +2,8 @@ "navigationFallback": { "rewrite": "index.html", "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] + }, + "globalHeaders": { + "content-security-policy": "script-src 'self';" } } \ No newline at end of file diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index 20353fce5..8cb99b060 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -1,7 +1,15 @@ import { useOidc } from '@axa-fr/react-oidc'; -import React from 'react'; +import React, {useEffect} from 'react'; import {useNavigate} from "react-router-dom"; + +/*const createIframeHack =() => { + const iframe = document.createElement('iframe'); + const html = 'Foo'; + iframe.srcdoc = html; + document.body.appendChild(iframe); +}*/ + export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); const navigate = useNavigate(); @@ -9,6 +17,11 @@ export const Home = () => { const navigateProfile = () => { navigate("/profile"); }; + + /*useEffect(() => { + createIframeHack(); + }, []);*/ + return (
diff --git a/examples/react-oidc-demo/vite.config.js b/examples/react-oidc-demo/vite.config.js index e7b88685e..9fd73d00c 100644 --- a/examples/react-oidc-demo/vite.config.js +++ b/examples/react-oidc-demo/vite.config.js @@ -9,5 +9,10 @@ export default defineConfig({ build: { sourcemap: true, minify: false, - } + }, + server: { + headers: { + // "Content-Security-Policy": "script-src 'self' 'unsafe-inline';", + }, + }, }); From ff7ac6ae7defbd84067b4084222430ef07f15713 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 19 Sep 2023 12:41:41 +0200 Subject: [PATCH 047/565] feat(oidc): add dpop (#1139) (release) --- examples/oidc-client-demo/src/index.tsx | 1 + .../react-oidc-demo/src/configurations.ts | 1 + packages/oidc-client/README.md | 16 +- packages/oidc-client/src/crypto.ts | 17 +- packages/oidc-client/src/initSession.ts | 38 ++- packages/oidc-client/src/initWorker.ts | 40 ++- packages/oidc-client/src/jwt.ts | 248 ++++++++++++++++++ packages/oidc-client/src/login.ts | 82 ++++-- packages/oidc-client/src/oidc.ts | 97 +++++-- packages/oidc-client/src/oidcClient.ts | 4 + packages/oidc-client/src/requests.ts | 53 +++- packages/oidc-client/src/types.ts | 1 + packages/react-oidc/README.md | 5 +- packages/react-oidc/src/FetchToken.tsx | 8 +- readme.md | 3 +- 15 files changed, 525 insertions(+), 89 deletions(-) create mode 100644 packages/oidc-client/src/jwt.ts diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index fe65de5f7..211e0ac68 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -1,4 +1,5 @@ import { OidcClient } from '@axa-fr/oidc-client'; + class Router { getCustomHistory(){ const generateKey = () => diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index 99526d406..195191a54 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -16,6 +16,7 @@ export const configurationIdentityServer = { // monitor_session: true, extras: { youhou_demo: 'youhou' }, token_renew_mode: TokenRenewMode.access_token_invalid, + demonstrating_proof_of_possession: false, }; export const configurationIdentityServer1 = { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index c3e1f0cd1..ac620cd18 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -30,8 +30,9 @@ We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) a @axa-fr/oidc-client is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) - - OIDC using client side Code Credential Grant with pkce only + - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) + - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) + - OIDC using client side Code Credential Grant with pkce only - **Lightweight** : Unpacked Size on npm is **274 kB** - **Simple** - refresh_token and access_token are auto refreshed in background @@ -112,6 +113,7 @@ export const configuration = { authority: 'https://demo.duendesoftware.com', service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, + demonstrating_proof_of_possession: true, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) }; const href = window.location.href; @@ -191,6 +193,7 @@ const configuration = { monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] + demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access }; ``` @@ -316,6 +319,15 @@ export class OidcClient { * @returns A promise resolved with the user information, or rejected with an error. */ async userInfoAsync(noCache = false): Promise; + + /** + * Generate Demonstration of proof of possession. + * @param accessToken The access token to use. + * @param url The url to use. + * @param method The method to use. + * @returns A promise resolved with the proof of possession. + */ + async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string): Promise; } ``` diff --git a/packages/oidc-client/src/crypto.ts b/packages/oidc-client/src/crypto.ts index e99391035..d44370d13 100644 --- a/packages/oidc-client/src/crypto.ts +++ b/packages/oidc-client/src/crypto.ts @@ -44,7 +44,16 @@ export function textEncodeLite(str: string) { } return bufView; } - export const deriveChallengeAsync = (code: string): Promise => { + +export function base64urlOfHashOfASCIIEncodingAsync(code: string):Promise { + return new Promise((resolve, reject) => { + crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => { + return resolve(urlSafe(new Uint8Array(buffer))); + }, error => reject(error)); + }); +} + +export const deriveChallengeAsync = (code: string): Promise => { if (code.length < 43 || code.length > 128) { return Promise.reject(new Error('Invalid code length.')); } @@ -53,9 +62,5 @@ export function textEncodeLite(str: string) { return Promise.reject(new Error('window.crypto.subtle is unavailable.')); } - return new Promise((resolve, reject) => { - crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => { - return resolve(urlSafe(new Uint8Array(buffer))); - }, error => reject(error)); - }); + return base64urlOfHashOfASCIIEncodingAsync(code); }; diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index e3b96efb0..6fcf12d17 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -26,12 +26,28 @@ export const initSession = (configurationName, storage = sessionStorage) => { }; const setNonceAsync = (nonce) => { - localStorage[`oidc.nonce.${configurationName}`] = nonce.nonce; + storage[`oidc.nonce.${configurationName}`] = nonce.nonce; + }; + + const setDemonstratingProofOfPossessionJwkAsync = (jwk) => { + storage[`oidc.jwk.${configurationName}`] = JSON.stringify(jwk); + }; + + const getDemonstratingProofOfPossessionJwkAsync = () => { + return JSON.parse(storage[`oidc.jwk.${configurationName}`]); }; const getNonceAsync = async () => { // @ts-ignore - return { nonce: localStorage[`oidc.nonce.${configurationName}`] }; + return { nonce: storage[`oidc.nonce.${configurationName}`] }; + }; + + const setDemonstratingProofOfPossessionNonce = (dpopNonce:string) => { + storage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; + }; + + const getDemonstratingProofOfPossessionNonce = () => { + return storage[`oidc.dpop_nonce.${configurationName}`]; }; const getTokens = () => { @@ -41,17 +57,17 @@ export const initSession = (configurationName, storage = sessionStorage) => { return JSON.stringify({ tokens: JSON.parse(storage[`oidc.${configurationName}`]).tokens }); }; - let getLoginParamsCache = null; - const setLoginParams = (configurationName:string, data) => { - getLoginParamsCache = data; + let getLoginParamsCache = {}; + const setLoginParams = (data) => { + getLoginParamsCache[configurationName] = data; storage[`oidc.login.${configurationName}`] = JSON.stringify(data); }; - const getLoginParams = (configurationName) => { + const getLoginParams = () => { const dataString = storage[`oidc.login.${configurationName}`]; - if (!getLoginParamsCache) { - getLoginParamsCache = JSON.parse(dataString); + if (!getLoginParamsCache[configurationName]) { + getLoginParamsCache[configurationName] = JSON.parse(dataString); } - return getLoginParamsCache; + return getLoginParamsCache[configurationName]; }; const getStateAsync = async () => { @@ -85,5 +101,9 @@ export const initSession = (configurationName, storage = sessionStorage) => { setStateAsync, getCodeVerifierAsync, setCodeVerifierAsync, + setDemonstratingProofOfPossessionNonce, + getDemonstratingProofOfPossessionNonce, + setDemonstratingProofOfPossessionJwkAsync, + getDemonstratingProofOfPossessionJwkAsync, }; }; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 9567c9825..334409cfe 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -250,7 +250,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName }; const setNonceAsync = (nonce) => { - sessionStorage['oidc.nonce'] = nonce.nonce; + sessionStorage[`oidc.nonce.${configurationName}`] = nonce.nonce; return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName }); }; const getNonceAsync = async () => { @@ -259,25 +259,43 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName // @ts-ignore let nonce = result.nonce; if (!nonce) { - nonce = sessionStorage['oidc.nonce']; + nonce = sessionStorage[`oidc.nonce.${configurationName}`]; console.warn('nonce not found in service worker, using sessionStorage'); } return { nonce }; }; - let getLoginParamsCache = null; - const setLoginParams = (configurationName:string, data) => { - getLoginParamsCache = data; + let getLoginParamsCache = {}; + const setLoginParams = (data) => { + getLoginParamsCache[configurationName] = data; localStorage[`oidc.login.${configurationName}`] = JSON.stringify(data); }; - const getLoginParams = (configurationName) => { + + const getLoginParams = () => { const dataString = localStorage[`oidc.login.${configurationName}`]; - if (!getLoginParamsCache) { - getLoginParamsCache = JSON.parse(dataString); + if (!getLoginParamsCache[configurationName]) { + getLoginParamsCache[configurationName] = JSON.parse(dataString); } - return getLoginParamsCache; + return getLoginParamsCache[configurationName]; + }; + + + const setDemonstratingProofOfPossessionNonce = (dpopNonce: string) => { + localStorage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; + }; + + const getDemonstratingProofOfPossessionNonce = () => { + return localStorage[`oidc.dpop_nonce.${configurationName}`]; + }; + + const setDemonstratingProofOfPossessionJwkAsync = (jwk) => { + localStorage[`oidc.jwk.${configurationName}`] = JSON.stringify(jwk); }; + const getDemonstratingProofOfPossessionJwkAsync = () => { + return JSON.parse(localStorage[`oidc.jwk.${configurationName}`]); + }; + const getStateAsync = async () => { const result = await sendMessageAsync(registration)({ type: 'getState', data: null, configurationName }); // @ts-ignore @@ -325,5 +343,9 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName setStateAsync, getCodeVerifierAsync, setCodeVerifierAsync, + setDemonstratingProofOfPossessionNonce, + getDemonstratingProofOfPossessionNonce, + setDemonstratingProofOfPossessionJwkAsync, + getDemonstratingProofOfPossessionJwkAsync, }; }; diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts new file mode 100644 index 000000000..01376ea66 --- /dev/null +++ b/packages/oidc-client/src/jwt.ts @@ -0,0 +1,248 @@ +// code base on https://coolaj86.com/articles/sign-jwt-webcrypto-vanilla-js/ + +// String (UCS-2) to Uint8Array +// +// because... JavaScript, Strings, and Buffers +// @ts-ignore +function strToUint8(str) { + return new TextEncoder().encode(str); +} + +// Binary String to URL-Safe Base64 +// +// btoa (Binary-to-Ascii) means "binary string" to base64 +// @ts-ignore +function binToUrlBase64(bin) { + return btoa(bin) + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+/g, ''); +} + +// UTF-8 to Binary String +// +// Because JavaScript has a strange relationship with strings +// https://coolaj86.com/articles/base64-unicode-utf-8-javascript-and-you/ +// @ts-ignore +function utf8ToBinaryString(str) { + const escstr = encodeURIComponent(str); + // replaces any uri escape sequence, such as %0A, + // with binary escape, such as 0x0A + const binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) { + return String.fromCharCode(parseInt(p1, 16)); + }); + + return binstr; +} + +// Uint8Array to URL Safe Base64 +// +// the shortest distant between two encodings... binary string +// @ts-ignore +function uint8ToUrlBase64(uint8) { + let bin = ''; + // @ts-ignore + uint8.forEach(function(code) { + bin += String.fromCharCode(code); + }); + return binToUrlBase64(bin); +} + +// UCS-2 String to URL-Safe Base64 +// +// btoa doesn't work on UTF-8 strings +// @ts-ignore +function strToUrlBase64(str) { + return binToUrlBase64(utf8ToBinaryString(str)); +} + +export var JWT = {}; +// @ts-ignore +JWT.sign = (jwk, headers, claims, jwtHeaderType= 'dpop+jwt') => { + // Make a shallow copy of the key + // (to set ext if it wasn't already set) + jwk = Object.assign({}, jwk); + + // The headers should probably be empty + headers.typ = jwtHeaderType; + headers.alg = 'ES256'; + if (!headers.kid) { + // alternate: see thumbprint function below + headers.jwk = { kty: jwk.kty, crv: jwk.crv, x: jwk.x, y: jwk.y }; + } + + const jws = { + // @ts-ignore + // JWT "headers" really means JWS "protected headers" + protected: strToUrlBase64(JSON.stringify(headers)), + // @ts-ignore + // JWT "claims" are really a JSON-defined JWS "payload" + payload: strToUrlBase64(JSON.stringify(claims)) + }; + + // To import as EC (ECDSA, P-256, SHA-256, ES256) + const keyType = { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }; + + // To make re-exportable as JSON (or DER/PEM) + const exportable = true; + + // Import as a private key that isn't black-listed from signing + const privileges = ['sign']; + + // Actually do the import, which comes out as an abstract key type + // @ts-ignore + return window.crypto.subtle + // @ts-ignore + .importKey('jwk', jwk, keyType, exportable, privileges) + .then(function(privateKey) { + // Convert UTF-8 to Uint8Array ArrayBuffer + // @ts-ignore + const data = strToUint8(jws.protected + '.' + jws.payload); + + // The signature and hash should match the bit-entropy of the key + // https://tools.ietf.org/html/rfc7518#section-3 + const signatureType = {name: 'ECDSA', hash: {name: 'SHA-256'}}; + + return window.crypto.subtle.sign(signatureType, privateKey, data).then(function(signature) { + // returns an ArrayBuffer containing a JOSE (not X509) signature, + // which must be converted to Uint8 to be useful + // @ts-ignore + jws.signature = uint8ToUrlBase64(new Uint8Array(signature)); + + // JWT is just a "compressed", "protected" JWS + // @ts-ignore + return jws.protected + '.' + jws.payload + '.' + jws.signature; + }); + }); +}; + + +const EC = {}; +// @ts-ignore +EC.generate = function() { + const keyType = { + name: 'ECDSA', + namedCurve: 'P-256' + }; + const exportable = true; + const privileges = ['sign', 'verify']; + // @ts-ignore + return window.crypto.subtle.generateKey(keyType, exportable, privileges).then(function(key) { + // returns an abstract and opaque WebCrypto object, + // which in most cases you'll want to export as JSON to be able to save + return window.crypto.subtle.exportKey('jwk', key.privateKey); + }); +}; + +// Create a Public Key from a Private Key +// +// chops off the private parts +// @ts-ignore +EC.neuter = function(jwk) { + const copy = Object.assign({}, jwk); + delete copy.d; + copy.key_ops = ['verify']; + return copy; +}; + +export var JWK = {}; +// @ts-ignore +JWK.thumbprint = function(jwk) { + // lexigraphically sorted, no spaces + const sortedPub = '{"crv":"CRV","kty":"EC","x":"X","y":"Y"}' + .replace('CRV', jwk.crv) + .replace('X', jwk.x) + .replace('Y', jwk.y); + + // The hash should match the size of the key, + // but we're only dealing with P-256 + return window.crypto.subtle + .digest({ name: 'SHA-256' }, strToUint8(sortedPub)) + .then(function(hash) { + return uint8ToUrlBase64(new Uint8Array(hash)); + }); +}; + + +const guid = function () { + // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or + // pseudo-random numbers. + // The algorithm is as follows: + // Set the two most significant bits (bits 6 and 7) of the + // clock_seq_hi_and_reserved to zero and one, respectively. + // Set the four most significant bits (bits 12 through 15) of the + // time_hi_and_version field to the 4-bit version number from + // Section 4.1.3. Version4 + // Set all the other bits to randomly (or pseudo-randomly) chosen + // values. + // UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node + // time-low = 4hexOctet + // time-mid = 2hexOctet + // time-high-and-version = 2hexOctet + // clock-seq-and-reserved = hexOctet: + // clock-seq-low = hexOctet + // node = 6hexOctet + // Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + // y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 + // y values are 8, 9, A, B + const guidHolder = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; + const hex = '0123456789abcdef'; + let r = 0; + let guidResponse = ""; + for (let i = 0; i < 36; i++) { + if (guidHolder[i] !== '-' && guidHolder[i] !== '4') { + // each x and y needs to be random + r = Math.random() * 16 | 0; + } + + if (guidHolder[i] === 'x') { + guidResponse += hex[r]; + } else if (guidHolder[i] === 'y') { + // clock-seq-and-reserved first hex is filtered and remaining hex values are random + r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? + r |= 0x8; // set pos 3 to 1 as 1??? + guidResponse += hex[r]; + } else { + guidResponse += guidHolder[i]; + } + } + + return guidResponse; +}; + + +export const generateJwkAsync = () => { + // @ts-ignore + return EC.generate().then(function(jwk) { + // console.info('Private Key:', JSON.stringify(jwk)); + // @ts-ignore + // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); + return jwk; + }); +} + +export const generateJwtDemonstratingProofOfPossessionAsync = (jwk, method = 'POST', url: string, extrasClaims={}) => { + + const claims = { + // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept + jit: btoa(guid()), + htm: method, + htu: url, + iat: Math.round(Date.now() / 1000), + ...extrasClaims, + }; + // @ts-ignore + return JWK.thumbprint(jwk).then(function(kid) { + // @ts-ignore + return JWT.sign(jwk, { /*kid: kid*/ }, claims).then(function(jwt) { + // console.info('JWT:', jwt); + return jwt; + }); + }); +} + +export default EC; \ No newline at end of file diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 375287f2f..f693bd30b 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -1,14 +1,18 @@ -import { generateRandom } from './crypto.js'; -import { eventNames } from './events.js'; -import { initSession } from './initSession.js'; -import { initWorkerAsync } from './initWorker.js'; -import { isTokensOidcValid } from './parseTokens.js'; -import { performAuthorizationRequestAsync, performFirstTokenRequestAsync } from './requests.js'; -import { getParseQueryStringFromLocation } from './route-utils.js'; -import { OidcConfiguration, StringMap } from './types.js'; +import {generateRandom} from './crypto.js'; +import {eventNames} from './events.js'; +import {initSession} from './initSession.js'; +import {initWorkerAsync} from './initWorker.js'; +import {isTokensOidcValid} from './parseTokens.js'; +import { + performAuthorizationRequestAsync, + performFirstTokenRequestAsync +} from './requests.js'; +import {getParseQueryStringFromLocation} from './route-utils.js'; +import {OidcConfiguration, StringMap} from './types.js'; +import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; // eslint-disable-next-line @typescript-eslint/ban-types -export const defaultLoginAsync = (window, configurationName, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { +export const defaultLoginAsync = (window, configurationName:string, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { const originExtras = extras; extras = { ...extras }; const loginLocalAsync = async () => { @@ -42,14 +46,14 @@ export const defaultLoginAsync = (window, configurationName, configuration:OidcC const oidcServerConfiguration = await initAsync(configuration.authority, configuration.authority_configuration); let storage; if (serviceWorker) { - serviceWorker.setLoginParams(configurationName, { callbackPath: url, extras: originExtras }); + serviceWorker.setLoginParams({ callbackPath: url, extras: originExtras }); await serviceWorker.initAsync(oidcServerConfiguration, 'loginAsync', configuration); await serviceWorker.setNonceAsync(nonce); serviceWorker.startKeepAliveServiceWorker(); storage = serviceWorker; } else { const session = initSession(configurationName, configuration.storage ?? sessionStorage); - session.setLoginParams(configurationName, { callbackPath: url, extras: originExtras }); + session.setLoginParams({ callbackPath: url, extras: originExtras }); await session.setNonceAsync(nonce); storage = session; } @@ -91,7 +95,7 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { await serviceWorker.initAsync(oidcServerConfiguration, 'loginCallbackAsync', configuration); await serviceWorker.setSessionStateAsync(sessionState); nonceData = await serviceWorker.getNonceAsync(); - getLoginParams = serviceWorker.getLoginParams(oidc.configurationName); + getLoginParams = serviceWorker.getLoginParams(); state = await serviceWorker.getStateAsync(); serviceWorker.startKeepAliveServiceWorker(); storage = serviceWorker; @@ -99,7 +103,7 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { const session = initSession(oidc.configurationName, configuration.storage ?? sessionStorage); await session.setSessionStateAsync(sessionState); nonceData = await session.getNonceAsync(); - getLoginParams = session.getLoginParams(oidc.configurationName); + getLoginParams = session.getLoginParams(); state = await session.getStateAsync(); storage = session; } @@ -135,8 +139,25 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { } } } + + const url = oidcServerConfiguration.tokenEndpoint; + const headersExtras = {}; + if(configuration.demonstrating_proof_of_possession) { + const jwk = await generateJwkAsync(); + if (serviceWorker) { + await serviceWorker.setDemonstratingProofOfPossessionJwkAsync(jwk); + } else { + const session = initSession(oidc.configurationName, configuration.storage); + await session.setDemonstratingProofOfPossessionJwkAsync(jwk); + } + headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(jwk, 'POST', url); + } - const tokenResponse = await performFirstTokenRequestAsync(storage)(oidcServerConfiguration.tokenEndpoint, { ...data, ...extras }, oidc.configuration.token_renew_mode, tokenRequestTimeout); + const tokenResponse = await performFirstTokenRequestAsync(storage)(url, + { ...data, ...extras }, + headersExtras, + oidc.configuration.token_renew_mode, + tokenRequestTimeout); if (!tokenResponse.success) { throw new Error('Token request failed'); @@ -144,13 +165,8 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { let loginParams; const formattedTokens = tokenResponse.data.tokens; - if (serviceWorker) { - await serviceWorker.initAsync(redirectUri, 'syncTokensAsync', configuration); - loginParams = serviceWorker.getLoginParams(oidc.configurationName); - } else { - const session = initSession(oidc.configurationName, configuration.storage); - loginParams = session.getLoginParams(oidc.configurationName); - } + const demonstratingProofOfPossessionNonce = tokenResponse.data.demonstratingProofOfPossessionNonce; + // @ts-ignore if (tokenResponse.data.state !== extras.state) { throw new Error('state is not valid'); @@ -159,6 +175,30 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { if (!isValid) { throw new Error(`Tokens are not OpenID valid, reason: ${reason}`); } + + if(serviceWorker){ + if(formattedTokens.refreshToken && !formattedTokens.refreshToken.includes("SECURED_BY_OIDC_SERVICE_WORKER")) { + throw new Error("Refresh token should be hidden by service worker"); + } + + if(demonstratingProofOfPossessionNonce && formattedTokens.accessToken && formattedTokens.accessToken.includes("SECURED_BY_OIDC_SERVICE_WORKER")) { + throw new Error("Demonstration of proof of possession require Access token not hidden by service worker"); + } + } + + if (serviceWorker) { + await serviceWorker.initAsync(redirectUri, 'syncTokensAsync', configuration); + loginParams = serviceWorker.getLoginParams(); + if(demonstratingProofOfPossessionNonce) { + await serviceWorker.setDemonstratingProofOfPossessionNonce(demonstratingProofOfPossessionNonce); + } + } else { + const session = initSession(oidc.configurationName, configuration.storage); + loginParams = session.getLoginParams(); + if(demonstratingProofOfPossessionNonce) { + await session.setDemonstratingProofOfPossessionNonce(demonstratingProofOfPossessionNonce); + } + } await oidc.startCheckSessionAsync(oidcServerConfiguration.checkSessionIframe, clientId, sessionState, isSilentSignin); oidc.publishEvent(eventNames.loginCallbackAsync_end, {}); diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 017987cc7..18fafb5df 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -1,23 +1,20 @@ -import { startCheckSessionAsync as defaultStartCheckSessionAsync } from './checkSession.js'; -import { CheckSessionIFrame } from './checkSessionIFrame.js'; -import { eventNames } from './events.js'; -import { initSession } from './initSession.js'; -import { initWorkerAsync, sleepAsync } from './initWorker.js'; -import { defaultLoginAsync, loginCallbackAsync } from './login.js'; -import { destroyAsync, logoutAsync } from './logout.js'; -import { - computeTimeLeft, - isTokensOidcValid, - setTokens, TokenRenewMode, - Tokens, -} from './parseTokens.js'; -import { autoRenewTokens, renewTokensAndStartTimerAsync } from './renewTokens.js'; -import { fetchFromIssuer, performTokenRequestAsync } from './requests.js'; -import { getParseQueryStringFromLocation } from './route-utils.js'; -import defaultSilentLoginAsync, { _silentLoginAsync } from './silentLogin.js'; +import {startCheckSessionAsync as defaultStartCheckSessionAsync} from './checkSession.js'; +import {CheckSessionIFrame} from './checkSessionIFrame.js'; +import {eventNames} from './events.js'; +import {initSession} from './initSession.js'; +import {initWorkerAsync, sleepAsync} from './initWorker.js'; +import {defaultLoginAsync, loginCallbackAsync} from './login.js'; +import {destroyAsync, logoutAsync} from './logout.js'; +import {computeTimeLeft, isTokensOidcValid, setTokens, TokenRenewMode, Tokens,} from './parseTokens.js'; +import {autoRenewTokens, renewTokensAndStartTimerAsync} from './renewTokens.js'; +import {fetchFromIssuer, performTokenRequestAsync} from './requests.js'; +import {getParseQueryStringFromLocation} from './route-utils.js'; +import defaultSilentLoginAsync, {_silentLoginAsync} from './silentLogin.js'; import timer from './timer.js'; -import { AuthorityConfiguration, Fetch, OidcConfiguration, StringMap } from './types.js'; -import { userInfoAsync } from './user.js'; +import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap} from './types.js'; +import {userInfoAsync} from './user.js'; +import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; +import {generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; export const getFetchDefault = () => { return fetch; @@ -93,12 +90,6 @@ export class Oidc { if (refresh_time_before_tokens_expiration_in_second > 60) { refresh_time_before_tokens_expiration_in_second = refresh_time_before_tokens_expiration_in_second - Math.floor(Math.random() * 40); } - if (!configuration.logout_tokens_to_invalidate) { - configuration.logout_tokens_to_invalidate = ['access_token', 'refresh_token']; - } - if (!configuration.authority_timeout_wellknowurl_in_millisecond) { - configuration.authority_timeout_wellknowurl_in_millisecond = 10000; - } this.configuration = { ...configuration, silent_login_uri, @@ -106,6 +97,9 @@ export class Oidc { refresh_time_before_tokens_expiration_in_second, silent_login_timeout: configuration.silent_login_timeout ?? 12000, token_renew_mode: configuration.token_renew_mode ?? TokenRenewMode.access_token_or_id_token_invalid, + demonstrating_proof_of_possession: configuration.demonstrating_proof_of_possession ?? false, + authority_timeout_wellknowurl_in_millisecond: configuration.authority_timeout_wellknowurl_in_millisecond ?? 10000, + logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], }; this.getFetch = getFetch ?? getFetchDefault; this.configurationName = configurationName; @@ -259,7 +253,7 @@ Please checkout that you are using OIDC hook inside a { + + const configuration = this.configuration; + const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(accessToken),}; + + const serviceWorker = await initWorkerAsync(configuration.service_worker_relative_url, this.configurationName); + let demonstratingProofOfPossessionNonce:string = null; + let jwk; + if (serviceWorker) { + demonstratingProofOfPossessionNonce = await serviceWorker.getDemonstratingProofOfPossessionNonce(); + jwk = await serviceWorker.getDemonstratingProofOfPossessionJwkAsync(); + } else { + const session = initSession(this.configurationName, configuration.storage); + jwk = await session.getDemonstratingProofOfPossessionJwkAsync(); + demonstratingProofOfPossessionNonce = await session.getDemonstratingProofOfPossessionNonce(); + } + + if (demonstratingProofOfPossessionNonce) { + claimsExtras['nonce'] = demonstratingProofOfPossessionNonce; + } + + return await generateJwtDemonstratingProofOfPossessionAsync(jwk, method, url, claimsExtras); + } + async syncTokensInfoAsync(configuration, configurationName, currentTokens, forceRefresh = false) { // Service Worker can be killed by the browser (when it wants,for example after 10 seconds of inactivity, so we retreieve the session if it happen) // const configuration = this.configuration; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index c542e16d7..df2b06df4 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -65,6 +65,10 @@ export class OidcClient { return this._oidc.configuration; } + async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string) : Promise { + return this._oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url, method); + } + async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise { return getValidTokenAsync(this._oidc, waitMs, numberWait); } diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 7bf644f00..655cf4cc0 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -3,6 +3,7 @@ import { deriveChallengeAsync, generateRandom } from './crypto.js'; import { OidcAuthorizationServiceConfiguration } from './oidc.js'; import { parseOriginalTokens } from './parseTokens.js'; import { Fetch, StringMap } from './types.js'; +import EC, {JWK, JWT} from './jwt'; const oneHourSecond = 60 * 60; export const fetchFromIssuer = (fetch) => async (openIdIssuerUrl: string, timeCacheSecond = oneHourSecond, storage = window.sessionStorage, timeoutMs = 10000): @@ -83,7 +84,21 @@ export const performRevocationRequestAsync = (fetch) => async (url, token, token }; }; -export const performTokenRequestAsync = (fetch:Fetch) => async (url, details, extras, oldTokens, tokenRenewMode: string, timeoutMs = 10000) => { + +type PerformTokenRequestResponse = { + success: boolean; + status?: number; + data?: any; + demonstratingProofOfPossessionNonce?: string; +} + +export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, + details, + extras, + oldTokens, + headersExtras = {}, + tokenRenewMode: string, + timeoutMs = 10000):Promise => { for (const [key, value] of Object.entries(extras)) { if (details[key] === undefined) { details[key] = value; @@ -97,21 +112,28 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url, details, ex formBody.push(`${encodedKey}=${encodedValue}`); } const formBodyString = formBody.join('&'); - + const response = await internalFetch(fetch)(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + ...headersExtras }, body: formBodyString, }, timeoutMs); if (response.status !== 200) { - return { success: false, status: response.status }; + return { success: false, status: response.status, demonstratingProofOfPossessionNonce:null }; } const tokens = await response.json(); + + let demonstratingProofOfPossessionNonce = null; + if( response.headers.has(demonstratingProofOfPossessionNonceResponseHeader)){ + demonstratingProofOfPossessionNonce = response.headers.get(demonstratingProofOfPossessionNonceResponseHeader); + } return { success: true, data: parseOriginalTokens(tokens, oldTokens, tokenRenewMode), + demonstratingProofOfPossessionNonce: demonstratingProofOfPossessionNonce, }; }; @@ -137,13 +159,18 @@ export const performAuthorizationRequestAsync = (storage: any) => async (url, ex window.location.href = `${url}${queryString}`; }; -export const performFirstTokenRequestAsync = (storage:any) => async (url, extras, tokenRenewMode: string, timeoutMs = 10000) => { - extras = extras ? { ...extras } : {}; - extras.code_verifier = await storage.getCodeVerifierAsync(); +const demonstratingProofOfPossessionNonceResponseHeader = "DPoP-Nonce"; +export const performFirstTokenRequestAsync = (storage:any) => async (url, + formBodyExtras, + headersExtras, + tokenRenewMode: string, + timeoutMs = 10000) => { + formBodyExtras = formBodyExtras ? { ...formBodyExtras } : {}; + formBodyExtras.code_verifier = await storage.getCodeVerifierAsync(); const formBody = []; - for (const property in extras) { + for (const property in formBodyExtras) { const encodedKey = encodeURIComponent(property); - const encodedValue = encodeURIComponent(extras[property]); + const encodedValue = encodeURIComponent(formBodyExtras[property]); formBody.push(`${encodedKey}=${encodedValue}`); } const formBodyString = formBody.join('&'); @@ -151,6 +178,7 @@ export const performFirstTokenRequestAsync = (storage:any) => async (url, extras method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + ...headersExtras, }, body: formBodyString, }, timeoutMs); @@ -158,12 +186,17 @@ export const performFirstTokenRequestAsync = (storage:any) => async (url, extras if (response.status !== 200) { return { success: false, status: response.status }; } + let demonstratingProofOfPossessionNonce:string= null; + if( response.headers.has(demonstratingProofOfPossessionNonceResponseHeader)){ + demonstratingProofOfPossessionNonce = response.headers.get(demonstratingProofOfPossessionNonceResponseHeader); + } const tokens = await response.json(); return { success: true, data: { - state: extras.state, + state: formBodyExtras.state, tokens: parseOriginalTokens(tokens, null, tokenRenewMode), - }, + demonstratingProofOfPossessionNonce, + }, }; }; diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index 47e061106..16f3b0db0 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -27,6 +27,7 @@ export type OidcConfiguration = { monitor_session?: boolean; token_renew_mode?: string; logout_tokens_to_invalidate?:Array; + demonstrating_proof_of_possession?:boolean; }; export interface StringMap { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index bd2551426..6d3986f16 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -31,7 +31,8 @@ We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) a @axa-fr/react is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) + - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) + - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - OIDC using client side Code Credential Grant with pkce only - **Lightweight** : Unpacked Size on npm is **274 kB** - **Simple** @@ -141,6 +142,7 @@ const configuration = { authority: "https://demo.duendesoftware.com", service_worker_relative_url: "/OidcServiceWorker.js", // just comment that line to disable service worker mode service_worker_only: false, + demonstrating_proof_of_possession: true, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) }; const App = () => ( @@ -197,6 +199,7 @@ const configuration = { onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] + demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access }.isRequired, }; diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index e8d1c9e59..13f4c0a10 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -27,7 +27,13 @@ const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcCl headers.set('Accept', 'application/json'); } if (accessToken) { - headers.set('Authorization', `Bearer ${accessToken}`); + if(oidc.configuration.demonstrating_proof_of_possession){ + const demonstrationOdProofOfPossession = await oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url.toString(), optionTmp.method); + headers.set('Authorization', `PoP ${accessToken}`); + headers.set('DPoP', demonstrationOdProofOfPossession); + } else{ + headers.set('Authorization', `Bearer ${accessToken}`); + } if (!optionTmp.credentials) { optionTmp.credentials = 'same-origin'; } diff --git a/readme.md b/readme.md index 27fd11420..e4316d072 100644 --- a/readme.md +++ b/readme.md @@ -38,7 +38,8 @@ Demos: **@axa-fr/oidc-client** is: - **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSS attacks) + - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) + - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - OIDC using client side Code Credential Grant with pkce only - **Lightweight** : Unpacked Size on npm is **274 kB** - **Simple** From 2e5b85670e7929a0b216fe695999a8cddcd2d3a8 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 19 Sep 2023 14:09:33 +0000 Subject: [PATCH 048/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 953e1e47f..779bd0798 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.4.1", + "version": "7.5.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7fd0c5df9..f4201f28b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.4.1'; +export default '7.5.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 9fd4d1713..57f597dbb 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.4.1", + "version": "7.5.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7fd0c5df9..f4201f28b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.4.1'; +export default '7.5.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ded42d171..0488ded9c 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.4.1", + "version": "7.5.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 60d9c4e68622f81ecceaf480de21d4646ae909f1 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 20 Sep 2023 17:55:45 +0200 Subject: [PATCH 049/565] fix(oidc): clean link with service worker (#1141) (release) --- ...e-static-web-apps-black-rock-0dc6b0d03.yml | 2 +- ...-static-web-apps-icy-glacier-004ab4303.yml | 2 +- .../src/OidcServiceWorker.ts | 18 +++++++++++++ .../oidc-client-service-worker/src/types.ts | 6 ++++- .../src/utils/__tests__/domains.spec.ts | 2 ++ .../src/utils/__tests__/testHelper.ts | 2 ++ packages/oidc-client/README.md | 2 +- packages/oidc-client/src/initWorker.ts | 25 +++++++++++-------- packages/react-oidc/README.md | 2 +- 9 files changed, 46 insertions(+), 15 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index 68c99a0ce..84e09145e 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -56,7 +56,7 @@ jobs: # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig app_location: "/examples/react-oidc-demo/dist" # App source code path api_location: "" # Api source code path - optional - output_location: "dist" # Built app content directory - optional + #output_location: "dist" # Built app content directory - optional ###### End of Repository/Build Configurations ###### close_pull_request_job: diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index 938ba00dd..b4f7a1d4e 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -56,7 +56,7 @@ jobs: # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig app_location: "/examples/oidc-client-demo/dist" # App source code path api_location: "" # Api source code path - optional - output_location: "dist" # Built app content directory - optional + #output_location: "dist" # Built app content directory - optional ###### End of Repository/Build Configurations ###### close_pull_request_job: diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index a3f892351..f0bd05557 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -291,6 +291,8 @@ const handleMessage = (event: ExtendableMessageEvent) => { hideAccessToken: !showAccessToken, setAccessTokenToNavigateRequests: doNotSetAccessTokenToNavigateRequests ?? true, convertAllRequestsToCorsExceptNavigate: convertAllRequestsToCorsExceptNavigate ?? false, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, }; currentDatabase = database[configurationName]; @@ -367,6 +369,22 @@ const handleMessage = (event: ExtendableMessageEvent) => { } return; } + case 'setDemonstratingProofOfPossessionNonce': + currentDatabase.demonstratingProofOfPossessionNonce = data.data.demonstratingProofOfPossessionNonce; + port.postMessage({ configurationName }); + return; + case 'getDemonstratingProofOfPossessionNonce': + const demonstratingProofOfPossessionNonce = currentDatabase.demonstratingProofOfPossessionNonce; + port.postMessage({ configurationName, demonstratingProofOfPossessionNonce }); + return; + case 'setDemonstratingProofOfPossessionJwk': + currentDatabase.demonstratingProofOfPossessionJwkJson = data.data.demonstratingProofOfPossessionJwkJson; + port.postMessage({ configurationName }); + return; + case 'getDemonstratingProofOfPossessionJwk': + const demonstratingProofOfPossessionJwkJson = currentDatabase.demonstratingProofOfPossessionJwkJson; + port.postMessage({ configurationName, demonstratingProofOfPossessionJwkJson }); + return; case 'setState': currentDatabase.state = data.data.state; port.postMessage({ configurationName }); diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 61f3a0bc9..d669b0b96 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -31,7 +31,7 @@ export interface FetchHeaders extends Headers { } export type Status = 'LOGGED' | 'LOGGED_IN' | 'LOGGED_OUT' | 'NOT_CONNECTED' | 'LOGOUT_FROM_ANOTHER_TAB' | 'SESSION_LOST' | 'REQUIRE_SYNC_TOKENS' | 'FORCE_REFRESH' | null; -export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce' | 'getNonce'; +export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce' | 'getNonce' | 'setDemonstratingProofOfPossessionNonce' | 'getDemonstratingProofOfPossessionNonce' | 'setDemonstratingProofOfPossessionJwk' | 'getDemonstratingProofOfPossessionJwk'; export type MessageData = { status: Status; @@ -41,6 +41,8 @@ export type MessageData = { state: string; codeVerifier: string; sessionState: string; + demonstratingProofOfPossessionNonce: string; + demonstratingProofOfPossessionJwkJson: string; nonce: Nonce; } @@ -68,6 +70,8 @@ export type OidcConfig = { hideAccessToken: boolean; convertAllRequestsToCorsExceptNavigate: boolean, setAccessTokenToNavigateRequests: boolean, + demonstratingProofOfPossessionNonce: string | null; + demonstratingProofOfPossessionJwkJson: string | null; } export type IdTokenPayload = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 6794c76b8..36a01768d 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -51,6 +51,8 @@ describe('domains', () => { hideAccessToken: true, convertAllRequestsToCorsExceptNavigate: false, setAccessTokenToNavigateRequests: true, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, }, }; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index d620bab03..0e29f7476 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -125,6 +125,8 @@ class OidcConfigBuilder { hideAccessToken: true, convertAllRequestsToCorsExceptNavigate: false, setAccessTokenToNavigateRequests: true, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index ac620cd18..b617635aa 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -113,7 +113,7 @@ export const configuration = { authority: 'https://demo.duendesoftware.com', service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, - demonstrating_proof_of_possession: true, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) + demonstrating_proof_of_possession: false, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) }; const href = window.location.href; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 334409cfe..d073c5f09 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -146,7 +146,7 @@ export const excludeOs = (operatingSystem) => { return false; }; -const sendMessageAsync = (registration) => (data) => { +const sendMessageAsync = (registration) => (data) : Promise => { return new Promise(function(resolve, reject) { const messageChannel = new MessageChannel(); messageChannel.port1.onmessage = function (event) { @@ -279,21 +279,26 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName return getLoginParamsCache[configurationName]; }; - - const setDemonstratingProofOfPossessionNonce = (dpopNonce: string) => { - localStorage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; + const setDemonstratingProofOfPossessionNonce = (demonstratingProofOfPossessionNonce: string) => { + sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionNonce', data: { demonstratingProofOfPossessionNonce }, configurationName }); }; - const getDemonstratingProofOfPossessionNonce = () => { - return localStorage[`oidc.dpop_nonce.${configurationName}`]; + const getDemonstratingProofOfPossessionNonce = async () => { + const result = await sendMessageAsync(registration)({type: 'getDemonstratingProofOfPossessionNonce', data: null, configurationName}); + return result.demonstratingProofOfPossessionNonce; }; - const setDemonstratingProofOfPossessionJwkAsync = (jwk) => { - localStorage[`oidc.jwk.${configurationName}`] = JSON.stringify(jwk); + const setDemonstratingProofOfPossessionJwkAsync = (demonstratingProofOfPossessionJwk:string) => { + const demonstratingProofOfPossessionJwkJson = JSON.stringify(demonstratingProofOfPossessionJwk); + sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionJwk', data: { demonstratingProofOfPossessionJwkJson }, configurationName }); }; - const getDemonstratingProofOfPossessionJwkAsync = () => { - return JSON.parse(localStorage[`oidc.jwk.${configurationName}`]); + const getDemonstratingProofOfPossessionJwkAsync = async () => { + const result = await sendMessageAsync(registration)({type: 'getDemonstratingProofOfPossessionJwk', data: null, configurationName}); + if(!result.demonstratingProofOfPossessionJwkJson) { + return null; + } + return JSON.parse(result.demonstratingProofOfPossessionJwkJson); }; const getStateAsync = async () => { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 6d3986f16..6b8f226b0 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -142,7 +142,7 @@ const configuration = { authority: "https://demo.duendesoftware.com", service_worker_relative_url: "/OidcServiceWorker.js", // just comment that line to disable service worker mode service_worker_only: false, - demonstrating_proof_of_possession: true, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) + demonstrating_proof_of_possession: false, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) }; const App = () => ( From 79b3889a3441b5bf95f980db7c2ae6aed60da8da Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 20 Sep 2023 15:59:20 +0000 Subject: [PATCH 050/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 779bd0798..76d7a7fc5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.5.0", + "version": "7.5.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f4201f28b..65bc622bf 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.5.0'; +export default '7.5.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 57f597dbb..e4e65c0f5 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.5.0", + "version": "7.5.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f4201f28b..65bc622bf 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.5.0'; +export default '7.5.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0488ded9c..7e2c4d5f8 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.5.0", + "version": "7.5.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3e0e5546ec756b4a9ddad695e4e2368c5721175f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 21 Sep 2023 11:12:26 +0200 Subject: [PATCH 051/565] feat(service-worker): add to trusted type (#1142) (release) --- .../src/OidcServiceWorker.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index f0bd05557..b687771c0 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -17,6 +17,20 @@ import { } from './utils'; import { replaceCodeVerifier } from './utils/codeVerifier'; +// @ts-ignore +if ((typeof trustedTypes !== 'undefined') && (typeof trustedTypes.createPolicy == 'function')) { + // @ts-ignore + trustedTypes.createPolicy('default', { + createScriptURL: function(url: string) { + if (url == scriptFilename) { + return url; + } else { + throw new Error('Untrusted script URL blocked: ' + url); + } + }, + }); +} + const _self = self as ServiceWorkerGlobalScope & typeof globalThis; declare let trustedDomains: TrustedDomains; From 4f9b3c0b767d4b955223febcc833e6ff47e997ef Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 21 Sep 2023 09:15:43 +0000 Subject: [PATCH 052/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 76d7a7fc5..b0aa74b18 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.5.1", + "version": "7.6.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 65bc622bf..8bd7de299 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.5.1'; +export default '7.6.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e4e65c0f5..e92d98763 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.5.1", + "version": "7.6.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 65bc622bf..8bd7de299 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.5.1'; +export default '7.6.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 7e2c4d5f8..a36e36f7f 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.5.1", + "version": "7.6.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 8f24b119613fef5d7214826528bdb04c931a1986 Mon Sep 17 00:00:00 2001 From: Mateusz Popielarz Date: Fri, 13 Oct 2023 19:19:21 +0200 Subject: [PATCH 053/565] doc(faq): Update FAQ.md (#1151) Grammar/style were fixed. --- FAQ.md | 70 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/FAQ.md b/FAQ.md index d6625ab96..ab2c68f67 100644 --- a/FAQ.md +++ b/FAQ.md @@ -2,31 +2,30 @@ ## Condition to make silent signing work -Third party cookies are blocked by default on Safari. -They will be on all browsers very soon. -Today, silent signing work on safari only if OIDC provider is on the same domain than client application. -Third party cookies are blocked. They will be on all browsers very soon. +Third-party cookies are blocked by default on Safari and will be blocked on all browsers soon. +Today, silent signing works on Safari only if the OIDC provider and the client application are on the same domain. -The only way to be sure to have silent signing working on all browsers, you need to have your OIDC provider on the same domain than your client application. +To guarantee that silent signing functions on all browsers, place your OIDC provider on the same domain as your client application. -Example of domain that work: -- https://oidc-provider.axa.fr -- https://my-app.axa.fr +Example domains that work: -Silent Signing use cookies with your OIDC provider to restore the session and retrieve tokens. -It open in background an IFrame to a specific page to your OIDC provider. +https://oidc-provider.axa.fr +https://my-app.axa.fr + +Silent signing uses cookies from your OIDC provider to restore the session and retrieve tokens. +It opens an IFrame in the background, directed to a specific page on your OIDC provider. ## Condition to make Single Logout to work -Same constraint for Single Logout that for "silent signing". +The same domain constraint for "silent signing" applies to Single Logout. -Single logout allow your to disconnect from multiple OIDC Client session in one action event if your are connected on different application. +Single Logout allows you to disconnect from multiple OIDC Client sessions in one action, even if you are connected to different applications. ## Condition to make Monitor Session to work -Same constraint for "monitorSession" that for "silent signing". +Same domain constraint for "silent signing" applies to "monitorSession". -Monitor session allow you to be notified when your session is expired or when you are disconnected from your OIDC provider. +Monitor session notifies you when your session expires or when you are disconnected from your OIDC provider. ## Does Service Worker is mandatory ? @@ -51,16 +50,16 @@ If your Service Worker file is already registered on your browser, your need to ## Tokens are always refreshed in background every seconds -@axa-fr/oidc-client refresh automatically tokens in background. -It refresh token before its expiration to have always a valid token. +The @axa-fr/oidc-client automatically refreshes tokens in the background. +It refreshes tokens before expiration to maintain valid tokens at all times. -If your tokens sessions Lifetime is too short, it will refresh it very often. -It start refreshing 120 seconds before expiration. +If your token session lifetime is too short, frequent refreshes will occur. +Token refreshing starts 120 seconds before expiration. -So set a session validity upper from 3 minutes is a good idea. +Setting a session validity longer than 3 minutes is advisable. -By default @axa-fr/oidc-client take the shortest lifetime between access_token and id_token. -You can use the option "token_renew_mode" to change this behavior. +By default, @axa-fr/oidc-client chooses the shorter lifetime between access_token and id_token. +Use the "token_renew_mode" option to change this behavior. - **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" @@ -69,18 +68,19 @@ https://github.com/AxaFrance/react-oidc/issues/1098 ## window.crypto.subtle is unavailable over HTTP -The library does not work over HTTP. You need to use HTTPS. -We think it is quite easy to setup nowadays event on local development. +The library doesn't work over HTTP. Use HTTPS. +Setting up HTTPS is relatively easy, even for local development. https://github.com/AxaFrance/react-oidc/issues/1028 ## Why OIDC at Client side instead of BFF (Backend for Frontend) ? -We think that @axa-fr/oidc-client is a good choice for the following reasons : -- Secure by default with the use of the Service Worker. OIDC at Server Side from a BFF can be secure but with a bad configuration it can be very insecure. With OIDC Client you reuse the OIDC Server configuration which generally is well configured by OIDC security experts, so secure. -- With OIDC at Server side, It is more difficult to fine grain the scope of the token. With OIDC at Client side you can acquire a new token with a new scope for specific scenario (multiple authentication). You can fine tune token lifetime and scope for each scenario. -- Sometime your Web Application does not need a server, OIDC at client side is a good choice because you do not need to spend money for a server juste for Authentication. For example for a payment, you can retrieve only an access_token valid 2 minutes without any refresh_token. -- OIDC at Client side can be also a good choice for a fast time to market. You can start with OIDC at Client side and then migrate to OIDC at Server side if you need it. The two solutions are compatible. +We recommend @axa-fr/oidc-client for these reasons: + +Secure by default: Uses Service Worker. Server-side OIDC can be insecure if poorly configured. Client-side reuses server-side configurations, usually set by experts. +Fine-grained scope control: Easier to tailor token scope and lifetime for specific scenarios when using client-side OIDC. +No server needed: Client-side OIDC eliminates the need for a separate authentication server, saving money. +Quick time-to-market: Start with client-side OIDC, migrate to server-side if needed. Both are compatible.

for **react** or your redirect callback for **oidc-client** at your beginning of your script of your application. -It should be configured before any fetch call to any services. -This will prevent from any XSS attacks. +2 - Initialize `` for **React** or the redirect callback for **oidc-client** at the start of your application script. +Configure it before making any fetch calls to services. +This guards against XSS attacks. From ec5ba27f463c513e4d476621f684d0dcccd34470 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 19 Oct 2023 21:45:41 +0200 Subject: [PATCH 054/565] feat(oidc): make location injectable (release) (#1155) * feat(oidc): make location injectable (alpha) * feat(oidc): fix test (beta) * fix webapp * abstract Location (beta) * update (beta) * updat README.md --- .../public/staticwebapp.config.json | 3 -- .../public/staticwebapp.config.json | 3 -- packages/oidc-client/README.md | 8 +++- packages/oidc-client/src/index.ts | 1 + packages/oidc-client/src/initWorker.ts | 24 ++++++------ packages/oidc-client/src/location.ts | 32 ++++++++++++++++ packages/oidc-client/src/login.ts | 13 ++++--- packages/oidc-client/src/logout.spec.ts | 35 +++++++++++++----- packages/oidc-client/src/logout.ts | 11 +++--- packages/oidc-client/src/oidc.ts | 37 +++++++++++++------ packages/oidc-client/src/oidcClient.ts | 5 ++- packages/oidc-client/src/requests.ts | 5 ++- packages/react-oidc/README.md | 1 + packages/react-oidc/src/OidcProvider.tsx | 9 +++-- .../react-oidc/src/core/routes/OidcRoutes.tsx | 6 ++- 15 files changed, 133 insertions(+), 60 deletions(-) create mode 100644 packages/oidc-client/src/location.ts diff --git a/examples/oidc-client-demo/public/staticwebapp.config.json b/examples/oidc-client-demo/public/staticwebapp.config.json index ccdf4d9d6..ba338eae6 100644 --- a/examples/oidc-client-demo/public/staticwebapp.config.json +++ b/examples/oidc-client-demo/public/staticwebapp.config.json @@ -2,8 +2,5 @@ "navigationFallback": { "rewrite": "index.html", "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] - }, - "globalHeaders": { - "content-security-policy": "script-src 'self';" } } \ No newline at end of file diff --git a/examples/react-oidc-demo/public/staticwebapp.config.json b/examples/react-oidc-demo/public/staticwebapp.config.json index ccdf4d9d6..ba338eae6 100644 --- a/examples/react-oidc-demo/public/staticwebapp.config.json +++ b/examples/react-oidc-demo/public/staticwebapp.config.json @@ -2,8 +2,5 @@ "navigationFallback": { "rewrite": "index.html", "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] - }, - "globalHeaders": { - "content-security-policy": "script-src 'self';" } } \ No newline at end of file diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index b617635aa..d9b08e816 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -117,7 +117,13 @@ export const configuration = { }; const href = window.location.href; -const oidcClient = OidcClient.getOrCreate(() => fetch)(configuration); +const oidcClient = OidcClient.getOrCreate()(configuration); + +// You can inject you own fetch (default Fetch Interface) function and location object (respecting IOidcLocation interface) +// import {OidcLocation} from '@axa-fr/oidc-client' +// const oidcClient = OidcClient.getOrCreate(() => fetch, new OidcLocation())(configuration); + + console.log(href); diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index ef6a82997..2dc2a8c9c 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -7,4 +7,5 @@ export type { OidcConfiguration, StringMap, } from './types.js'; +export { type ILOidcLocation, OidcLocation } from './location.js'; export { type OidcUserInfo, OidcClient } from './oidcClient.js'; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index d073c5f09..72a8a794b 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -2,6 +2,7 @@ import { parseOriginalTokens } from './parseTokens.js'; import timer from './timer.js'; import { OidcConfiguration } from './types.js'; import codeVersion from './version.js'; +import {ILOidcLocation} from "./location"; export const getOperatingSystem = (navigator) => { const nVer = navigator.appVersion; @@ -136,6 +137,16 @@ const isServiceWorkerProxyActiveAsync = () => { }).catch(error => { console.log(error); }); }; +export const defaultServiceWorkerUpdateRequireCallback = (location:ILOidcLocation) => async (registration: any, stopKeepAlive: Function) => { + stopKeepAlive(); + await registration.update(); + const isSuccess = await registration.unregister(); + console.log(`Service worker unregistering ${isSuccess}`) + await sleepAsync(2000); + location.reload(); +} + + export const excludeOs = (operatingSystem) => { if (operatingSystem.os === 'iOS' && operatingSystem.osVersion.startsWith('12')) { return true; @@ -214,18 +225,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName const serviceWorkerVersion = result.version; if(serviceWorkerVersion !== codeVersion) { console.warn(`Service worker ${serviceWorkerVersion} version mismatch with js client version ${codeVersion}, unregistering and reloading`); - - if(oidcConfiguration.service_worker_update_require_callback) - { - await oidcConfiguration.service_worker_update_require_callback(registration, stopKeepAlive); - } else { - stopKeepAlive(); - await registration.update(); - const isSuccess = await registration.unregister(); - console.log(`Service worker unregistering ${isSuccess}`) - await sleepAsync(2000); - window.location.reload(); - } + await oidcConfiguration.service_worker_update_require_callback(registration, stopKeepAlive); } // @ts-ignore diff --git a/packages/oidc-client/src/location.ts b/packages/oidc-client/src/location.ts new file mode 100644 index 000000000..351d262ea --- /dev/null +++ b/packages/oidc-client/src/location.ts @@ -0,0 +1,32 @@ + +export interface ILOidcLocation { + open(url:string):void; + reload():void; + getCurrentHref():string; + getPath():string; + getOrigin():string; +} + +export class OidcLocation implements ILOidcLocation { + open(url:string) { + window.open(url, '_self'); + } + + reload() { + window.location.reload(); + } + + getCurrentHref() { + return window.location.href; + } + + getPath() { + const location = window.location; + return location.pathname + (location.search || '') + (location.hash || ''); + } + + getOrigin(): string { + return window.origin; + } + +} diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index f693bd30b..a56ce4e36 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -10,14 +10,14 @@ import { import {getParseQueryStringFromLocation} from './route-utils.js'; import {OidcConfiguration, StringMap} from './types.js'; import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import {ILOidcLocation} from "./location"; // eslint-disable-next-line @typescript-eslint/ban-types -export const defaultLoginAsync = (window, configurationName:string, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { +export const defaultLoginAsync = (configurationName:string, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function, oidcLocation: ILOidcLocation) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { const originExtras = extras; extras = { ...extras }; const loginLocalAsync = async () => { - const location = window.location; - const url = callbackPath || location.pathname + (location.search || '') + (location.hash || ''); + const url = callbackPath || oidcLocation.getPath(); if (!('state' in extras)) { extras.state = generateRandom(16); @@ -66,7 +66,7 @@ export const defaultLoginAsync = (window, configurationName:string, configuratio response_type: 'code', ...extraFinal, }; - await performAuthorizationRequestAsync(storage)(oidcServerConfiguration.authorizationEndpoint, extraInternal); + await performAuthorizationRequestAsync(storage, oidcLocation)(oidcServerConfiguration.authorizationEndpoint, extraInternal); } catch (exception) { publishEvent(eventNames.loginAsync_error, exception); throw exception; @@ -84,7 +84,8 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { const authority = configuration.authority; const tokenRequestTimeout = configuration.token_request_timeout; const oidcServerConfiguration = await oidc.initAsync(authority, configuration.authority_configuration); - const queryParams = getParseQueryStringFromLocation(window.location.href); + const href = oidc.location.getCurrentHref(); + const queryParams = getParseQueryStringFromLocation(href); const sessionState = queryParams.session_state; const serviceWorker = await initWorkerAsync(configuration.service_worker_relative_url, oidc.configurationName); let storage; @@ -108,7 +109,7 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { storage = session; } - const params = getParseQueryStringFromLocation(window.location.toString()); + const params = getParseQueryStringFromLocation(href); if (params.iss && params.iss !== oidcServerConfiguration.issuer) { console.error(); diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index a87443334..ad77d181b 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -3,6 +3,7 @@ import { describe, expect, it, vi } from 'vitest'; import { logoutAsync } from "./logout"; +import {ILOidcLocation, OidcLocation} from "./location"; describe('Logout test suite', () => { @@ -45,21 +46,37 @@ describe('Logout test suite', () => { }; const oidcDatabase = {default: () => oidc}; - - const window = { - location: { - href: "", - origin: "http://localhost:4200", - }, - }; + + let finalUrl = ""; + class OidcLocationMock implements ILOidcLocation{ + open(url: string): void { + finalUrl = url; + } + + getCurrentHref(): string { + return ""; + } + + getPath(): string { + return ""; + } + + reload(): void { + } + + getOrigin(): string { + return "http://localhost:4200"; + } + + } - await logoutAsync(oidc, oidcDatabase, mockFetchFn, window, console)("/logged_out"); + await logoutAsync(oidc, oidcDatabase, mockFetchFn, console, new OidcLocationMock())("/logged_out"); // @ts-ignore const results = mockFetchFn.mock.calls.map((call, index) => call[1].body); expect(results).toEqual(expectedResults); - expect(window.location.href).toBe("http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"); + expect(finalUrl).toBe("http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"); }); }); diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 76296ecfb..b2e7d4734 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -3,6 +3,7 @@ import { initWorkerAsync } from './initWorker.js'; import { performRevocationRequestAsync, TOKEN_TYPE } from './requests.js'; import timer from './timer.js'; import { StringMap } from './types.js'; +import {ILOidcLocation} from "./location"; export const oidcLogoutTokens = { access_token: 'access_token', @@ -26,19 +27,19 @@ export const destroyAsync = (oidc) => async (status) => { oidc.userInfo = null; }; -export const logoutAsync = (oidc, oidcDatabase, fetch, window, console) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { +export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOidcLocation) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { const configuration = oidc.configuration; const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); if (callbackPathOrUrl && (typeof callbackPathOrUrl !== 'string')) { callbackPathOrUrl = undefined; console.warn('callbackPathOrUrl path is not a string'); } - const path = (callbackPathOrUrl === null || callbackPathOrUrl === undefined) ? location.pathname + (location.search || '') + (location.hash || '') : callbackPathOrUrl; + const path = (callbackPathOrUrl === null || callbackPathOrUrl === undefined) ? oicLocation.getPath() : callbackPathOrUrl; let isUri = false; if (callbackPathOrUrl) { isUri = callbackPathOrUrl.includes('https://') || callbackPathOrUrl.includes('http://'); } - const url = isUri ? callbackPathOrUrl : window.location.origin + path; + const url = isUri ? callbackPathOrUrl : oicLocation.getOrigin() + path // @ts-ignore const idToken = oidc.tokens ? oidc.tokens.idToken : ''; try { @@ -94,8 +95,8 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, window, console) => async queryString += `${key}=${encodeURIComponent(value)}`; } } - window.location.href = `${oidcServerConfiguration.endSessionEndpoint}${queryString}`; + oicLocation.open(`${oidcServerConfiguration.endSessionEndpoint}${queryString}`); } else { - window.location.reload(); + oicLocation.reload(); } }; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 18fafb5df..306f75d75 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -2,7 +2,7 @@ import {startCheckSessionAsync as defaultStartCheckSessionAsync} from './checkSe import {CheckSessionIFrame} from './checkSessionIFrame.js'; import {eventNames} from './events.js'; import {initSession} from './initSession.js'; -import {initWorkerAsync, sleepAsync} from './initWorker.js'; +import {defaultServiceWorkerUpdateRequireCallback, initWorkerAsync, sleepAsync} from './initWorker.js'; import {defaultLoginAsync, loginCallbackAsync} from './login.js'; import {destroyAsync, logoutAsync} from './logout.js'; import {computeTimeLeft, isTokensOidcValid, setTokens, TokenRenewMode, Tokens,} from './parseTokens.js'; @@ -15,6 +15,9 @@ import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap} from './typ import {userInfoAsync} from './user.js'; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; import {generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import {ILOidcLocation, OidcLocation} from "./location"; + + export const getFetchDefault = () => { return fetch; @@ -25,6 +28,8 @@ export interface OidcAuthorizationServiceConfigurationJson { issuer:string; } + + export class OidcAuthorizationServiceConfiguration { private checkSessionIframe: string; private issuer: string; @@ -46,11 +51,11 @@ export class OidcAuthorizationServiceConfiguration { } const oidcDatabase = {}; -const oidcFactory = (getFetch : () => Fetch) => (configuration: OidcConfiguration, name = 'default') => { +const oidcFactory = (getFetch : () => Fetch, location: ILOidcLocation = new OidcLocation()) => (configuration: OidcConfiguration, name = 'default') => { if (oidcDatabase[name]) { return oidcDatabase[name]; } - oidcDatabase[name] = new Oidc(configuration, name, getFetch); + oidcDatabase[name] = new Oidc(configuration, name, getFetch, location); return oidcDatabase[name]; }; export type LoginCallback = { @@ -81,7 +86,8 @@ export class Oidc { public configurationName: string; private checkSessionIFrame: CheckSessionIFrame; private getFetch: () => Fetch; - constructor(configuration:OidcConfiguration, configurationName = 'default', getFetch : () => Fetch) { + private location: ILOidcLocation; + constructor(configuration:OidcConfiguration, configurationName = 'default', getFetch : () => Fetch, location: ILOidcLocation = new OidcLocation()) { let silent_login_uri = configuration.silent_login_uri; if (configuration.silent_redirect_uri && !configuration.silent_login_uri) { silent_login_uri = `${configuration.silent_redirect_uri.replace('-callback', '').replace('callback', '')}-login`; @@ -90,6 +96,9 @@ export class Oidc { if (refresh_time_before_tokens_expiration_in_second > 60) { refresh_time_before_tokens_expiration_in_second = refresh_time_before_tokens_expiration_in_second - Math.floor(Math.random() * 40); } + this.location = location ?? new OidcLocation(); + const service_worker_update_require_callback = configuration.service_worker_update_require_callback ?? defaultServiceWorkerUpdateRequireCallback(this.location); + this.configuration = { ...configuration, silent_login_uri, @@ -100,7 +109,9 @@ export class Oidc { demonstrating_proof_of_possession: configuration.demonstrating_proof_of_possession ?? false, authority_timeout_wellknowurl_in_millisecond: configuration.authority_timeout_wellknowurl_in_millisecond ?? 10000, logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], + service_worker_update_require_callback, }; + this.getFetch = getFetch ?? getFetchDefault; this.configurationName = configurationName; this.tokens = null; @@ -137,8 +148,8 @@ export class Oidc { }); } - static getOrCreate = (getFetch : () => Fetch) => (configuration, name = 'default') => { - return oidcFactory(getFetch)(configuration, name); + static getOrCreate = (getFetch : () => Fetch, location:ILOidcLocation) => (configuration, name = 'default') => { + return oidcFactory(getFetch, location)(configuration, name); }; static get(name = 'default') { @@ -154,15 +165,17 @@ Please checkout that you are using OIDC hook inside a { this.loginPromise = null; return result; @@ -641,7 +654,7 @@ Please checkout that you are using OIDC hook inside a { this.logoutPromise = null; return result; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index df2b06df4..4cf592933 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -1,6 +1,7 @@ import { LoginCallback, Oidc } from './oidc.js'; import { getValidTokenAsync, Tokens, ValidToken } from './parseTokens.js'; import { Fetch, OidcConfiguration, StringMap } from './types.js'; +import {ILOidcLocation, OidcLocation} from "./location"; export interface EventSubscriber { (name: string, data:any); @@ -24,8 +25,8 @@ export class OidcClient { this._oidc.publishEvent(eventName, data); } - static getOrCreate = (getFetch : () => Fetch) => (configuration:OidcConfiguration, name = 'default'): OidcClient => { - return new OidcClient(Oidc.getOrCreate(getFetch)(configuration, name)); + static getOrCreate = (getFetch : () => Fetch, location:ILOidcLocation= new OidcLocation()) => (configuration:OidcConfiguration, name = 'default'): OidcClient => { + return new OidcClient(Oidc.getOrCreate(getFetch, location)(configuration, name)); }; static get(name = 'default'):OidcClient { diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 655cf4cc0..345660ace 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -4,6 +4,7 @@ import { OidcAuthorizationServiceConfiguration } from './oidc.js'; import { parseOriginalTokens } from './parseTokens.js'; import { Fetch, StringMap } from './types.js'; import EC, {JWK, JWT} from './jwt'; +import {ILOidcLocation} from "./location"; const oneHourSecond = 60 * 60; export const fetchFromIssuer = (fetch) => async (openIdIssuerUrl: string, timeCacheSecond = oneHourSecond, storage = window.sessionStorage, timeoutMs = 10000): @@ -137,7 +138,7 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, }; }; -export const performAuthorizationRequestAsync = (storage: any) => async (url, extras: StringMap) => { +export const performAuthorizationRequestAsync = (storage: any, oidcLocation: ILOidcLocation) => async (url, extras: StringMap) => { extras = extras ? { ...extras } : {}; const codeVerifier = generateRandom(128); const codeChallenge = await deriveChallengeAsync(codeVerifier); @@ -156,7 +157,7 @@ export const performAuthorizationRequestAsync = (storage: any) => async (url, ex queryString += `${key}=${encodeURIComponent(value)}`; } } - window.location.href = `${url}${queryString}`; + oidcLocation.open(`${url}${queryString}`); }; const demonstratingProofOfPossessionNonceResponseHeader = "DPoP-Nonce"; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 6b8f226b0..7b48a6f6e 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -200,6 +200,7 @@ const configuration = { token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access + location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface }.isRequired, }; diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index 347fc412b..41cd2625c 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -1,4 +1,4 @@ -import { Fetch, getFetchDefault, OidcConfiguration, OidcClient } from '@axa-fr/oidc-client'; +import {Fetch, getFetchDefault, OidcConfiguration, OidcClient, ILOidcLocation, OidcLocation} from '@axa-fr/oidc-client'; import { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import AuthenticatingError from './core/default-component/AuthenticateError.component.js'; @@ -29,6 +29,7 @@ export type OidcProviderProps = { withCustomHistory?: () => CustomHistory; onEvent?: (configuration: string, name: string, data: any) => void; getFetch?: () => Fetch; + location?: ILOidcLocation }; export type OidcSessionProps = { @@ -92,9 +93,10 @@ export const OidcProvider: FC> = ({ withCustomHistory = null, onEvent = null, getFetch = null, + location= null, }) => { const getOidc = (configurationName = 'default') => { - return OidcClient.getOrCreate(getFetch ?? getFetchDefault)(configuration, configurationName); + return OidcClient.getOrCreate(getFetch ?? getFetchDefault, location ?? new OidcLocation())(configuration, configurationName); }; // eslint-disable-next-line @typescript-eslint/naming-convention const [loading, setLoading] = useState(true); @@ -194,7 +196,8 @@ export const OidcProvider: FC> = ({ callbackErrorComponent={authenticatingErrorComponent} authenticatingComponent={authenticatingComponent} configurationName={configurationName} - withCustomHistory={withCustomHistory}> + withCustomHistory={withCustomHistory} + location={location ?? new OidcLocation()}> {children} diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.tsx index bddfd8132..836211f7c 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.tsx @@ -1,4 +1,4 @@ -import { getPath } from '@axa-fr/oidc-client'; +import {getPath, ILOidcLocation} from '@axa-fr/oidc-client'; import React, { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import CallbackComponent from '../default-component/Callback.component.js'; @@ -15,6 +15,7 @@ type OidcRoutesProps = { silent_redirect_uri?: string; silent_login_uri?: string; withCustomHistory?: () => CustomHistory; + location: ILOidcLocation; }; const OidcRoutes: FC> = ({ @@ -24,7 +25,8 @@ const OidcRoutes: FC> = ({ silent_redirect_uri, silent_login_uri, children, configurationName, - withCustomHistory = null, + withCustomHistory = null, + location, }) => { // This exist because in next.js window outside useEffect is null const pathname = window ? getPath(window.location.href) : ''; From 03a6570bb09a98686e67f17b57ee7f7b1849db2c Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 19 Oct 2023 19:49:20 +0000 Subject: [PATCH 055/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index b0aa74b18..271b8b213 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.6.0", + "version": "7.7.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 8bd7de299..ef78750e8 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.6.0'; +export default '7.7.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e92d98763..7ba322774 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.6.0", + "version": "7.7.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 8bd7de299..ef78750e8 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.6.0'; +export default '7.7.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index a36e36f7f..aaa3428e6 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.6.0", + "version": "7.7.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 07d266b32b275038176a407036a338624d2bed47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:06:43 +0200 Subject: [PATCH 056/565] build(npm): bump next from 13.4.12 to 13.5.6 (#1158) Bumps [next](https://github.com/vercel/next.js) from 13.4.12 to 13.5.6. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v13.4.12...v13.5.6) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 109 +++++++++++++++++++++++-------------------------- 1 file changed, 50 insertions(+), 59 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e10f7b049..2dea4dd6d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 13.4.12(react-dom@18.2.0)(react@18.2.0) + version: 13.5.6(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -168,7 +168,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@18.17.1) + version: 4.4.7(@types/node@20.4.5) vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -211,7 +211,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@18.17.1) + version: 4.4.7(@types/node@20.4.5) vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -241,7 +241,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@18.17.1) + version: 4.4.7(@types/node@20.4.5) vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -308,7 +308,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@18.17.1) + version: 4.4.7(@types/node@20.4.5) vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -1158,12 +1158,12 @@ packages: - supports-color dev: true - /@next/env@13.4.12: - resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} + /@next/env@13.5.6: + resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} dev: false - /@next/swc-darwin-arm64@13.4.12: - resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} + /@next/swc-darwin-arm64@13.5.6: + resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1171,8 +1171,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.12: - resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} + /@next/swc-darwin-x64@13.5.6: + resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1180,8 +1180,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.12: - resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} + /@next/swc-linux-arm64-gnu@13.5.6: + resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1189,8 +1189,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.12: - resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} + /@next/swc-linux-arm64-musl@13.5.6: + resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1198,8 +1198,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.12: - resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} + /@next/swc-linux-x64-gnu@13.5.6: + resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1207,8 +1207,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.12: - resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} + /@next/swc-linux-x64-musl@13.5.6: + resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1216,8 +1216,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.12: - resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} + /@next/swc-win32-arm64-msvc@13.5.6: + resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1225,8 +1225,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.12: - resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} + /@next/swc-win32-ia32-msvc@13.5.6: + resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1234,8 +1234,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.12: - resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} + /@next/swc-win32-x64-msvc@13.5.6: + resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1343,8 +1343,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.1 dev: false @@ -1757,7 +1757,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) react-refresh: 0.14.0 - vite: 4.4.7(@types/node@18.17.1) + vite: 4.4.7(@types/node@20.4.5) transitivePeerDependencies: - supports-color dev: true @@ -4515,44 +4515,40 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@13.4.12(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} - engines: {node: '>=16.8.0'} + /next@13.5.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} + engines: {node: '>=16.14.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.12 - '@swc/helpers': 0.5.1 + '@next/env': 13.5.6 + '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001517 - postcss: 8.4.14 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 - zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.12 - '@next/swc-darwin-x64': 13.4.12 - '@next/swc-linux-arm64-gnu': 13.4.12 - '@next/swc-linux-arm64-musl': 13.4.12 - '@next/swc-linux-x64-gnu': 13.4.12 - '@next/swc-linux-x64-musl': 13.4.12 - '@next/swc-win32-arm64-msvc': 13.4.12 - '@next/swc-win32-ia32-msvc': 13.4.12 - '@next/swc-win32-x64-msvc': 13.4.12 + '@next/swc-darwin-arm64': 13.5.6 + '@next/swc-darwin-x64': 13.5.6 + '@next/swc-linux-arm64-gnu': 13.5.6 + '@next/swc-linux-arm64-musl': 13.5.6 + '@next/swc-linux-x64-gnu': 13.5.6 + '@next/swc-linux-x64-musl': 13.5.6 + '@next/swc-win32-arm64-msvc': 13.5.6 + '@next/swc-win32-ia32-msvc': 13.5.6 + '@next/swc-win32-x64-msvc': 13.5.6 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4918,23 +4914,22 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true - /postcss@8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + /postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false + dev: true - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -5968,7 +5963,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 - vite: 4.4.7(@types/node@18.17.1) + vite: 4.4.7(@types/node@20.4.5) vue-tsc: 1.8.8(typescript@5.1.6) transitivePeerDependencies: - '@types/node' @@ -6042,7 +6037,7 @@ packages: dependencies: '@types/node': 20.4.5 esbuild: 0.18.17 - postcss: 8.4.27 + postcss: 8.4.31 rollup: 3.27.0 optionalDependencies: fsevents: 2.3.2 @@ -6365,7 +6360,3 @@ packages: optionalDependencies: commander: 9.5.0 dev: true - - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - dev: false From 41ecf9e1752f291f0d8f96a979ab393f5aaeb885 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:07:02 +0200 Subject: [PATCH 057/565] build(npm): bump @testing-library/dom from 9.3.1 to 9.3.3 (#1161) Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 9.3.1 to 9.3.3. - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v9.3.1...v9.3.3) --- updated-dependencies: - dependency-name: "@testing-library/dom" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/oidc-client/package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7ba322774..c32b081ef 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -23,7 +23,7 @@ "@axa-fr/oidc-client-service-worker": "workspace:*" }, "devDependencies": { - "@testing-library/dom": "^9.3.1", + "@testing-library/dom": "^9.3.3", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "13.3.0", "@vitest/coverage-v8": "^0.33.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2dea4dd6d..26a1579b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,7 +94,7 @@ importers: version: 5.17.0 '@testing-library/user-event': specifier: ^13.5.0 - version: 13.5.0(@testing-library/dom@9.3.1) + version: 13.5.0(@testing-library/dom@9.3.3) '@types/jest': specifier: ^27.5.2 version: 27.5.2 @@ -138,7 +138,7 @@ importers: version: 13.3.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) + version: 14.4.3(@testing-library/dom@9.3.3) '@types/react': specifier: ^18.2.15 version: 18.2.17 @@ -183,8 +183,8 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/dom': - specifier: ^9.3.1 - version: 9.3.1 + specifier: ^9.3.3 + version: 9.3.3 '@testing-library/jest-dom': specifier: ^5.16.5 version: 5.17.0 @@ -269,7 +269,7 @@ importers: version: 13.3.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) + version: 14.4.3(@testing-library/dom@9.3.3) '@types/react': specifier: ^18.2.15 version: 18.2.17 @@ -1363,8 +1363,8 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/dom@9.3.1: - resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} + /@testing-library/dom@9.3.3: + resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.22.5 @@ -1419,23 +1419,23 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.1): + /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.3): resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: '@babel/runtime': 7.22.6 - '@testing-library/dom': 9.3.1 + '@testing-library/dom': 9.3.3 dev: false - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1): + /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.3): resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.1 + '@testing-library/dom': 9.3.3 dev: true /@tootallnate/once@2.0.0: @@ -3773,7 +3773,7 @@ packages: engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 - chalk: 4.1.1 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-width: 3.0.0 external-editor: 3.1.0 @@ -4277,7 +4277,7 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - chalk: 4.1.1 + chalk: 4.1.2 is-unicode-supported: 0.1.0 dev: true @@ -4738,7 +4738,7 @@ packages: engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.1 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.9.0 is-interactive: 1.0.0 From 1b4bc0782c39a8f797de224f74073d4860672cb6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 25 Oct 2023 18:11:14 +0000 Subject: [PATCH 058/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 271b8b213..1e16963f5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.7.0", + "version": "7.7.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index ef78750e8..7f773bea2 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.7.0'; +export default '7.7.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index c32b081ef..d2777327d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.7.0", + "version": "7.7.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index ef78750e8..7f773bea2 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.7.0'; +export default '7.7.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index aaa3428e6..e345a5ef6 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.7.0", + "version": "7.7.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From ac7f37be28883edbe539eff02d0a6a054b2aab14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Oct 2023 16:03:31 +0100 Subject: [PATCH 059/565] build(npm): bump msw from 1.2.2 to 2.0.0 (#1165) Bumps [msw](https://github.com/mswjs/msw) from 1.2.2 to 2.0.0. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v1.2.2...v2.0.0) --- updated-dependencies: - dependency-name: msw dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/react-oidc-demo/package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 279 ++++++++---------- 4 files changed, 131 insertions(+), 154 deletions(-) diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 65d4fab0a..2afb93a35 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -34,7 +34,7 @@ "copyfiles": "2.4.1", "cross-env": "^7.0.3", "jsdom": "22.1.0", - "msw": "1.2.2", + "msw": "2.0.0", "typescript": "5.1.6", "vite": "^4.4.4", "vite-plugin-dts": "^3.3.0", diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1e16963f5..79d2b2ed8 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -38,7 +38,7 @@ "cpy": "^10.1.0", "cpy-cli": "^5.0.0", "rimraf": "5.0.1", - "msw": "1.2.2", + "msw": "2.0.0", "typescript": "5.1.6", "vite": "^4.4.4", "vite-plugin-dts": "^3.3.0", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e345a5ef6..0ead0c202 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -58,7 +58,7 @@ "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "jsdom": "22.1.0", - "msw": "1.2.2", + "msw": "2.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "5.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26a1579b7..aa2a30e0b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 13.5.6(react-dom@18.2.0)(react@18.2.0) + version: 14.0.0(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -161,8 +161,8 @@ importers: specifier: 22.1.0 version: 22.1.0 msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) + specifier: 2.0.0 + version: 2.0.0(typescript@5.1.6) typescript: specifier: 5.1.6 version: 5.1.6 @@ -231,8 +231,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) + specifier: 2.0.0 + version: 2.0.0(typescript@5.1.6) rimraf: specifier: 5.0.1 version: 5.0.1 @@ -292,8 +292,8 @@ importers: specifier: 22.1.0 version: 22.1.0 msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) + specifier: 2.0.0 + version: 2.0.0(typescript@5.1.6) react: specifier: ^18.2.0 version: 18.2.0 @@ -559,6 +559,24 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@bundled-es-modules/cookie@2.0.0: + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + dependencies: + cookie: 0.5.0 + dev: true + + /@bundled-es-modules/js-levenshtein@2.0.1: + resolution: {integrity: sha512-DERMS3yfbAljKsQc0U2wcqGKUWpdFjwqWuoMugEJlqBnKO180/n+4SR/J8MRDt1AN48X1ovgoD9KrdVXcaa3Rg==} + dependencies: + js-levenshtein: 1.1.6 + dev: true + + /@bundled-es-modules/statuses@1.0.1: + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + dependencies: + statuses: 2.0.1 + dev: true + /@esbuild-kit/cjs-loader@2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: @@ -1134,36 +1152,29 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@mswjs/cookies@0.2.2: - resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} + /@mswjs/cookies@1.0.0: + resolution: {integrity: sha512-TdXoBdI+h/EDTsVLCX/34s4+9U0sWi92qFnIGUEikpMCSKLhBeujovyYVSoORNbYgsBH5ga7/tfxyWcEZAxiYA==} engines: {node: '>=14'} - dependencies: - '@types/set-cookie-parser': 2.4.3 - set-cookie-parser: 2.6.0 dev: true - /@mswjs/interceptors@0.17.9: - resolution: {integrity: sha512-4LVGt03RobMH/7ZrbHqRxQrS9cc2uh+iNKSj8UWr8M26A2i793ju+csaB5zaqYltqJmA2jUq4VeYfKmVqvsXQg==} - engines: {node: '>=14'} + /@mswjs/interceptors@0.25.7: + resolution: {integrity: sha512-U7iFYs/qU/5jfz1VDpoYz3xqX9nzhsBXw7q923dv6GiGTy+m2ZLhD33L80R/shHOW/YWjeH6k16GbIHGw+bAng==} + engines: {node: '>=18'} dependencies: - '@open-draft/until': 1.0.3 - '@types/debug': 4.1.8 - '@xmldom/xmldom': 0.8.10 - debug: 4.3.4 - headers-polyfill: 3.1.2 + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 outvariant: 1.4.0 - strict-event-emitter: 0.2.8 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color + strict-event-emitter: 0.5.1 dev: true - /@next/env@13.5.6: - resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} + /@next/env@14.0.0: + resolution: {integrity: sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA==} dev: false - /@next/swc-darwin-arm64@13.5.6: - resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} + /@next/swc-darwin-arm64@14.0.0: + resolution: {integrity: sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1171,8 +1182,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.5.6: - resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} + /@next/swc-darwin-x64@14.0.0: + resolution: {integrity: sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1180,8 +1191,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.5.6: - resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} + /@next/swc-linux-arm64-gnu@14.0.0: + resolution: {integrity: sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1189,8 +1200,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.5.6: - resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} + /@next/swc-linux-arm64-musl@14.0.0: + resolution: {integrity: sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1198,8 +1209,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.5.6: - resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} + /@next/swc-linux-x64-gnu@14.0.0: + resolution: {integrity: sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1207,8 +1218,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.5.6: - resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} + /@next/swc-linux-x64-musl@14.0.0: + resolution: {integrity: sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1216,8 +1227,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.5.6: - resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} + /@next/swc-win32-arm64-msvc@14.0.0: + resolution: {integrity: sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1225,8 +1236,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.5.6: - resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} + /@next/swc-win32-ia32-msvc@14.0.0: + resolution: {integrity: sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1234,8 +1245,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.5.6: - resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} + /@next/swc-win32-x64-msvc@14.0.0: + resolution: {integrity: sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1264,8 +1275,19 @@ packages: fastq: 1.15.0 dev: true - /@open-draft/until@1.0.3: - resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + /@open-draft/deferred-promise@2.2.0: + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + dev: true + + /@open-draft/logger@0.3.0: + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.0 + dev: true + + /@open-draft/until@2.1.0: + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} dev: true /@pkgjs/parseargs@0.11.0: @@ -1464,12 +1486,6 @@ packages: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - dependencies: - '@types/ms': 0.7.31 - dev: true - /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true @@ -1500,10 +1516,6 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true - /@types/node@18.17.1: resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} dev: true @@ -1542,10 +1554,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/set-cookie-parser@2.4.3: - resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} - dependencies: - '@types/node': 20.4.5 + /@types/statuses@2.0.3: + resolution: {integrity: sha512-NwCYScf83RIwCyi5/9cXocrJB//xrqMh5PMw3mYTSFGaI3DuVjBLfO/PCk7QVAC3Da8b9NjxNmTO9Aj9T3rl/Q==} dev: true /@types/testing-library__jest-dom@5.14.9: @@ -1906,17 +1916,6 @@ packages: - typescript dev: true - /@xmldom/xmldom@0.8.10: - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} - engines: {node: '>=10.0.0'} - dev: true - - /@zxing/text-encoding@0.9.0: - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - requiresBuild: true - dev: true - optional: true - /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true @@ -2328,14 +2327,6 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@4.1.1: - resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2465,8 +2456,8 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true @@ -3263,11 +3254,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3419,6 +3405,14 @@ packages: mime-types: 2.1.35 dev: true + /formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + dev: true + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -3596,8 +3590,8 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql@16.7.1: - resolution: {integrity: sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==} + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true @@ -3647,8 +3641,8 @@ packages: hasBin: true dev: true - /headers-polyfill@3.1.2: - resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} + /headers-polyfill@4.0.2: + resolution: {integrity: sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==} dev: true /hosted-git-info@4.1.0: @@ -3872,13 +3866,6 @@ packages: engines: {node: '>=8'} dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -4454,40 +4441,43 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@1.2.2(typescript@5.1.6): - resolution: {integrity: sha512-GsW3PE/Es/a1tYThXcM8YHOZ1S1MtivcS3He/LQbbTCx3rbWJYCtWD5XXyJ53KlNPT7O1VI9sCW3xMtgFe8XpQ==} - engines: {node: '>=14'} + /msw@2.0.0(typescript@5.1.6): + resolution: {integrity: sha512-lw9UHuzNCWoODHaThGeLLIIuzEBUQkj3fJXQnChHifMKbB2UmF2msHd4d/lnyqjAyD0XWoibdviW9wlstFPpkA==} + engines: {node: '>=18'} hasBin: true requiresBuild: true peerDependencies: - typescript: '>= 4.4.x <= 5.1.x' + typescript: '>= 4.7.x <= 5.2.x' peerDependenciesMeta: typescript: optional: true dependencies: - '@mswjs/cookies': 0.2.2 - '@mswjs/interceptors': 0.17.9 - '@open-draft/until': 1.0.3 + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/js-levenshtein': 2.0.1 + '@bundled-es-modules/statuses': 1.0.1 + '@mswjs/cookies': 1.0.0 + '@mswjs/interceptors': 0.25.7 + '@open-draft/until': 2.1.0 '@types/cookie': 0.4.1 '@types/js-levenshtein': 1.1.1 - chalk: 4.1.1 + '@types/statuses': 2.0.3 + chalk: 4.1.2 chokidar: 3.5.3 - cookie: 0.4.2 - graphql: 16.7.1 - headers-polyfill: 3.1.2 + formdata-node: 4.4.1 + graphql: 16.8.1 + headers-polyfill: 4.0.2 inquirer: 8.2.5 is-node-process: 1.2.0 js-levenshtein: 1.1.6 node-fetch: 2.6.12 outvariant: 1.4.0 path-to-regexp: 6.2.1 - strict-event-emitter: 0.4.6 + strict-event-emitter: 0.5.1 type-fest: 2.19.0 typescript: 5.1.6 yargs: 17.7.2 transitivePeerDependencies: - encoding - - supports-color dev: true /muggle-string@0.3.1: @@ -4515,9 +4505,9 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@13.5.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} - engines: {node: '>=16.14.0'} + /next@14.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -4530,7 +4520,7 @@ packages: sass: optional: true dependencies: - '@next/env': 13.5.6 + '@next/env': 14.0.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001517 @@ -4540,20 +4530,25 @@ packages: styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 13.5.6 - '@next/swc-darwin-x64': 13.5.6 - '@next/swc-linux-arm64-gnu': 13.5.6 - '@next/swc-linux-arm64-musl': 13.5.6 - '@next/swc-linux-x64-gnu': 13.5.6 - '@next/swc-linux-x64-musl': 13.5.6 - '@next/swc-win32-arm64-msvc': 13.5.6 - '@next/swc-win32-ia32-msvc': 13.5.6 - '@next/swc-win32-x64-msvc': 13.5.6 + '@next/swc-darwin-arm64': 14.0.0 + '@next/swc-darwin-x64': 14.0.0 + '@next/swc-linux-arm64-gnu': 14.0.0 + '@next/swc-linux-arm64-musl': 14.0.0 + '@next/swc-linux-x64-gnu': 14.0.0 + '@next/swc-linux-x64-musl': 14.0.0 + '@next/swc-win32-arm64-msvc': 14.0.0 + '@next/swc-win32-ia32-msvc': 14.0.0 + '@next/swc-win32-x64-msvc': 14.0.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + /node-fetch@2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} @@ -5330,10 +5325,6 @@ packages: lru-cache: 6.0.0 dev: true - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5422,6 +5413,11 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + /std-env@3.3.3: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true @@ -5437,14 +5433,8 @@ packages: engines: {node: '>=10.0.0'} dev: false - /strict-event-emitter@0.2.8: - resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} - dependencies: - events: 3.3.0 - dev: true - - /strict-event-emitter@0.4.6: - resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} + /strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} dev: true /string-argv@0.3.2: @@ -5894,16 +5884,6 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.11 - dev: true - /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} @@ -6149,12 +6129,9 @@ packages: defaults: 1.0.4 dev: true - /web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 + /web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} dev: true /web-vitals@3.4.0: From b4cee5aec8365ba2b000742001c717f1d543011b Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 29 Oct 2023 15:07:24 +0000 Subject: [PATCH 060/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 79d2b2ed8..8b60f86a5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.7.2", + "version": "7.7.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7f773bea2..4b367674f 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.7.2'; +export default '7.7.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index d2777327d..6d6a3a49f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.7.2", + "version": "7.7.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7f773bea2..4b367674f 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.7.2'; +export default '7.7.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0ead0c202..99fa77561 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.7.2", + "version": "7.7.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 1684abba7d982ecbd2f30610eb140e2ce4549814 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 6 Nov 2023 16:58:36 +0100 Subject: [PATCH 061/565] feat(oidc-client): move fetch to oidc-client (#1175) (release) --- packages/oidc-client/README.md | 10 +++++++ packages/oidc-client/src/fetch.ts | 36 ++++++++++++++++++++++++++ packages/oidc-client/src/oidcClient.ts | 5 ++++ packages/oidc-client/src/user.ts | 3 ++- packages/react-oidc/src/FetchToken.tsx | 34 +++--------------------- 5 files changed, 56 insertions(+), 32 deletions(-) create mode 100644 packages/oidc-client/src/fetch.ts diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index d9b08e816..ab8c64460 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -119,6 +119,9 @@ export const configuration = { const href = window.location.href; const oidcClient = OidcClient.getOrCreate()(configuration); +// Use the fetch bellow to inject access_token and DPOP tokens automatically +const oidcFetch = oidcClient.fetchWithTokens(fetch); + // You can inject you own fetch (default Fetch Interface) function and location object (respecting IOidcLocation interface) // import {OidcLocation} from '@axa-fr/oidc-client' // const oidcClient = OidcClient.getOrCreate(() => fetch, new OidcLocation())(configuration); @@ -319,6 +322,13 @@ export class OidcClient { */ async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise; + /** + * Retrieves a new fetch function that inject bearer tokens (also DPOP tokens). + * @param fetch The current fetch function to use + * @returns Fetch A new fectch function that inject bearer tokens (also DPOP tokens). + */ + getFetchWithTokens(fetch: Fetch): Fetch; + /** * Retrieves OIDC user information. * @param noCache Indicates whether user information should be retrieved bypassing the cache. diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts new file mode 100644 index 000000000..9e78f7948 --- /dev/null +++ b/packages/oidc-client/src/fetch.ts @@ -0,0 +1,36 @@ +import {Fetch} from "./types"; +import {OidcClient} from "./oidcClient"; + +export const fetchWithTokens = (fetch: Fetch, oidcClient: OidcClient | null) => async (...params: Parameters) => { + const [url, options, ...rest] = params; + const optionTmp = options ? { ...options } : { method: 'GET' }; + let headers = new Headers(); + if (optionTmp.headers) { + headers = !(optionTmp.headers instanceof Headers) + ? new Headers(optionTmp.headers) + : optionTmp.headers; + } + const oidc = oidcClient; + + // @ts-ignore + const getValidToken = await oidc.getValidTokenAsync(); + const accessToken = getValidToken?.tokens?.accessToken; + + if (!headers.has('Accept')) { + headers.set('Accept', 'application/json'); + } + if (accessToken) { + if(oidc.configuration.demonstrating_proof_of_possession) { + const demonstrationOdProofOfPossession = await oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url.toString(), optionTmp.method); + headers.set('Authorization', `PoP ${accessToken}`); + headers.set('DPoP', demonstrationOdProofOfPossession); + } else { + headers.set('Authorization', `Bearer ${accessToken}`); + } + if (!optionTmp.credentials) { + optionTmp.credentials = 'same-origin'; + } + } + const newOptions = { ...optionTmp, headers }; + return await fetch(url, newOptions, ...rest); +}; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 4cf592933..32a3c123c 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -2,6 +2,7 @@ import { LoginCallback, Oidc } from './oidc.js'; import { getValidTokenAsync, Tokens, ValidToken } from './parseTokens.js'; import { Fetch, OidcConfiguration, StringMap } from './types.js'; import {ILOidcLocation, OidcLocation} from "./location"; +import {fetchWithTokens} from "./fetch"; export interface EventSubscriber { (name: string, data:any); @@ -73,6 +74,10 @@ export class OidcClient { async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise { return getValidTokenAsync(this._oidc, waitMs, numberWait); } + + fetchWithTokens(fetch: Fetch): Fetch { + return fetchWithTokens(fetch, this); + } async userInfoAsync(noCache = false):Promise { return this._oidc.userInfoAsync(noCache); diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index e23f7407c..ebc1d0600 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -19,7 +19,8 @@ export const userInfoAsync = (oidc) => async (noCache = false) => { return null; } - const oidcServerConfiguration = await oidc.initAsync(oidc.configuration.authority, oidc.configuration.authority_configuration); + const configuration = oidc.configuration; + const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); const url = oidcServerConfiguration.userInfoEndpoint; const fetchUserInfo = async (accessToken) => { const res = await fetch(url, { diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index 13f4c0a10..ca59e3240 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -8,38 +8,9 @@ export interface ComponentWithOidcFetchProps { const defaultConfigurationName = 'default'; const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null) => async (...params: Parameters) => { - const [url, options, ...rest] = params; - const optionTmp = options ? { ...options } : { method: 'GET' }; - - let headers = new Headers(); - if (optionTmp.headers) { - headers = !(optionTmp.headers instanceof Headers) - ? new Headers(optionTmp.headers) - : optionTmp.headers; - } const oidc = getOidcWithConfigurationName(); - - // @ts-ignore - const getValidToken = await oidc.getValidTokenAsync(); - const accessToken = getValidToken?.tokens?.accessToken; - - if (!headers.has('Accept')) { - headers.set('Accept', 'application/json'); - } - if (accessToken) { - if(oidc.configuration.demonstrating_proof_of_possession){ - const demonstrationOdProofOfPossession = await oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url.toString(), optionTmp.method); - headers.set('Authorization', `PoP ${accessToken}`); - headers.set('DPoP', demonstrationOdProofOfPossession); - } else{ - headers.set('Authorization', `Bearer ${accessToken}`); - } - if (!optionTmp.credentials) { - optionTmp.credentials = 'same-origin'; - } - } - const newOptions = { ...optionTmp, headers }; - return await fetch(url, newOptions, ...rest); + const newFetch = oidc.fetchWithTokens(fetch); + return await newFetch(...params); }; export const withOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName) => ( @@ -57,6 +28,7 @@ export const useOidcFetch = (fetch: Fetch = null, configurationName = defaultCon (input: RequestInfo | URL, init?: RequestInit) => { const getOidcWithConfigurationName = () => getOidc(configurationName); const newFetch = fetchWithToken(previousFetch, getOidcWithConfigurationName); + console.log('newFetch', input) return newFetch(input, init); }, [previousFetch, configurationName], From 1a12a19a54924f0941a960b47fca8b4c169256a0 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 6 Nov 2023 16:02:11 +0000 Subject: [PATCH 062/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 8b60f86a5..5b36cdaaf 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.7.3", + "version": "7.8.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 4b367674f..ee72dc3f8 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.7.3'; +export default '7.8.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6d6a3a49f..89af271e1 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.7.3", + "version": "7.8.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 4b367674f..ee72dc3f8 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.7.3'; +export default '7.8.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 99fa77561..00cd7a205 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.7.3", + "version": "7.8.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 9549b9ae613d3cf357cb4b760fc8cc9e0af80c44 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 7 Nov 2023 10:39:23 +0100 Subject: [PATCH 063/565] doc(oidc-client): typo in method name --- packages/oidc-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index ab8c64460..a8c2916a2 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -327,7 +327,7 @@ export class OidcClient { * @param fetch The current fetch function to use * @returns Fetch A new fectch function that inject bearer tokens (also DPOP tokens). */ - getFetchWithTokens(fetch: Fetch): Fetch; + fetchWithTokens(fetch: Fetch): Fetch; /** * Retrieves OIDC user information. From dbcfec46798b2137154dd33f31bf842f6b7730b8 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 12 Nov 2023 14:33:10 +0100 Subject: [PATCH 064/565] feat(oidc-client): enhance service worker flexibility (alpha) (#1180) --- packages/oidc-client/README.md | 2 + packages/oidc-client/src/iniWorker.spec.ts | 2 +- packages/oidc-client/src/initWorker.ts | 156 ++----------------- packages/oidc-client/src/initWorkerOption.ts | 133 ++++++++++++++++ packages/oidc-client/src/login.ts | 4 +- packages/oidc-client/src/logout.ts | 2 +- packages/oidc-client/src/oidc.ts | 16 +- packages/oidc-client/src/renewTokens.ts | 2 +- packages/oidc-client/src/types.ts | 3 + packages/react-oidc/README.md | 4 +- 10 files changed, 171 insertions(+), 153 deletions(-) create mode 100644 packages/oidc-client/src/initWorkerOption.ts diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index a8c2916a2..9eaf8c3f7 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -193,7 +193,9 @@ const configuration = { }, refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds service_worker_relative_url: String, + service_worker_keep_alive_path: String, // default is "/" service_worker_only: Boolean, // default false + service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) diff --git a/packages/oidc-client/src/iniWorker.spec.ts b/packages/oidc-client/src/iniWorker.spec.ts index a0228aa2b..8f356f8cc 100644 --- a/packages/oidc-client/src/iniWorker.spec.ts +++ b/packages/oidc-client/src/iniWorker.spec.ts @@ -1,6 +1,6 @@ import { describe, expect,it } from 'vitest'; -import { excludeOs, getOperatingSystem } from './initWorker'; +import { excludeOs, getOperatingSystem } from './initWorkerOption'; describe('initWorker test Suite', () => { diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 72a8a794b..1421e8dff 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -4,118 +4,17 @@ import { OidcConfiguration } from './types.js'; import codeVersion from './version.js'; import {ILOidcLocation} from "./location"; -export const getOperatingSystem = (navigator) => { - const nVer = navigator.appVersion; - const nAgt = navigator.userAgent; - const unknown = '-'; - // system - let os = unknown; - const clientStrings = [ - { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, - { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, - { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, - { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, - { s: 'Windows Vista', r: /Windows NT 6.0/ }, - { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, - { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, - { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ }, - { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ }, - { s: 'Windows 98', r: /(Windows 98|Win98)/ }, - { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ }, - { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ }, - { s: 'Windows CE', r: /Windows CE/ }, - { s: 'Windows 3.11', r: /Win16/ }, - { s: 'Android', r: /Android/ }, - { s: 'Open BSD', r: /OpenBSD/ }, - { s: 'Sun OS', r: /SunOS/ }, - { s: 'Chrome OS', r: /CrOS/ }, - { s: 'Linux', r: /(Linux|X11(?!.*CrOS))/ }, - { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, - { s: 'Mac OS X', r: /Mac OS X/ }, - { s: 'Mac OS', r: /(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, - { s: 'QNX', r: /QNX/ }, - { s: 'UNIX', r: /UNIX/ }, - { s: 'BeOS', r: /BeOS/ }, - { s: 'OS/2', r: /OS\/2/ }, - { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ }, - ]; - for (const id in clientStrings) { - const cs = clientStrings[id]; - if (cs.r.test(nAgt)) { - os = cs.s; - break; - } - } - - let osVersion = unknown; - - if (/Windows/.test(os)) { - osVersion = /Windows (.*)/.exec(os)[1]; - os = 'Windows'; - } - - switch (os) { - case 'Mac OS': - case 'Mac OS X': - case 'Android': - osVersion = /(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([._\d]+)/.exec(nAgt)[1]; - break; - - case 'iOS': { - const osVersionArray = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); - osVersion = osVersionArray[1] + '.' + osVersionArray[2] + '.' + (parseInt(osVersionArray[3]) | 0); - break; - } - } - return { - os, - osVersion, - }; -}; - -function getBrowser() { - const ua = navigator.userAgent; let tem; - let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; - if (/trident/i.test(M[1])) { - tem = /\brv[ :]+(\d+)/g.exec(ua) || []; - return { name: 'ie', version: (tem[1] || '') }; - } - if (M[1] === 'Chrome') { - tem = ua.match(/\bOPR|Edge\/(\d+)/); - - if (tem != null) { - let version = tem[1]; - if (!version) { - const splits = ua.split(tem[0] + '/'); - if (splits.length > 1) { - version = splits[1]; - } - } - - return { name: 'opera', version }; - } - } - M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; - if ((tem = ua.match(/version\/(\d+)/i)) != null) { M.splice(1, 1, tem[1]); } - return { - name: M[0].toLowerCase(), - version: M[1], - }; -} - let keepAliveServiceWorkerTimeoutId = null; - +let keepAliveController; export const sleepAsync = (milliseconds) => { return new Promise(resolve => timer.setTimeout(resolve, milliseconds)); }; -let keepAliveController ; -const keepAlive = () => { +const keepAlive = (service_worker_keep_alive_path='/') => { try { - const operatingSystem = getOperatingSystem(navigator); - const minSleepSeconds = operatingSystem.os === 'Android' ? 240 : 150; + const minSleepSeconds = 150; keepAliveController = new AbortController(); - const promise = fetch(`/OidcKeepAliveServiceWorker.json?minSleepSeconds=${minSleepSeconds}`, { signal: keepAliveController.signal }); + const promise = fetch(`${service_worker_keep_alive_path}OidcKeepAliveServiceWorker.json?minSleepSeconds=${minSleepSeconds}`, { signal: keepAliveController.signal }); promise.catch(error => { console.log(error); }); sleepAsync(minSleepSeconds * 1000).then(keepAlive); } catch (error) { console.log(error); } @@ -127,8 +26,8 @@ const stopKeepAlive = () => { } }; -const isServiceWorkerProxyActiveAsync = () => { - return fetch('/OidcKeepAliveServiceWorker.json', { +const isServiceWorkerProxyActiveAsync = (service_worker_keep_alive_path='/') => { + return fetch(`${service_worker_keep_alive_path}OidcKeepAliveServiceWorker.json`, { headers: { 'oidc-vanilla': 'true', }, @@ -145,17 +44,8 @@ export const defaultServiceWorkerUpdateRequireCallback = (location:ILOidcLocatio await sleepAsync(2000); location.reload(); } - -export const excludeOs = (operatingSystem) => { - if (operatingSystem.os === 'iOS' && operatingSystem.osVersion.startsWith('12')) { - return true; - } - if (operatingSystem.os === 'Mac OS X' && operatingSystem.osVersion.startsWith('10_15_6')) { - return true; - } - return false; -}; + const sendMessageAsync = (registration) => (data) : Promise => { return new Promise(function(resolve, reject) { @@ -171,28 +61,14 @@ const sendMessageAsync = (registration) => (data) : Promise => { }); }; -export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName) => { +export const initWorkerAsync = async(configuration, configurationName) => { + + const serviceWorkerRelativeUrl = configuration.service_worker_relative_url; if (typeof window === 'undefined' || typeof navigator === 'undefined' || !navigator.serviceWorker || !serviceWorkerRelativeUrl) { return null; } - const { name, version } = getBrowser(); - if (name === 'chrome' && parseInt(version) <= 70) { - return null; - } - if (name === 'opera') { - if (!version) { - return null; - } - if (parseInt(version.split('.')[0]) < 80) { - return null; - } - } - if (name === 'ie') { - return null; - } - - const operatingSystem = getOperatingSystem(navigator); - if (excludeOs(operatingSystem)) { + + if(configuration.service_worker_activate() === false) { return null; } @@ -232,10 +108,10 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName return { tokens: parseOriginalTokens(result.tokens, null, oidcConfiguration.token_renew_mode), status: result.status }; }; - const startKeepAliveServiceWorker = () => { + const startKeepAliveServiceWorker = (service_worker_keep_alive_path='/') => { if (keepAliveServiceWorkerTimeoutId == null) { keepAliveServiceWorkerTimeoutId = 'not_null'; - keepAlive(); + keepAlive(service_worker_keep_alive_path); } }; @@ -336,8 +212,8 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName return { clearAsync, initAsync, - startKeepAliveServiceWorker, - isServiceWorkerProxyActiveAsync, + startKeepAliveServiceWorker : () => startKeepAliveServiceWorker(configuration.service_worker_keep_alive_path), + isServiceWorkerProxyActiveAsync : () => isServiceWorkerProxyActiveAsync(configuration.service_worker_keep_alive_path), setSessionStateAsync, getSessionStateAsync, setNonceAsync, diff --git a/packages/oidc-client/src/initWorkerOption.ts b/packages/oidc-client/src/initWorkerOption.ts new file mode 100644 index 000000000..87df15b17 --- /dev/null +++ b/packages/oidc-client/src/initWorkerOption.ts @@ -0,0 +1,133 @@ +import {ServiceWorkerActivate} from "./types"; + +export const excludeOs = (operatingSystem) => { + if (operatingSystem.os === 'iOS' && operatingSystem.osVersion.startsWith('12')) { + return true; + } + if (operatingSystem.os === 'Mac OS X' && operatingSystem.osVersion.startsWith('10_15_6')) { + return true; + } + return false; +}; +export const getOperatingSystem = (navigator) => { + const nVer = navigator.appVersion; + const nAgt = navigator.userAgent; + const unknown = '-'; + // system + let os = unknown; + const clientStrings = [ + { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, + { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, + { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, + { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, + { s: 'Windows Vista', r: /Windows NT 6.0/ }, + { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, + { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, + { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ }, + { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ }, + { s: 'Windows 98', r: /(Windows 98|Win98)/ }, + { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ }, + { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ }, + { s: 'Windows CE', r: /Windows CE/ }, + { s: 'Windows 3.11', r: /Win16/ }, + { s: 'Android', r: /Android/ }, + { s: 'Open BSD', r: /OpenBSD/ }, + { s: 'Sun OS', r: /SunOS/ }, + { s: 'Chrome OS', r: /CrOS/ }, + { s: 'Linux', r: /(Linux|X11(?!.*CrOS))/ }, + { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, + { s: 'Mac OS X', r: /Mac OS X/ }, + { s: 'Mac OS', r: /(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, + { s: 'QNX', r: /QNX/ }, + { s: 'UNIX', r: /UNIX/ }, + { s: 'BeOS', r: /BeOS/ }, + { s: 'OS/2', r: /OS\/2/ }, + { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ }, + ]; + for (const id in clientStrings) { + const cs = clientStrings[id]; + if (cs.r.test(nAgt)) { + os = cs.s; + break; + } + } + + let osVersion = unknown; + + if (/Windows/.test(os)) { + osVersion = /Windows (.*)/.exec(os)[1]; + os = 'Windows'; + } + + switch (os) { + case 'Mac OS': + case 'Mac OS X': + case 'Android': + osVersion = /(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([._\d]+)/.exec(nAgt)[1]; + break; + + case 'iOS': { + const osVersionArray = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); + osVersion = osVersionArray[1] + '.' + osVersionArray[2] + '.' + (parseInt(osVersionArray[3]) | 0); + break; + } + } + return { + os, + osVersion, + }; +}; + +function getBrowser() { + const ua = navigator.userAgent; let tem; + let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return { name: 'ie', version: (tem[1] || '') }; + } + if (M[1] === 'Chrome') { + tem = ua.match(/\bOPR|Edge\/(\d+)/); + + if (tem != null) { + let version = tem[1]; + if (!version) { + const splits = ua.split(tem[0] + '/'); + if (splits.length > 1) { + version = splits[1]; + } + } + + return { name: 'opera', version }; + } + } + M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; + if ((tem = ua.match(/version\/(\d+)/i)) != null) { M.splice(1, 1, tem[1]); } + return { + name: M[0].toLowerCase(), + version: M[1], + }; +} + +export const activateServiceWorker : ServiceWorkerActivate = () : boolean =>{ + const { name, version } = getBrowser(); + if (name === 'chrome' && parseInt(version) <= 70) { + return false; + } + if (name === 'opera') { + if (!version) { + return false; + } + if (parseInt(version.split('.')[0]) < 80) { + return false; + } + } + if (name === 'ie') { + return false; + } + + const operatingSystem = getOperatingSystem(navigator); + if (excludeOs(operatingSystem)) { + return false; + } + return true; +} \ No newline at end of file diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index a56ce4e36..ba3a37f15 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -42,7 +42,7 @@ export const defaultLoginAsync = (configurationName:string, configuration:OidcCo extraFinal.nonce = generateRandom(12); } const nonce = { nonce: extraFinal.nonce }; - const serviceWorker = await initWorkerAsync(configuration.service_worker_relative_url, configurationName); + const serviceWorker = await initWorkerAsync(configuration, configurationName); const oidcServerConfiguration = await initAsync(configuration.authority, configuration.authority_configuration); let storage; if (serviceWorker) { @@ -87,7 +87,7 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { const href = oidc.location.getCurrentHref(); const queryParams = getParseQueryStringFromLocation(href); const sessionState = queryParams.session_state; - const serviceWorker = await initWorkerAsync(configuration.service_worker_relative_url, oidc.configurationName); + const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); let storage; let nonceData; let getLoginParams; diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index b2e7d4734..858120f83 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -16,7 +16,7 @@ export const destroyAsync = (oidc) => async (status) => { if (oidc.checkSessionIFrame) { oidc.checkSessionIFrame.stop(); } - const serviceWorker = await initWorkerAsync(oidc.configuration.service_worker_relative_url, oidc.configurationName); + const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if (!serviceWorker) { const session = initSession(oidc.configurationName, oidc.configuration.storage); await session.clearAsync(status); diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 306f75d75..0d53d90cf 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -16,6 +16,7 @@ import {userInfoAsync} from './user.js'; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; import {generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; import {ILOidcLocation, OidcLocation} from "./location"; +import {activateServiceWorker} from "./initWorkerOption"; @@ -110,6 +111,7 @@ export class Oidc { authority_timeout_wellknowurl_in_millisecond: configuration.authority_timeout_wellknowurl_in_millisecond ?? 10000, logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], service_worker_update_require_callback, + service_worker_activate: configuration.service_worker_activate ?? activateServiceWorker, }; this.getFetch = getFetch ?? getFetchDefault; @@ -207,7 +209,7 @@ Please checkout that you are using OIDC hook inside a { try { let loginParams; - const serviceWorker = await initWorkerAsync(configuration.service_worker_relative_url, this.configurationName); + const serviceWorker = await initWorkerAsync(configuration, this.configurationName); if (serviceWorker) { loginParams = serviceWorker.getLoginParams(); } else { @@ -485,7 +487,7 @@ Please checkout that you are using OIDC hook inside a { oidc.tokens = tokens; }; const { tokens, status } = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); - const serviceWorker = await initWorkerAsync(oidc.configuration.service_worker_relative_url, oidc.configurationName); + const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if (!serviceWorker) { const session = initSession(oidc.configurationName, oidc.configuration.storage); await session.setTokens(oidc.tokens); diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index 16f3b0db0..89e4e7a44 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -3,6 +3,7 @@ export type Fetch = typeof window.fetch; export type LogoutToken = 'access_token' | 'refresh_token'; export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAlive:Function) => Promise; +export type ServiceWorkerActivate = () => boolean; export type OidcConfiguration = { client_id: string; @@ -18,6 +19,8 @@ export type OidcConfiguration = { refresh_time_before_tokens_expiration_in_second?: number; token_request_timeout?: number; service_worker_relative_url?:string; + service_worker_keep_alive_path?:string; + service_worker_activate?:ServiceWorkerActivate; service_worker_only?:boolean; service_worker_convert_all_requests_to_cors?:boolean; service_worker_update_require_callback?:ServiceWorkerUpdateRequireCallback; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 7b48a6f6e..638da1918 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -187,7 +187,9 @@ const configuration = { }, refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds service_worker_relative_url: String, - service_worker_only: Boolean, // default false + service_worker_keep_alive_path: String, // default is "/" + service_worker_only: Boolean, // default false + service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) From c54c7b9f3447c0474b460649eb315c13f5f8b1da Mon Sep 17 00:00:00 2001 From: VladimirPlatonenko <113877849+VladimirPlatonenko@users.noreply.github.com> Date: Sun, 12 Nov 2023 23:56:54 +1000 Subject: [PATCH 065/565] fix(service-worker): Reclaming all clients from SW after hard reload (#1149) * Claiming control of requests from SW after Hard refresh * Movint service worker changes to ts --------- Co-authored-by: Vladmir Platonenko --- packages/oidc-client-service-worker/src/OidcServiceWorker.ts | 4 ++++ packages/oidc-client/src/initWorker.ts | 2 ++ 2 files changed, 6 insertions(+) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index b687771c0..fa24322e7 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -283,6 +283,10 @@ const handleFetch = async (event: FetchEvent) => { const handleMessage = (event: ExtendableMessageEvent) => { const port = event.ports[0]; const data = event.data as MessageEventData; + if (event.data.type === "claim") { + _self.clients.claim().then(() => port.postMessage({})); + return; + } const configurationName = data.configurationName; let currentDatabase = database[configurationName]; if (trustedDomains == null) { diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 1421e8dff..5f1270e5a 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -76,6 +76,8 @@ export const initWorkerAsync = async(configuration, configurationName) => { try { await navigator.serviceWorker.ready; + if (!navigator.serviceWorker.controller) + await sendMessageAsync(registration)({ type: 'claim' }); } catch (err) { return null; } From b08cd594d2427170cde835dcff97d5be396952e6 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 12 Nov 2023 18:18:11 +0100 Subject: [PATCH 066/565] doc(FAQ): Update FAQ.md (release) --- FAQ.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/FAQ.md b/FAQ.md index ab2c68f67..a39a5af41 100644 --- a/FAQ.md +++ b/FAQ.md @@ -63,9 +63,6 @@ Use the "token_renew_mode" option to change this behavior. - **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" -## Hard-reload in browser unregister ServiceWorker -https://github.com/AxaFrance/react-oidc/issues/1098 - ## window.crypto.subtle is unavailable over HTTP The library doesn't work over HTTP. Use HTTPS. From 24135038510ada4b9eecffae1494693ef9347a07 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 12 Nov 2023 17:22:29 +0000 Subject: [PATCH 067/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5b36cdaaf..fb7b946b1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.8.0", + "version": "7.9.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index ee72dc3f8..ccae09dc5 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.8.0'; +export default '7.9.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 89af271e1..a6a042505 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.8.0", + "version": "7.9.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index ee72dc3f8..ccae09dc5 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.8.0'; +export default '7.9.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 00cd7a205..d9c307de5 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.8.0", + "version": "7.9.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7e0cb297587e314451321c3ddd1b0e5f7e7e6c0e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 13 Nov 2023 21:29:28 +0100 Subject: [PATCH 068/565] fix(logout): okta tokens null (release) (#1188) --- packages/oidc-client/src/logout.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 858120f83..782984f06 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -46,12 +46,12 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi const revocationEndpoint = oidcServerConfiguration.revocationEndpoint; if (revocationEndpoint) { const promises = []; - const accessToken = oidc.tokens.accessToken; + const accessToken = oidc.tokens ? oidc.tokens.accessToken : null; if (accessToken && configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.access_token)) { const revokeAccessTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, accessToken, TOKEN_TYPE.access_token, configuration.client_id); promises.push(revokeAccessTokenPromise); } - const refreshToken = oidc.tokens.refreshToken; + const refreshToken = oidc.tokens ? oidc.tokens.refreshToken : null; if (refreshToken && configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.refresh_token)) { const revokeRefreshTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, refreshToken, TOKEN_TYPE.refresh_token, configuration.client_id); promises.push(revokeRefreshTokenPromise); From 77361cfb1c8f2f0eed9c38ba15e32f3bbe0f4095 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 13 Nov 2023 20:32:49 +0000 Subject: [PATCH 069/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index fb7b946b1..20e99cb20 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.9.0", + "version": "7.9.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index ccae09dc5..f6915101b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.9.0'; +export default '7.9.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a6a042505..aeab7a632 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.9.0", + "version": "7.9.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index ccae09dc5..f6915101b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.9.0'; +export default '7.9.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index d9c307de5..8cb6b3ea1 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.9.0", + "version": "7.9.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 5085e05beb4c7a88fad1df61e11213b68672e7d9 Mon Sep 17 00:00:00 2001 From: meesvandongen <35409045+meesvandongen@users.noreply.github.com> Date: Fri, 17 Nov 2023 12:19:31 +0100 Subject: [PATCH 070/565] fix(sevice-worker): add URL normalization for getCurrentDatabaseDomain endpoints comparison (release) (#1196) Co-authored-by: Mees van Dongen --- .../src/utils/__tests__/domains.spec.ts | 221 +++++++++------ .../src/utils/domains.ts | 266 +++++++++++------- 2 files changed, 313 insertions(+), 174 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 36a01768d..302b81295 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -1,94 +1,155 @@ import { describe, expect, it } from 'vitest'; import { openidWellknownUrlEndWith } from '../../constants'; -import { checkDomain, getCurrentDatabaseDomain } from '..'; -import { Database, OidcServerConfiguration, Tokens, TrustedDomains } from './../../types'; +import { checkDomain, getCurrentDatabaseDomain, normalizeUrl } from '..'; +import { Database, Tokens, TrustedDomains } from './../../types'; describe('domains', () => { - describe('can check domain matches', () => { - it('can check string domains and return void', () => { - const result = () => - checkDomain( - ['https://securesite.com:3000'], - 'https://securesite.com:3000', - ); - expect(result()).toBeUndefined(); - }); + describe('can check domain matches', () => { + it('can check string domains and return void', () => { + const result = () => + checkDomain(['https://securesite.com:3000'], 'https://securesite.com:3000'); + expect(result()).toBeUndefined(); + }); - it('can check regExp domains and return void when valid', () => { - const result = () => - checkDomain( - [/^https:\/\/securesite\.com/], - 'https://securesite.com:3000', - ); - expect(result()).toBeUndefined(); - }); + it('can check regExp domains and return void when valid', () => { + const result = () => + checkDomain([/^https:\/\/securesite\.com/], 'https://securesite.com:3000'); + expect(result()).toBeUndefined(); + }); - it('will throw error when domain is not trusted', () => { - const result = () => - checkDomain( - ['https://notsecuresite.com'], - 'https://securesite.com:3000', - ); - expect(result).toThrowError(); - }); + it('will throw error when domain is not trusted', () => { + const result = () => + checkDomain(['https://notsecuresite.com'], 'https://securesite.com:3000'); + expect(result).toThrowError(); + }); - it('will return void when endpoint is falsy', () => { - const result = () => checkDomain(['https://securesite.com:3000'], ''); - expect(result()).toBeUndefined(); - }); - }); - describe('getCurrentDatabaseDomain', () => { - const db: Database = { - default: { - configurationName: 'config', - tokens: {} as Tokens, - status: 'NOT_CONNECTED', - state: null, - codeVerifier: null, - nonce: null, - oidcServerConfiguration: {} as OidcServerConfiguration, - hideAccessToken: true, - convertAllRequestsToCorsExceptNavigate: false, - setAccessTokenToNavigateRequests: true, - demonstratingProofOfPossessionNonce: null, - demonstratingProofOfPossessionJwkJson: null, - }, - }; + it('will return void when endpoint is falsy', () => { + const result = () => checkDomain(['https://securesite.com:3000'], ''); + expect(result()).toBeUndefined(); + }); + }); + describe('getCurrentDatabaseDomain', () => { + const db: Database = { + default: { + configurationName: 'config', + tokens: {} as Tokens, + status: 'NOT_CONNECTED', + state: null, + codeVerifier: null, + nonce: null, + oidcServerConfiguration: { + authorizationEndpoint: 'https://demo.duendesoftware.com/connect/authorize', + issuer: 'https://demo.duendesoftware.com', + revocationEndpoint: 'https://demo.duendesoftware.com/connect/revocation', + tokenEndpoint: 'https://demo.duendesoftware.com/connect/token', + userInfoEndpoint: 'https://demo.duendesoftware.com/connect/userinfo', + }, + hideAccessToken: true, + convertAllRequestsToCorsExceptNavigate: false, + setAccessTokenToNavigateRequests: true, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, + }, + }; - it('will return null when url ends with openidWellknownUrlEndWith', () => { - const trustedDomains: TrustedDomains = { - default: [ - 'https://demo.duendesoftware.com', - 'https://kdhttps.auth0.com', - ], - }; - const url = 'http://url' + openidWellknownUrlEndWith; - expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); - }); + it('will return null when url ends with openidWellknownUrlEndWith', () => { + const trustedDomains: TrustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + }; + const url = 'http://url' + openidWellknownUrlEndWith; + expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); + }); - it('will test urls against domains list if accessTokenDomains list is not present', () => { - const trustedDomains: TrustedDomains = { - default: { - domains: ['https://domain'], - showAccessToken: false, - }, - }; + it('will return null when url is the token endpoint', () => { + const trustedDomains: TrustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + }; + const url = 'https://demo.duendesoftware.com/connect/token'; + expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); + }); - expect(getCurrentDatabaseDomain(db, 'https://domain/test', trustedDomains)).toBe(db.default); - }); + it('will return null when url is the token endpoint only differs by default port', () => { + const trustedDomains: TrustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + }; + const url = 'https://demo.duendesoftware.com:443/connect/token'; + expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); + }); - it('will test urls against accessTokenDomains list if it is present and ignore domains list', () => { - const trustedDomains: TrustedDomains = { - default: { - domains: ['https://domain'], - accessTokenDomains: ['https://myapi'], - showAccessToken: false, - }, - }; + it('will return null when url is the token endpoint', () => { + const trustedDomains: TrustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + }; + const url = 'https://demo.duendesoftware.com/connect/revocation'; + expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); + }); - expect(getCurrentDatabaseDomain(db, 'https://myapi/test', trustedDomains)).toBe(db.default); - expect(getCurrentDatabaseDomain(db, 'https://domain/test', trustedDomains)).toBeNull(); - }); - }); + it('will not return null when url is the userinfo endpoint', () => { + const trustedDomains: TrustedDomains = { + default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], + }; + const url = 'https://demo.duendesoftware.com/connect/userinfo'; + expect(getCurrentDatabaseDomain(db, url, trustedDomains)).not.toBeNull(); + }); + + it('will test urls against domains list if accessTokenDomains list is not present', () => { + const trustedDomains: TrustedDomains = { + default: { + domains: ['https://domain'], + showAccessToken: false, + }, + }; + + expect(getCurrentDatabaseDomain(db, 'https://domain/test', trustedDomains)).toBe(db.default); + }); + + it('will test urls against accessTokenDomains list if it is present and ignore domains list', () => { + const trustedDomains: TrustedDomains = { + default: { + domains: ['https://domain'], + accessTokenDomains: ['https://myapi'], + showAccessToken: false, + }, + }; + + expect(getCurrentDatabaseDomain(db, 'https://myapi/test', trustedDomains)).toBe(db.default); + expect(getCurrentDatabaseDomain(db, 'https://domain/test', trustedDomains)).toBeNull(); + }); + }); + it('normalizes urls', () => { + expect(normalizeUrl('foo.com')).toBe('https://foo.com'); + expect(normalizeUrl('foo.com ')).toBe('https://foo.com'); + expect(normalizeUrl('foo.com.')).toBe('https://foo.com'); + expect(normalizeUrl('foo.com')).toBe('https://foo.com'); + expect(normalizeUrl('HTTP://foo.com')).toBe('http://foo.com'); + expect(normalizeUrl('//foo.com')).toBe('https://foo.com'); + expect(normalizeUrl('http://foo.com')).toBe('http://foo.com'); + expect(normalizeUrl('http://foo.com:80')).toBe('http://foo.com'); + expect(normalizeUrl('https://foo.com:443')).toBe('https://foo.com'); + expect(normalizeUrl('http://foo.com/foo/')).toBe('http://foo.com/foo'); + expect(normalizeUrl('foo.com/?foo=bar baz')).toBe('https://foo.com/?foo=bar+baz'); + expect(normalizeUrl('https://foo.com/https://bar.com')).toBe('https://foo.com/https://bar.com'); + expect(normalizeUrl('https://foo.com/https://bar.com/foo//bar')).toBe( + 'https://foo.com/https://bar.com/foo/bar', + ); + expect(normalizeUrl('https://foo.com/http://bar.com')).toBe('https://foo.com/http://bar.com'); + expect(normalizeUrl('https://foo.com/http://bar.com/foo//bar')).toBe( + 'https://foo.com/http://bar.com/foo/bar', + ); + expect(normalizeUrl('http://foo.com/%7Efoo/')).toBe('http://foo.com/~foo'); + expect(normalizeUrl('https://foo.com/%FAIL%/07/94/ca/55.jpg')).toBe( + 'https://foo.com/%FAIL%/07/94/ca/55.jpg', + ); + expect(normalizeUrl('http://foo.com/?')).toBe('http://foo.com'); + expect(normalizeUrl('êxample.com')).toBe('https://xn--xample-hva.com'); + expect(normalizeUrl('http://foo.com/?b=bar&a=foo')).toBe('http://foo.com/?a=foo&b=bar'); + expect(normalizeUrl('http://foo.com/?foo=bar*|<>:"')).toBe( + 'http://foo.com/?foo=bar*|%3C%3E:%22', + ); + expect(normalizeUrl('http://foo.com:5000')).toBe('http://foo.com:5000'); + expect(normalizeUrl('http://foo.com/foo#bar')).toBe('http://foo.com/foo#bar'); + expect(normalizeUrl('http://foo.com/foo/bar/../baz')).toBe('http://foo.com/foo/baz'); + expect(normalizeUrl('http://foo.com/foo/bar/./baz')).toBe('http://foo.com/foo/bar/baz'); + }); }); diff --git a/packages/oidc-client-service-worker/src/utils/domains.ts b/packages/oidc-client-service-worker/src/utils/domains.ts index 72c8bfa51..6f20c766a 100644 --- a/packages/oidc-client-service-worker/src/utils/domains.ts +++ b/packages/oidc-client-service-worker/src/utils/domains.ts @@ -1,104 +1,182 @@ -import { - acceptAnyDomainToken, - openidWellknownUrlEndWith, - scriptFilename, -} from '../constants'; +import { acceptAnyDomainToken, openidWellknownUrlEndWith, scriptFilename } from '../constants'; import { Database, Domain, DomainDetails, OidcConfig, TrustedDomains } from '../types'; -function checkDomain(domains: Domain[], endpoint: string) { - if (!endpoint) { - return; - } - - const domain = domains.find((domain) => { - let testable: RegExp; - - if (typeof domain === 'string') { - testable = new RegExp(`^${domain}`); - } else { - testable = domain; - } - - return testable.test?.(endpoint); - }); - if (!domain) { - throw new Error( - 'Domain ' + - endpoint + - ' is not trusted, please add domain in ' + - scriptFilename, - ); - } +export function checkDomain(domains: Domain[], endpoint: string) { + if (!endpoint) { + return; + } + + const domain = domains.find((domain) => { + let testable: RegExp; + + if (typeof domain === 'string') { + testable = new RegExp(`^${domain}`); + } else { + testable = domain; + } + + return testable.test?.(endpoint); + }); + if (!domain) { + throw new Error( + 'Domain ' + endpoint + ' is not trusted, please add domain in ' + scriptFilename, + ); + } } -export const getDomains = (trustedDomain: Domain[] | DomainDetails, type: 'oidc' | 'accessToken') => { - if (Array.isArray(trustedDomain)) { - return trustedDomain; - } +export const getDomains = ( + trustedDomain: Domain[] | DomainDetails, + type: 'oidc' | 'accessToken', +) => { + if (Array.isArray(trustedDomain)) { + return trustedDomain; + } - return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? []; + return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? []; }; -const getCurrentDatabaseDomain = ( - database: Database, - url: string, - trustedDomains: TrustedDomains, +export const getCurrentDatabaseDomain = ( + database: Database, + url: string, + trustedDomains: TrustedDomains, ) => { - if (url.endsWith(openidWellknownUrlEndWith)) { - return null; - } - for (const [key, currentDatabase] of Object.entries(database)) { - const oidcServerConfiguration = currentDatabase.oidcServerConfiguration; - - if (!oidcServerConfiguration) { - continue; - } - - if ( - oidcServerConfiguration.tokenEndpoint && - url === oidcServerConfiguration.tokenEndpoint - ) { - continue; - } - if ( - oidcServerConfiguration.revocationEndpoint && - url === oidcServerConfiguration.revocationEndpoint - ) { - continue; - } - const trustedDomain = trustedDomains == null ? [] : trustedDomains[key]; - - const domains = getDomains(trustedDomain, 'accessToken'); - const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint - ? [oidcServerConfiguration.userInfoEndpoint, ...domains] - : [...domains]; - - let hasToSendToken = false; - if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) { - hasToSendToken = true; - } else { - for (let i = 0; i < domainsToSendTokens.length; i++) { - let domain = domainsToSendTokens[i]; - - if (typeof domain === 'string') { - domain = new RegExp(`^${domain}`); - } - - if (domain.test?.(url)) { - hasToSendToken = true; - break; - } - } - } - - if (hasToSendToken) { - if (!currentDatabase.tokens) { - return null; - } - return currentDatabase; - } - } - return null; + if (url.endsWith(openidWellknownUrlEndWith)) { + return null; + } + for (const [key, currentDatabase] of Object.entries(database)) { + const oidcServerConfiguration = currentDatabase.oidcServerConfiguration; + + if (!oidcServerConfiguration) { + continue; + } + + if ( + oidcServerConfiguration.tokenEndpoint && + normalizeUrl(url) === normalizeUrl(oidcServerConfiguration.tokenEndpoint) + ) { + continue; + } + if ( + oidcServerConfiguration.revocationEndpoint && + normalizeUrl(url) === normalizeUrl(oidcServerConfiguration.revocationEndpoint) + ) { + continue; + } + const trustedDomain = trustedDomains == null ? [] : trustedDomains[key]; + + const domains = getDomains(trustedDomain, 'accessToken'); + const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint + ? [oidcServerConfiguration.userInfoEndpoint, ...domains] + : [...domains]; + + let hasToSendToken = false; + if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) { + hasToSendToken = true; + } else { + for (let i = 0; i < domainsToSendTokens.length; i++) { + let domain = domainsToSendTokens[i]; + + if (typeof domain === 'string') { + domain = new RegExp(`^${domain}`); + } + + if (domain.test?.(url)) { + hasToSendToken = true; + break; + } + } + } + + if (hasToSendToken) { + if (!currentDatabase.tokens) { + return null; + } + return currentDatabase; + } + } + return null; }; -export { checkDomain, getCurrentDatabaseDomain }; +export function normalizeUrl(url: string) { + url = url.trim(); + + const hasRelativeProtocol = url.startsWith('//'); + const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(url); + + // Prepend protocol + if (!isRelativeUrl) { + url = url.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, 'https:'); + } + + const urlObject = new URL(url); + + // Remove duplicate slashes if not preceded by a protocol + // NOTE: This could be implemented using a single negative lookbehind + // regex, but we avoid that to maintain compatibility with older js engines + // which do not have support for that feature. + if (urlObject.pathname) { + // Split the string by occurrences of this protocol regex, and perform + // duplicate-slash replacement on the strings between those occurrences + // (if any). + const protocolRegex = /\b[a-z][a-z\d+\-.]{1,50}:\/\//g; + + let lastIndex = 0; + let result = ''; + for (;;) { + const match = protocolRegex.exec(urlObject.pathname); + if (!match) { + break; + } + + const protocol = match[0]; + const protocolAtIndex = match.index; + const intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex); + + result += intermediate.replace(/\/{2,}/g, '/'); + result += protocol; + lastIndex = protocolAtIndex + protocol.length; + } + + const remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length); + result += remnant.replace(/\/{2,}/g, '/'); + + urlObject.pathname = result; + } + + // Decode URI octets + if (urlObject.pathname) { + try { + urlObject.pathname = decodeURI(urlObject.pathname); + } catch { + /* empty */ + } + } + + if (urlObject.hostname) { + // Remove trailing dot + urlObject.hostname = urlObject.hostname.replace(/\.$/, ''); + } + + // Sort query parameters + urlObject.searchParams.sort(); + + // Calling `.sort()` encodes the search parameters, so we need to decode them again. + try { + urlObject.search = decodeURIComponent(urlObject.search); + } catch { + /* empty */ + } + + // Remove trailing slash + urlObject.pathname = urlObject.pathname.replace(/\/$/, ''); + + // Take advantage of many of the Node `url` normalizations + url = urlObject.toString(); + + // Remove ending `/` unless removeSingleSlash is false + if (urlObject.hash === '') { + url = url.replace(/\/$/, ''); + } + + return url; +} From 216adc79007264915747edf3ff07171cac456759 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 17 Nov 2023 11:38:41 +0000 Subject: [PATCH 071/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 20e99cb20..455644660 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.9.1", + "version": "7.9.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f6915101b..12edd30f2 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.9.1'; +export default '7.9.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index aeab7a632..daaf7495f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.9.1", + "version": "7.9.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f6915101b..12edd30f2 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.9.1'; +export default '7.9.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 8cb6b3ea1..6da09223e 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.9.1", + "version": "7.9.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From bf19dd0cc975ea4524b0f68f9315625b3789801b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 17 Nov 2023 17:11:12 +0100 Subject: [PATCH 072/565] fix(oidc-client): tokens refresh conflict multiple tabs (alpha) --- packages/oidc-client/src/initSession.ts | 2 +- packages/oidc-client/src/initWorker.ts | 6 ++--- packages/oidc-client/src/renewTokens.ts | 32 ++++++++++++++++--------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index 6fcf12d17..f582108b0 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -42,7 +42,7 @@ export const initSession = (configurationName, storage = sessionStorage) => { return { nonce: storage[`oidc.nonce.${configurationName}`] }; }; - const setDemonstratingProofOfPossessionNonce = (dpopNonce:string) => { + const setDemonstratingProofOfPossessionNonce = async (dpopNonce:string) => { storage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; }; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 5f1270e5a..229a4471f 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -157,8 +157,8 @@ export const initWorkerAsync = async(configuration, configurationName) => { return getLoginParamsCache[configurationName]; }; - const setDemonstratingProofOfPossessionNonce = (demonstratingProofOfPossessionNonce: string) => { - sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionNonce', data: { demonstratingProofOfPossessionNonce }, configurationName }); + const setDemonstratingProofOfPossessionNonce = async (demonstratingProofOfPossessionNonce: string) => { + await sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionNonce', data: { demonstratingProofOfPossessionNonce }, configurationName }); }; const getDemonstratingProofOfPossessionNonce = async () => { @@ -166,7 +166,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { return result.demonstratingProofOfPossessionNonce; }; - const setDemonstratingProofOfPossessionJwkAsync = (demonstratingProofOfPossessionJwk:string) => { + const setDemonstratingProofOfPossessionJwkAsync = async (demonstratingProofOfPossessionJwk:string) => { const demonstratingProofOfPossessionJwkJson = JSON.stringify(demonstratingProofOfPossessionJwk); sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionJwk', data: { demonstratingProofOfPossessionJwkJson }, configurationName }); }; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 7e4e819d4..5811a6c14 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -6,20 +6,30 @@ import timer from './timer.js'; import { StringMap } from './types.js'; export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRefresh = false, extras:StringMap = null) { - const updateTokens = (tokens) => { oidc.tokens = tokens; }; - const { tokens, status } = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); - const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); - if (!serviceWorker) { - const session = initSession(oidc.configurationName, oidc.configuration.storage); - await session.setTokens(oidc.tokens); - } + const configuration = oidc.configuration; + const lockResourcesName = `${configuration.client_id}_${oidc.configurationName}_${configuration.authority}`; + const tokens = await navigator.locks.request(lockResourcesName, async (lock) => { + const updateTokens = (tokens) => { + oidc.tokens = tokens; + }; + const {tokens, status} = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); - if (!oidc.tokens) { - await oidc.destroyAsync(status); - return; - } + const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); + if (!serviceWorker) { + const session = initSession(oidc.configurationName, oidc.configuration.storage); + await session.setTokens(oidc.tokens); + } + if (!oidc.tokens) { + await oidc.destroyAsync(status); + return null; + } + return tokens + }); + if(!tokens){ + return null; + } if (oidc.timeoutId) { oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, extras); } From a80844c2668066b083009043f1dd94fa196e1f18 Mon Sep 17 00:00:00 2001 From: meesvandongen <35409045+meesvandongen@users.noreply.github.com> Date: Fri, 24 Nov 2023 09:25:25 +0100 Subject: [PATCH 073/565] fix(service-worker): make sure URL is normalized when comparing with token endpoint and revocation endpoint (#1198) (release) Co-authored-by: Mees van Dongen --- .../src/OidcServiceWorker.ts | 843 +++++++++--------- .../src/utils/__tests__/domains.spec.ts | 94 +- .../src/utils/__tests__/normalizeUrl.spec.ts | 28 + .../src/utils/domains.ts | 89 +- .../src/utils/index.ts | 1 + .../src/utils/normalizeUrl.ts | 9 + 6 files changed, 516 insertions(+), 548 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/utils/__tests__/normalizeUrl.spec.ts create mode 100644 packages/oidc-client-service-worker/src/utils/normalizeUrl.ts diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index fa24322e7..88109e353 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -1,34 +1,35 @@ import { acceptAnyDomainToken, scriptFilename, TOKEN } from './constants'; -import version from './version'; import { - Database, - MessageEventData, - OidcConfig, - TrustedDomains, + Database, + MessageEventData, + OidcConfig, + TrustedDomains, } from './types'; import { - checkDomain, - getCurrentDatabaseDomain, - getDomains, - hideTokens, - isTokensValid, - serializeHeaders, - sleep, + checkDomain, + getCurrentDatabaseDomain, + getDomains, + hideTokens, + isTokensValid, + serializeHeaders, + sleep, } from './utils'; import { replaceCodeVerifier } from './utils/codeVerifier'; +import { normalizeUrl } from './utils/normalizeUrl'; +import version from './version'; // @ts-ignore -if ((typeof trustedTypes !== 'undefined') && (typeof trustedTypes.createPolicy == 'function')) { - // @ts-ignore - trustedTypes.createPolicy('default', { - createScriptURL: function(url: string) { - if (url == scriptFilename) { - return url; - } else { - throw new Error('Untrusted script URL blocked: ' + url); - } - }, - }); +if (typeof trustedTypes !== 'undefined' && typeof trustedTypes.createPolicy == 'function') { + // @ts-ignore + trustedTypes.createPolicy('default', { + createScriptURL: function (url: string) { + if (url == scriptFilename) { + return url; + } else { + throw new Error('Untrusted script URL blocked: ' + url); + } + }, + }); } const _self = self as ServiceWorkerGlobalScope & typeof globalThis; @@ -41,415 +42,455 @@ const id = Math.round(new Date().getTime() / 1000).toString(); const keepAliveJsonFilename = 'OidcKeepAliveServiceWorker.json'; const handleInstall = (event: ExtendableEvent) => { - console.log('[OidcServiceWorker] service worker installed ' + id); - event.waitUntil(_self.skipWaiting()); + console.log('[OidcServiceWorker] service worker installed ' + id); + event.waitUntil(_self.skipWaiting()); }; const handleActivate = (event: ExtendableEvent) => { - console.log('[OidcServiceWorker] service worker activated ' + id); - event.waitUntil(_self.clients.claim()); + console.log('[OidcServiceWorker] service worker activated ' + id); + event.waitUntil(_self.clients.claim()); }; let currentLoginCallbackConfigurationName: string | null = null; const database: Database = {}; const getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => { - const databases: OidcConfig[] = []; - for (const [, value] of Object.entries(database)) { - if ( - value.oidcServerConfiguration != null && - url.startsWith(value.oidcServerConfiguration.tokenEndpoint) - ) { - databases.push(value); - } else if ( - value.oidcServerConfiguration != null && - value.oidcServerConfiguration.revocationEndpoint && - url.startsWith(value.oidcServerConfiguration.revocationEndpoint) - ) { - databases.push(value); - } - } - return databases; + const databases: OidcConfig[] = []; + for (const [, value] of Object.entries(database)) { + if ( + value.oidcServerConfiguration != null && + url.startsWith(normalizeUrl(value.oidcServerConfiguration.tokenEndpoint)) + ) { + databases.push(value); + } else if ( + value.oidcServerConfiguration != null && + value.oidcServerConfiguration.revocationEndpoint && + url.startsWith( + normalizeUrl(value.oidcServerConfiguration.revocationEndpoint), + ) + ) { + databases.push(value); + } + } + return databases; }; const keepAliveAsync = async (event: FetchEvent) => { - const originalRequest = event.request; - const isFromVanilla = originalRequest.headers.has('oidc-vanilla'); - const init = { status: 200, statusText: 'oidc-service-worker' }; - const response = new Response('{}', init); - if (!isFromVanilla) { - const originalRequestUrl = new URL(originalRequest.url); - const minSleepSeconds = Number(originalRequestUrl.searchParams.get('minSleepSeconds')) || 240; - for (let i = 0; i < minSleepSeconds; i++) { - await sleep(1000 + Math.floor(Math.random() * 1000)); - const cache = await caches.open('oidc_dummy_cache'); - await cache.put(event.request, response.clone()); - } - } - return response; + const originalRequest = event.request; + const isFromVanilla = originalRequest.headers.has('oidc-vanilla'); + const init = { status: 200, statusText: 'oidc-service-worker' }; + const response = new Response('{}', init); + if (!isFromVanilla) { + const originalRequestUrl = new URL(originalRequest.url); + const minSleepSeconds = + Number(originalRequestUrl.searchParams.get('minSleepSeconds')) || 240; + for (let i = 0; i < minSleepSeconds; i++) { + await sleep(1000 + Math.floor(Math.random() * 1000)); + const cache = await caches.open('oidc_dummy_cache'); + await cache.put(event.request, response.clone()); + } + } + return response; }; const handleFetch = async (event: FetchEvent) => { - const originalRequest = event.request; - const url = originalRequest.url; - if (originalRequest.url.includes(keepAliveJsonFilename)) { - event.respondWith(keepAliveAsync(event)); - return; - } + const originalRequest = event.request; + const url = normalizeUrl(originalRequest.url); + if (url.includes(keepAliveJsonFilename)) { + event.respondWith(keepAliveAsync(event)); + return; + } - const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain( - database, - originalRequest.url, - trustedDomains, - ); - if ( - currentDatabaseForRequestAccessToken && - currentDatabaseForRequestAccessToken.tokens && - currentDatabaseForRequestAccessToken.tokens.access_token - ) { - while ( - currentDatabaseForRequestAccessToken.tokens && - !isTokensValid(currentDatabaseForRequestAccessToken.tokens) - ) { - await sleep(200); - } - - let requestMode = originalRequest.mode; - - if(originalRequest.mode !== "navigate" && currentDatabaseForRequestAccessToken.convertAllRequestsToCorsExceptNavigate) { - requestMode = "cors"; - } - - let headers: { [p: string]: string }; - if(originalRequest.mode == "navigate" && !currentDatabaseForRequestAccessToken.setAccessTokenToNavigateRequests ) { - headers = { - ...serializeHeaders(originalRequest.headers), - } - } else{ - headers = { - ...serializeHeaders(originalRequest.headers), - authorization: 'Bearer ' + currentDatabaseForRequestAccessToken.tokens.access_token, - } - } - let init: RequestInit; - if(originalRequest.mode === "navigate"){ - init = { - headers: headers, - } - } else{ - init = { - headers: headers, - mode: requestMode, - } - } - - const newRequest = new Request(originalRequest, init); + const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain( + database, + url, + trustedDomains, + ); + if ( + currentDatabaseForRequestAccessToken && + currentDatabaseForRequestAccessToken.tokens && + currentDatabaseForRequestAccessToken.tokens.access_token + ) { + while ( + currentDatabaseForRequestAccessToken.tokens && + !isTokensValid(currentDatabaseForRequestAccessToken.tokens) + ) { + await sleep(200); + } - event.respondWith(fetch(newRequest)); + let requestMode = originalRequest.mode; - return; - } + if ( + originalRequest.mode !== 'navigate' && + currentDatabaseForRequestAccessToken.convertAllRequestsToCorsExceptNavigate + ) { + requestMode = 'cors'; + } - if (event.request.method !== 'POST') { - return; - } + let headers: { [p: string]: string }; + if ( + originalRequest.mode == 'navigate' && + !currentDatabaseForRequestAccessToken.setAccessTokenToNavigateRequests + ) { + headers = { + ...serializeHeaders(originalRequest.headers), + }; + } else { + headers = { + ...serializeHeaders(originalRequest.headers), + authorization: + 'Bearer ' + currentDatabaseForRequestAccessToken.tokens.access_token, + }; + } + let init: RequestInit; + if (originalRequest.mode === 'navigate') { + init = { + headers: headers, + }; + } else { + init = { + headers: headers, + mode: requestMode, + }; + } - let currentDatabase: OidcConfig | null = null; - const currentDatabases = getCurrentDatabasesTokenEndpoint( - database, - originalRequest.url, - ); - const numberDatabase = currentDatabases.length; - if (numberDatabase > 0) { - const maPromesse = new Promise((resolve, reject) => { - const clonedRequest = originalRequest.clone(); - const response = clonedRequest.text().then((actualBody) => { - if ( - actualBody.includes(TOKEN.REFRESH_TOKEN) || - actualBody.includes(TOKEN.ACCESS_TOKEN) - ) { - let newBody = actualBody; - for (let i = 0; i < numberDatabase; i++) { - const currentDb = currentDatabases[i]; + const newRequest = new Request(originalRequest, init); - if (currentDb && currentDb.tokens != null) { - const keyRefreshToken = - TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName; - if (actualBody.includes(keyRefreshToken)) { - newBody = newBody.replace( - keyRefreshToken, - encodeURIComponent(currentDb.tokens.refresh_token as string), - ); - currentDatabase = currentDb; - break; - } - const keyAccessToken = - TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName; - if (actualBody.includes(keyAccessToken)) { - newBody = newBody.replace( - keyAccessToken, - encodeURIComponent(currentDb.tokens.access_token), - ); - currentDatabase = currentDb; - break; - } - } - } - const fetchPromise = fetch(originalRequest, { - body: newBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers), - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity, - }); + event.respondWith(fetch(newRequest)); - if ( - currentDatabase && - currentDatabase.oidcServerConfiguration != null && - currentDatabase.oidcServerConfiguration.revocationEndpoint && - url.startsWith( - currentDatabase.oidcServerConfiguration.revocationEndpoint, - ) - ) { - return fetchPromise.then(async (response) => { - const text = await response.text(); - return new Response(text, response); - }); - } - return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); // todo type assertion to OidcConfig but could be null, NEEDS REVIEW - } else if ( - actualBody.includes('code_verifier=') && - currentLoginCallbackConfigurationName - ) { - currentDatabase = database[currentLoginCallbackConfigurationName]; - currentLoginCallbackConfigurationName = null; - let newBody = actualBody; - if (currentDatabase && currentDatabase.codeVerifier != null) { - newBody = replaceCodeVerifier(newBody, currentDatabase.codeVerifier); - } + return; + } - return fetch(originalRequest, { - body: newBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers), - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity, - }).then(hideTokens(currentDatabase)); - } + if (event.request.method !== 'POST') { + return; + } - // if showAccessToken=true, the token is already in the body - // of the request, and it does not need to be injected - // and we can simply clone the request - return fetch(originalRequest, { - body: actualBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers), - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity, - }); - }); - response - .then((r) => { - resolve(r); - }) - .catch((err) => { - reject(err); - }); - }); + let currentDatabase: OidcConfig | null = null; + const currentDatabases = getCurrentDatabasesTokenEndpoint(database, url); + const numberDatabase = currentDatabases.length; + if (numberDatabase > 0) { + const maPromesse = new Promise((resolve, reject) => { + const clonedRequest = originalRequest.clone(); + const response = clonedRequest.text().then((actualBody) => { + if ( + actualBody.includes(TOKEN.REFRESH_TOKEN) || + actualBody.includes(TOKEN.ACCESS_TOKEN) + ) { + let newBody = actualBody; + for (let i = 0; i < numberDatabase; i++) { + const currentDb = currentDatabases[i]; - event.respondWith(maPromesse); - } -}; + if (currentDb && currentDb.tokens != null) { + const keyRefreshToken = + TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName; + if (actualBody.includes(keyRefreshToken)) { + newBody = newBody.replace( + keyRefreshToken, + encodeURIComponent(currentDb.tokens.refresh_token as string), + ); + currentDatabase = currentDb; + break; + } + const keyAccessToken = + TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName; + if (actualBody.includes(keyAccessToken)) { + newBody = newBody.replace( + keyAccessToken, + encodeURIComponent(currentDb.tokens.access_token), + ); + currentDatabase = currentDb; + break; + } + } + } + const fetchPromise = fetch(originalRequest, { + body: newBody, + method: clonedRequest.method, + headers: { + ...serializeHeaders(originalRequest.headers), + }, + mode: clonedRequest.mode, + cache: clonedRequest.cache, + redirect: clonedRequest.redirect, + referrer: clonedRequest.referrer, + credentials: clonedRequest.credentials, + integrity: clonedRequest.integrity, + }); + + if ( + currentDatabase && + currentDatabase.oidcServerConfiguration != null && + currentDatabase.oidcServerConfiguration.revocationEndpoint && + url.startsWith( + normalizeUrl( + currentDatabase.oidcServerConfiguration.revocationEndpoint, + ), + ) + ) { + return fetchPromise.then(async (response) => { + const text = await response.text(); + return new Response(text, response); + }); + } + return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); // todo type assertion to OidcConfig but could be null, NEEDS REVIEW + } else if ( + actualBody.includes('code_verifier=') && + currentLoginCallbackConfigurationName + ) { + currentDatabase = database[currentLoginCallbackConfigurationName]; + currentLoginCallbackConfigurationName = null; + let newBody = actualBody; + if (currentDatabase && currentDatabase.codeVerifier != null) { + newBody = replaceCodeVerifier( + newBody, + currentDatabase.codeVerifier, + ); + } + return fetch(originalRequest, { + body: newBody, + method: clonedRequest.method, + headers: { + ...serializeHeaders(originalRequest.headers), + }, + mode: clonedRequest.mode, + cache: clonedRequest.cache, + redirect: clonedRequest.redirect, + referrer: clonedRequest.referrer, + credentials: clonedRequest.credentials, + integrity: clonedRequest.integrity, + }).then(hideTokens(currentDatabase)); + } + + // if showAccessToken=true, the token is already in the body + // of the request, and it does not need to be injected + // and we can simply clone the request + return fetch(originalRequest, { + body: actualBody, + method: clonedRequest.method, + headers: { + ...serializeHeaders(originalRequest.headers), + }, + mode: clonedRequest.mode, + cache: clonedRequest.cache, + redirect: clonedRequest.redirect, + referrer: clonedRequest.referrer, + credentials: clonedRequest.credentials, + integrity: clonedRequest.integrity, + }); + }); + response + .then((r) => { + resolve(r); + }) + .catch((err) => { + reject(err); + }); + }); + + event.respondWith(maPromesse); + } +}; const handleMessage = (event: ExtendableMessageEvent) => { - const port = event.ports[0]; - const data = event.data as MessageEventData; - if (event.data.type === "claim") { - _self.clients.claim().then(() => port.postMessage({})); - return; - } - const configurationName = data.configurationName; - let currentDatabase = database[configurationName]; - if (trustedDomains == null) { - trustedDomains = {}; - } - if (!currentDatabase) { - const trustedDomain = trustedDomains[configurationName]; - const showAccessToken = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken; - const doNotSetAccessTokenToNavigateRequests = Array.isArray(trustedDomain) ? true : trustedDomain.setAccessTokenToNavigateRequests; - const convertAllRequestsToCorsExceptNavigate = Array.isArray(trustedDomain) ? false : trustedDomain.convertAllRequestsToCorsExceptNavigate; - database[configurationName] = { - tokens: null, - state: null, - codeVerifier: null, - oidcServerConfiguration: null, - oidcConfiguration: undefined, - nonce: null, - status: null, - configurationName, - hideAccessToken: !showAccessToken, - setAccessTokenToNavigateRequests: doNotSetAccessTokenToNavigateRequests ?? true, - convertAllRequestsToCorsExceptNavigate: convertAllRequestsToCorsExceptNavigate ?? false, - demonstratingProofOfPossessionNonce: null, - demonstratingProofOfPossessionJwkJson: null, - }; - currentDatabase = database[configurationName]; + const port = event.ports[0]; + const data = event.data as MessageEventData; + if (event.data.type === 'claim') { + _self.clients.claim().then(() => port.postMessage({})); + return; + } + const configurationName = data.configurationName; + let currentDatabase = database[configurationName]; + if (trustedDomains == null) { + trustedDomains = {}; + } + if (!currentDatabase) { + const trustedDomain = trustedDomains[configurationName]; + const showAccessToken = Array.isArray(trustedDomain) + ? false + : trustedDomain.showAccessToken; + const doNotSetAccessTokenToNavigateRequests = Array.isArray(trustedDomain) + ? true + : trustedDomain.setAccessTokenToNavigateRequests; + const convertAllRequestsToCorsExceptNavigate = Array.isArray(trustedDomain) + ? false + : trustedDomain.convertAllRequestsToCorsExceptNavigate; + database[configurationName] = { + tokens: null, + state: null, + codeVerifier: null, + oidcServerConfiguration: null, + oidcConfiguration: undefined, + nonce: null, + status: null, + configurationName, + hideAccessToken: !showAccessToken, + setAccessTokenToNavigateRequests: + doNotSetAccessTokenToNavigateRequests ?? true, + convertAllRequestsToCorsExceptNavigate: + convertAllRequestsToCorsExceptNavigate ?? false, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, + }; + currentDatabase = database[configurationName]; - if (!trustedDomains[configurationName]) { - trustedDomains[configurationName] = []; - } - } + if (!trustedDomains[configurationName]) { + trustedDomains[configurationName] = []; + } + } - switch (data.type) { - case 'clear': - currentDatabase.tokens = null; - currentDatabase.state = null; - currentDatabase.codeVerifier = null; - currentDatabase.status = data.data.status; - port.postMessage({ configurationName }); - return; - case 'init': { - const oidcServerConfiguration = data.data.oidcServerConfiguration; - const trustedDomain = trustedDomains[configurationName]; - const domains = getDomains(trustedDomain, 'oidc'); - if (!domains.find((f) => f === acceptAnyDomainToken)) { - [ - oidcServerConfiguration.tokenEndpoint, - oidcServerConfiguration.revocationEndpoint, - oidcServerConfiguration.userInfoEndpoint, - oidcServerConfiguration.issuer, - ].forEach((url) => { - checkDomain(domains, url); - }); - } - currentDatabase.oidcServerConfiguration = oidcServerConfiguration; - currentDatabase.oidcConfiguration = data.data.oidcConfiguration; - const where = data.data.where; - if ( - where === 'loginCallbackAsync' || - where === 'tryKeepExistingSessionAsync' - ) { - currentLoginCallbackConfigurationName = configurationName; - } else { - currentLoginCallbackConfigurationName = null; - } + switch (data.type) { + case 'clear': + currentDatabase.tokens = null; + currentDatabase.state = null; + currentDatabase.codeVerifier = null; + currentDatabase.status = data.data.status; + port.postMessage({ configurationName }); + return; + case 'init': { + const oidcServerConfiguration = data.data.oidcServerConfiguration; + const trustedDomain = trustedDomains[configurationName]; + const domains = getDomains(trustedDomain, 'oidc'); + if (!domains.some((domain) => domain === acceptAnyDomainToken)) { + [ + oidcServerConfiguration.tokenEndpoint, + oidcServerConfiguration.revocationEndpoint, + oidcServerConfiguration.userInfoEndpoint, + oidcServerConfiguration.issuer, + ].forEach((url) => { + checkDomain(domains, url); + }); + } + currentDatabase.oidcServerConfiguration = oidcServerConfiguration; + currentDatabase.oidcConfiguration = data.data.oidcConfiguration; + const where = data.data.where; + if ( + where === 'loginCallbackAsync' || + where === 'tryKeepExistingSessionAsync' + ) { + currentLoginCallbackConfigurationName = configurationName; + } else { + currentLoginCallbackConfigurationName = null; + } - if (!currentDatabase.tokens) { - port.postMessage({ - tokens: null, - status: currentDatabase.status, - configurationName, - version - }); - } else { - const tokens = { - ...currentDatabase.tokens, - }; - if (currentDatabase.hideAccessToken) { - tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName; - } - if (tokens.refresh_token) { - tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName; - } - if ( - tokens.idTokenPayload && - tokens.idTokenPayload.nonce && - currentDatabase.nonce != null - ) { - tokens.idTokenPayload.nonce = - TOKEN.NONCE_TOKEN + '_' + configurationName; - } - port.postMessage({ - tokens, - status: currentDatabase.status, - configurationName, - version - }); - } - return; - } - case 'setDemonstratingProofOfPossessionNonce': - currentDatabase.demonstratingProofOfPossessionNonce = data.data.demonstratingProofOfPossessionNonce; - port.postMessage({ configurationName }); - return; - case 'getDemonstratingProofOfPossessionNonce': - const demonstratingProofOfPossessionNonce = currentDatabase.demonstratingProofOfPossessionNonce; - port.postMessage({ configurationName, demonstratingProofOfPossessionNonce }); - return; - case 'setDemonstratingProofOfPossessionJwk': - currentDatabase.demonstratingProofOfPossessionJwkJson = data.data.demonstratingProofOfPossessionJwkJson; - port.postMessage({ configurationName }); - return; - case 'getDemonstratingProofOfPossessionJwk': - const demonstratingProofOfPossessionJwkJson = currentDatabase.demonstratingProofOfPossessionJwkJson; - port.postMessage({ configurationName, demonstratingProofOfPossessionJwkJson }); - return; - case 'setState': - currentDatabase.state = data.data.state; - port.postMessage({ configurationName }); - return; - case 'getState': { - const state = currentDatabase.state; - port.postMessage({ configurationName, state }); - return; - } - case 'setCodeVerifier': - currentDatabase.codeVerifier = data.data.codeVerifier; - port.postMessage({ configurationName }); - return; - case 'getCodeVerifier': { - port.postMessage({ - configurationName, - codeVerifier: currentDatabase.codeVerifier != null ? TOKEN.CODE_VERIFIER + '_' + configurationName : null, - }); - return; - } - case 'setSessionState': - currentDatabase.sessionState = data.data.sessionState; - port.postMessage({ configurationName }); - return; - case 'getSessionState': { - const sessionState = currentDatabase.sessionState; - port.postMessage({ configurationName, sessionState }); - return; - } - case 'setNonce': { - const nonce = data.data.nonce; - if (nonce) { - currentDatabase.nonce = nonce; - } - port.postMessage({ configurationName }); - return; - } - case 'getNonce': { - const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName; - const nonce = currentDatabase.nonce ? keyNonce : null; - port.postMessage({ configurationName, nonce }); - return; - } - default: - currentDatabase.items = { ...data.data }; - port.postMessage({ configurationName }); - } + if (!currentDatabase.tokens) { + port.postMessage({ + tokens: null, + status: currentDatabase.status, + configurationName, + version, + }); + } else { + const tokens = { + ...currentDatabase.tokens, + }; + if (currentDatabase.hideAccessToken) { + tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName; + } + if (tokens.refresh_token) { + tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName; + } + if ( + tokens.idTokenPayload && + tokens.idTokenPayload.nonce && + currentDatabase.nonce != null + ) { + tokens.idTokenPayload.nonce = + TOKEN.NONCE_TOKEN + '_' + configurationName; + } + port.postMessage({ + tokens, + status: currentDatabase.status, + configurationName, + version, + }); + } + return; + } + case 'setDemonstratingProofOfPossessionNonce': { + currentDatabase.demonstratingProofOfPossessionNonce = + data.data.demonstratingProofOfPossessionNonce; + port.postMessage({ configurationName }); + return; + } + case 'getDemonstratingProofOfPossessionNonce': { + const demonstratingProofOfPossessionNonce = + currentDatabase.demonstratingProofOfPossessionNonce; + port.postMessage({ + configurationName, + demonstratingProofOfPossessionNonce, + }); + return; + } + case 'setDemonstratingProofOfPossessionJwk': { + currentDatabase.demonstratingProofOfPossessionJwkJson = + data.data.demonstratingProofOfPossessionJwkJson; + port.postMessage({ configurationName }); + return; + } + case 'getDemonstratingProofOfPossessionJwk': { + const demonstratingProofOfPossessionJwkJson = + currentDatabase.demonstratingProofOfPossessionJwkJson; + port.postMessage({ + configurationName, + demonstratingProofOfPossessionJwkJson, + }); + return; + } + case 'setState': { + currentDatabase.state = data.data.state; + port.postMessage({ configurationName }); + return; + } + case 'getState': { + const state = currentDatabase.state; + port.postMessage({ configurationName, state }); + return; + } + case 'setCodeVerifier': { + currentDatabase.codeVerifier = data.data.codeVerifier; + port.postMessage({ configurationName }); + return; + } + case 'getCodeVerifier': { + port.postMessage({ + configurationName, + codeVerifier: + currentDatabase.codeVerifier != null + ? TOKEN.CODE_VERIFIER + '_' + configurationName + : null, + }); + return; + } + case 'setSessionState': { + currentDatabase.sessionState = data.data.sessionState; + port.postMessage({ configurationName }); + return; + } + case 'getSessionState': { + const sessionState = currentDatabase.sessionState; + port.postMessage({ configurationName, sessionState }); + return; + } + case 'setNonce': { + const nonce = data.data.nonce; + if (nonce) { + currentDatabase.nonce = nonce; + } + port.postMessage({ configurationName }); + return; + } + case 'getNonce': { + const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName; + const nonce = currentDatabase.nonce ? keyNonce : null; + port.postMessage({ configurationName, nonce }); + return; + } + default: { + currentDatabase.items = { ...data.data }; + port.postMessage({ configurationName }); + } + } }; _self.addEventListener('install', handleInstall); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 302b81295..3ec9cc4bd 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -1,7 +1,7 @@ -import { describe, expect, it } from 'vitest'; +import { beforeEach, describe, expect, it } from 'vitest'; import { openidWellknownUrlEndWith } from '../../constants'; -import { checkDomain, getCurrentDatabaseDomain, normalizeUrl } from '..'; +import { checkDomain, getCurrentDatabaseDomain } from '..'; import { Database, Tokens, TrustedDomains } from './../../types'; describe('domains', () => { @@ -30,28 +30,32 @@ describe('domains', () => { }); }); describe('getCurrentDatabaseDomain', () => { - const db: Database = { - default: { - configurationName: 'config', - tokens: {} as Tokens, - status: 'NOT_CONNECTED', - state: null, - codeVerifier: null, - nonce: null, - oidcServerConfiguration: { - authorizationEndpoint: 'https://demo.duendesoftware.com/connect/authorize', - issuer: 'https://demo.duendesoftware.com', - revocationEndpoint: 'https://demo.duendesoftware.com/connect/revocation', - tokenEndpoint: 'https://demo.duendesoftware.com/connect/token', - userInfoEndpoint: 'https://demo.duendesoftware.com/connect/userinfo', + let db: Database; + + beforeEach(() => { + db = { + default: { + configurationName: 'config', + tokens: {} as Tokens, + status: 'NOT_CONNECTED', + state: null, + codeVerifier: null, + nonce: null, + oidcServerConfiguration: { + authorizationEndpoint: 'https://demo.duendesoftware.com/connect/authorize', + issuer: 'https://demo.duendesoftware.com', + revocationEndpoint: 'https://demo.duendesoftware.com/connect/revocation', + tokenEndpoint: 'https://demo.duendesoftware.com/connect/token', + userInfoEndpoint: 'https://demo.duendesoftware.com/connect/userinfo', + }, + hideAccessToken: true, + convertAllRequestsToCorsExceptNavigate: false, + setAccessTokenToNavigateRequests: true, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, }, - hideAccessToken: true, - convertAllRequestsToCorsExceptNavigate: false, - setAccessTokenToNavigateRequests: true, - demonstratingProofOfPossessionNonce: null, - demonstratingProofOfPossessionJwkJson: null, - }, - }; + }; + }); it('will return null when url ends with openidWellknownUrlEndWith', () => { const trustedDomains: TrustedDomains = { @@ -69,15 +73,18 @@ describe('domains', () => { expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); }); - it('will return null when url is the token endpoint only differs by default port', () => { + it('will return null when url is the token endpoint oidc config token endpoint has a default port', () => { const trustedDomains: TrustedDomains = { default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], }; - const url = 'https://demo.duendesoftware.com:443/connect/token'; + db['default'].oidcServerConfiguration!.tokenEndpoint = + 'https://demo.duendesoftware.com:443/connect/token'; + + const url = 'https://demo.duendesoftware.com/connect/token'; expect(getCurrentDatabaseDomain(db, url, trustedDomains)).toBeNull(); }); - it('will return null when url is the token endpoint', () => { + it('will return null when url is the revocation endpoint', () => { const trustedDomains: TrustedDomains = { default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], }; @@ -117,39 +124,4 @@ describe('domains', () => { expect(getCurrentDatabaseDomain(db, 'https://domain/test', trustedDomains)).toBeNull(); }); }); - it('normalizes urls', () => { - expect(normalizeUrl('foo.com')).toBe('https://foo.com'); - expect(normalizeUrl('foo.com ')).toBe('https://foo.com'); - expect(normalizeUrl('foo.com.')).toBe('https://foo.com'); - expect(normalizeUrl('foo.com')).toBe('https://foo.com'); - expect(normalizeUrl('HTTP://foo.com')).toBe('http://foo.com'); - expect(normalizeUrl('//foo.com')).toBe('https://foo.com'); - expect(normalizeUrl('http://foo.com')).toBe('http://foo.com'); - expect(normalizeUrl('http://foo.com:80')).toBe('http://foo.com'); - expect(normalizeUrl('https://foo.com:443')).toBe('https://foo.com'); - expect(normalizeUrl('http://foo.com/foo/')).toBe('http://foo.com/foo'); - expect(normalizeUrl('foo.com/?foo=bar baz')).toBe('https://foo.com/?foo=bar+baz'); - expect(normalizeUrl('https://foo.com/https://bar.com')).toBe('https://foo.com/https://bar.com'); - expect(normalizeUrl('https://foo.com/https://bar.com/foo//bar')).toBe( - 'https://foo.com/https://bar.com/foo/bar', - ); - expect(normalizeUrl('https://foo.com/http://bar.com')).toBe('https://foo.com/http://bar.com'); - expect(normalizeUrl('https://foo.com/http://bar.com/foo//bar')).toBe( - 'https://foo.com/http://bar.com/foo/bar', - ); - expect(normalizeUrl('http://foo.com/%7Efoo/')).toBe('http://foo.com/~foo'); - expect(normalizeUrl('https://foo.com/%FAIL%/07/94/ca/55.jpg')).toBe( - 'https://foo.com/%FAIL%/07/94/ca/55.jpg', - ); - expect(normalizeUrl('http://foo.com/?')).toBe('http://foo.com'); - expect(normalizeUrl('êxample.com')).toBe('https://xn--xample-hva.com'); - expect(normalizeUrl('http://foo.com/?b=bar&a=foo')).toBe('http://foo.com/?a=foo&b=bar'); - expect(normalizeUrl('http://foo.com/?foo=bar*|<>:"')).toBe( - 'http://foo.com/?foo=bar*|%3C%3E:%22', - ); - expect(normalizeUrl('http://foo.com:5000')).toBe('http://foo.com:5000'); - expect(normalizeUrl('http://foo.com/foo#bar')).toBe('http://foo.com/foo#bar'); - expect(normalizeUrl('http://foo.com/foo/bar/../baz')).toBe('http://foo.com/foo/baz'); - expect(normalizeUrl('http://foo.com/foo/bar/./baz')).toBe('http://foo.com/foo/bar/baz'); - }); }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/normalizeUrl.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/normalizeUrl.spec.ts new file mode 100644 index 000000000..ca55aa3bb --- /dev/null +++ b/packages/oidc-client-service-worker/src/utils/__tests__/normalizeUrl.spec.ts @@ -0,0 +1,28 @@ +import { describe, expect, it } from 'vitest'; + +import { normalizeUrl } from '../normalizeUrl'; + +describe('normalizeUrl', () => { + it('keeps urls the same', () => { + expect(normalizeUrl('http://foo.com/')).toBe('http://foo.com/'); + expect(normalizeUrl('https://foo.com/')).toBe('https://foo.com/'); + }); + it('adds slashes', () => { + expect(normalizeUrl('http://foo.com')).toBe('http://foo.com/'); + }); + it('removes port numbers', () => { + expect(normalizeUrl('http://foo.com:80/')).toBe('http://foo.com/'); + expect(normalizeUrl('https://foo.com:443/')).toBe('https://foo.com/'); + }); + it('removed port numbers and adds slashes', () => { + expect(normalizeUrl('http://foo.com:80')).toBe('http://foo.com/'); + expect(normalizeUrl('https://foo.com:443')).toBe('https://foo.com/'); + }); + it('lowercases urls', () => { + expect(normalizeUrl('http://FOO.com/')).toBe('http://foo.com/'); + }); + + it('keeps invalid urls', () => { + expect(normalizeUrl('foo')).toBe('foo'); + }); +}); diff --git a/packages/oidc-client-service-worker/src/utils/domains.ts b/packages/oidc-client-service-worker/src/utils/domains.ts index 6f20c766a..d811b2ea3 100644 --- a/packages/oidc-client-service-worker/src/utils/domains.ts +++ b/packages/oidc-client-service-worker/src/utils/domains.ts @@ -1,5 +1,6 @@ import { acceptAnyDomainToken, openidWellknownUrlEndWith, scriptFilename } from '../constants'; import { Database, Domain, DomainDetails, OidcConfig, TrustedDomains } from '../types'; +import { normalizeUrl } from './normalizeUrl'; export function checkDomain(domains: Domain[], endpoint: string) { if (!endpoint) { @@ -52,13 +53,13 @@ export const getCurrentDatabaseDomain = ( if ( oidcServerConfiguration.tokenEndpoint && - normalizeUrl(url) === normalizeUrl(oidcServerConfiguration.tokenEndpoint) + url === normalizeUrl(oidcServerConfiguration.tokenEndpoint) ) { continue; } if ( oidcServerConfiguration.revocationEndpoint && - normalizeUrl(url) === normalizeUrl(oidcServerConfiguration.revocationEndpoint) + url === normalizeUrl(oidcServerConfiguration.revocationEndpoint) ) { continue; } @@ -96,87 +97,3 @@ export const getCurrentDatabaseDomain = ( } return null; }; - -export function normalizeUrl(url: string) { - url = url.trim(); - - const hasRelativeProtocol = url.startsWith('//'); - const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(url); - - // Prepend protocol - if (!isRelativeUrl) { - url = url.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, 'https:'); - } - - const urlObject = new URL(url); - - // Remove duplicate slashes if not preceded by a protocol - // NOTE: This could be implemented using a single negative lookbehind - // regex, but we avoid that to maintain compatibility with older js engines - // which do not have support for that feature. - if (urlObject.pathname) { - // Split the string by occurrences of this protocol regex, and perform - // duplicate-slash replacement on the strings between those occurrences - // (if any). - const protocolRegex = /\b[a-z][a-z\d+\-.]{1,50}:\/\//g; - - let lastIndex = 0; - let result = ''; - for (;;) { - const match = protocolRegex.exec(urlObject.pathname); - if (!match) { - break; - } - - const protocol = match[0]; - const protocolAtIndex = match.index; - const intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex); - - result += intermediate.replace(/\/{2,}/g, '/'); - result += protocol; - lastIndex = protocolAtIndex + protocol.length; - } - - const remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length); - result += remnant.replace(/\/{2,}/g, '/'); - - urlObject.pathname = result; - } - - // Decode URI octets - if (urlObject.pathname) { - try { - urlObject.pathname = decodeURI(urlObject.pathname); - } catch { - /* empty */ - } - } - - if (urlObject.hostname) { - // Remove trailing dot - urlObject.hostname = urlObject.hostname.replace(/\.$/, ''); - } - - // Sort query parameters - urlObject.searchParams.sort(); - - // Calling `.sort()` encodes the search parameters, so we need to decode them again. - try { - urlObject.search = decodeURIComponent(urlObject.search); - } catch { - /* empty */ - } - - // Remove trailing slash - urlObject.pathname = urlObject.pathname.replace(/\/$/, ''); - - // Take advantage of many of the Node `url` normalizations - url = urlObject.toString(); - - // Remove ending `/` unless removeSingleSlash is false - if (urlObject.hash === '') { - url = url.replace(/\/$/, ''); - } - - return url; -} diff --git a/packages/oidc-client-service-worker/src/utils/index.ts b/packages/oidc-client-service-worker/src/utils/index.ts index 724a65bc7..a8992e9ec 100644 --- a/packages/oidc-client-service-worker/src/utils/index.ts +++ b/packages/oidc-client-service-worker/src/utils/index.ts @@ -1,4 +1,5 @@ export * from './domains'; +export * from './normalizeUrl'; export * from './serializeHeaders'; export * from './sleep'; export * from './strings'; diff --git a/packages/oidc-client-service-worker/src/utils/normalizeUrl.ts b/packages/oidc-client-service-worker/src/utils/normalizeUrl.ts new file mode 100644 index 000000000..6ff1c9953 --- /dev/null +++ b/packages/oidc-client-service-worker/src/utils/normalizeUrl.ts @@ -0,0 +1,9 @@ +export function normalizeUrl(url: string) { + try { + return new URL(url).toString(); + } catch (error) { + console.error(`Failed to normalize url: ${url}`); + return url; + } +} + From 790da5a60cc7fb07ca82feb994c8d12ff3e01b69 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 24 Nov 2023 08:28:10 +0000 Subject: [PATCH 074/565] [skip ci] Update version package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 455644660..2509fa730 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.9.2", + "version": "7.9.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 12edd30f2..8ba13ebae 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.9.2'; +export default '7.9.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index daaf7495f..f39ae9c37 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.9.2", + "version": "7.9.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 12edd30f2..8ba13ebae 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.9.2'; +export default '7.9.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6da09223e..e0278884b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.9.2", + "version": "7.9.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 56bde67566f8203e9d62ae6e8b722c86a7b63cae Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 27 Nov 2023 15:00:11 +0100 Subject: [PATCH 075/565] doc(readme): Update README.md --- packages/oidc-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 9eaf8c3f7..c40527d68 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -111,7 +111,7 @@ export const configuration = { silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', - service_worker_relative_url: '/OidcServiceWorker.js', + service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode service_worker_only: false, demonstrating_proof_of_possession: false, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) }; From 6751b5c3f0e1265e35ac9b4b20cb673657eea6b4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 14:28:11 +0100 Subject: [PATCH 076/565] feat(ci): add auto changelog (release) --- .github/workflows/npm-publish.yml | 10 +- CHANGELOG.md | 867 ++++++++---------- README.md | 1 + bin/generate-changelog.sh | 45 + changelog-template.hbs | 27 - package.json | 4 +- .../oidc-client-service-worker/package.json | 2 +- .../oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 100 +- 12 files changed, 499 insertions(+), 565 deletions(-) create mode 100644 README.md create mode 100755 bin/generate-changelog.sh delete mode 100644 changelog-template.hbs diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 46290a5e9..bdf3e4d88 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -60,9 +60,10 @@ jobs: runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && !github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: token: ${{ secrets.GIT_TOKEN }} + fetch-depth: 0 - name: Determine Alpha, Beta or Release id: which_tag @@ -248,6 +249,13 @@ jobs: sed -i 's/"@axa-fr\/oidc-client": "[^"]*"/"@axa-fr\/oidc-client": "workspace:*"/g' package.json cat package.json working-directory: ./packages/react-oidc + + - name: Auto generate changelog + if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' + run: | + chmod +x ./bin/generate-changelog.sh + ./bin/generate-changelog.sh + - name: Commit updates package.json uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1374bc538..ab9790f86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,489 +1,378 @@ -### Changelog -All notable changes to this project will be documented in this file. - -#### [v3.1.7](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.6...v3.1.7) -> 17 June 2021 -- feat: add signinSilent to useReactOidc and AuthenticationContext [`#578`](https://github.com/AxaGuilDEv/react-oidc/pull/578) by Olivier YOUF -- ci: add dependabot config file and change prefix to `build(npm)` [`#561`](https://github.com/AxaGuilDEv/react-oidc/pull/561) by Olivier YOUF -- feat:unload userManager when unnmount oidc provider [`#547`](https://github.com/AxaGuilDEv/react-oidc/pull/547) by Olivier YOUF -- feat(context-fetch/fetch-core): removing recompose [`#530`](https://github.com/AxaGuilDEv/react-oidc/pull/530) by Olivier YOUF -- chore(deps): bump example dependencies [`80ccc10`](https://github.com/AxaGuilDEv/react-oidc/commit/80ccc10c5cb33df891365c896b81b8eb1d5e46c5) by Julien Foratier -- fix: create usermanager before rendering + some refacto [`16cb26d`](https://github.com/AxaGuilDEv/react-oidc/commit/16cb26d057e50037b7ee04f32319f02a92ae72cd) by Amine JELTI -- chore(release): publish v3.1.7 ***NO_CI*** [`8b5cb40`](https://github.com/AxaGuilDEv/react-oidc/commit/8b5cb405d5735bacd24318c9fe0de1736b98712e) by Build-CI -- chore(deps): [security] bump handlebars from 4.4.2 to 4.7.6 [`c785f2d`](https://github.com/AxaGuilDEv/react-oidc/commit/c785f2d6cd92d9380c0c3ec99e01bb61f7ec2fcd) by dependabot-preview[bot] -- chore(deps): [security] bump ini from 1.3.5 to 1.3.8 [`c978517`](https://github.com/AxaGuilDEv/react-oidc/commit/c9785176ccd4c1cd3777f8e6e12e3535a37e7aa6) by dependabot-preview[bot] -- fix(examples): replace https://demo.identityserver.io deprecated configuration [`ebe9e79`](https://github.com/AxaGuilDEv/react-oidc/commit/ebe9e79465f52323626b2ac94b333e8d51987999) by Julien Foratier -- docs(changelog) update to new 3.1.6 [`8cfbc7c`](https://github.com/AxaGuilDEv/react-oidc/commit/8cfbc7c6111444a156c5bddcad253c0366e6f38c) by Build-CI -- chore(deps): [security] bump lodash from 4.17.15 to 4.17.20 [`124a9ca`](https://github.com/AxaGuilDEv/react-oidc/commit/124a9ca777135382695f2873253f076bf4f7434a) by dependabot-preview[bot] - -#### [v3.1.6](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.5...v3.1.6) -> 13 October 2020 -- feat(context): Allowing hooking into the oidc-client events in the AuthenticationProvider [`#415`](https://github.com/AxaGuilDEv/react-oidc/issues/415) by Michael Wolfenden -- chore(release): publish v3.1.6 ***NO_CI*** [`9c1a618`](https://github.com/AxaGuilDEv/react-oidc/commit/9c1a6186d4f804d6ddcf50819602653d50f05df3) by Build-CI -- docs(changelog) update to new 3.1.5 [`02ad255`](https://github.com/AxaGuilDEv/react-oidc/commit/02ad25574978464cb67123d4b695a62a15704960) by Build-CI -- feat(logger): remove debug overriddenConfiguration [`f23bebd`](https://github.com/AxaGuilDEv/react-oidc/commit/f23bebdd64de6082d183bead17553174919d515a) by Arnaud Foraison -- fix(example): add hook dependency [`b491c02`](https://github.com/AxaGuilDEv/react-oidc/commit/b491c02757775052d1605b2922fa13e25acf7128) by Arnaud Foraison - -#### [v3.1.5](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.4...v3.1.5) -> 8 September 2020 -- Add prop-types as dependency [`#507`](https://github.com/AxaGuilDEv/react-oidc/pull/507) by Olivier YOUF -- fix(core): keep location.hash in the url used to redirect after login [`#515`](https://github.com/AxaGuilDEv/react-oidc/pull/515) by jreimbold-t1 -- fix: move prop-types from peer to dependencies [`a53a189`](https://github.com/AxaGuilDEv/react-oidc/commit/a53a189b08b70ee705bb06fd0d8eee4184a2558b) by Arnaud Foraison -- chore(release): publish v3.1.5 ***NO_CI*** [`0a24a04`](https://github.com/AxaGuilDEv/react-oidc/commit/0a24a04741b5d6ac28d0cd4d6346beeda01e79a8) by Build-CI -- docs(changelog) update to new 3.1.4 [`b43b45d`](https://github.com/AxaGuilDEv/react-oidc/commit/b43b45dab5b2ae6f46cce62e3061e23ab388b61e) by Build-CI - -#### [v3.1.4](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.3...v3.1.4) -> 14 July 2020 -- fix(context): made type for AuthenticationProviderProps partial [`#473`](https://github.com/AxaGuilDEv/react-oidc/pull/473) by Olivier YOUF -- chore(release): publish v3.1.4 ***NO_CI*** [`aea9407`](https://github.com/AxaGuilDEv/react-oidc/commit/aea940793fbb9ecf4cc87a0d870e4b9e7d2e5156) by Build-CI -- docs(changelog) update to new 3.1.3 [`c3043c4`](https://github.com/AxaGuilDEv/react-oidc/commit/c3043c4078b24906e35b4a15062a1995e79683af) by Build-CI - -#### [v3.1.3](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.2...v3.1.3) -> 16 June 2020 -- style: remove overwritten property jsx-filename-extension [`#468`](https://github.com/AxaGuilDEv/react-oidc/pull/468) by Olivier YOUF -- fix(Vanilla): return type callback with signinSilent [`#469`](https://github.com/AxaGuilDEv/react-oidc/pull/469) by Olivier YOUF -- feat(react-oidc-redux): Adding Redux Authenticating component [`#463`](https://github.com/AxaGuilDEv/react-oidc/pull/463) by Olivier YOUF -- Fix types for AuthenticationProvider and withOidcUser [`#457`](https://github.com/AxaGuilDEv/react-oidc/pull/457) by Olivier YOUF -- chore(release): publish v3.1.3 ***NO_CI*** [`5b4db53`](https://github.com/AxaGuilDEv/react-oidc/commit/5b4db533b3edaa60b273dd05dd822b6687793165) by Build-CI -- Replace Pick with Omit [`7f160b7`](https://github.com/AxaGuilDEv/react-oidc/commit/7f160b708bb51dd43389571fd6f0d8e66b5cd2f8) by Vincent Ricard -- docs(changelog) update to new 3.1.2 [`faa73a7`](https://github.com/AxaGuilDEv/react-oidc/commit/faa73a7c9cc015ac4dd10289819d06d071ef7ca7) by Build-CI - -#### [v3.1.2](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.1...v3.1.2) -> 11 June 2020 -- fix(context): Renrender children aftersilent signin [`#464`](https://github.com/AxaGuilDEv/react-oidc/pull/464) by Olivier YOUF -- chore(release): publish v3.1.2 ***NO_CI*** [`6dbcbc8`](https://github.com/AxaGuilDEv/react-oidc/commit/6dbcbc860df7ee6697983d1024950312a2c8eea4) by Build-CI -- Add usage example to demo [`e3bb8b0`](https://github.com/AxaGuilDEv/react-oidc/commit/e3bb8b03e13048f99672050946bb2379dde417a4) by Viet VO -- Fix types for AuthenticationProvider and withOidcUser [`5004289`](https://github.com/AxaGuilDEv/react-oidc/commit/50042890bc070bd87a99c0c730acfc47678e0d8a) by Vincent Ricard -- Add readme [`be2bb57`](https://github.com/AxaGuilDEv/react-oidc/commit/be2bb5783ae702d65dbc90b38cf41bcf55002415) by Viet VO -- Add config option to OidcSecure [`7881742`](https://github.com/AxaGuilDEv/react-oidc/commit/7881742d81fda72571d88642da13a5fd6d188139) by Viet VO -- PR: change to authenticating [`bf06f9e`](https://github.com/AxaGuilDEv/react-oidc/commit/bf06f9e5f25e8d6343849f176ed5e1ecfb54b158) by Viet VO -- fix(Vanilla): return type callback with signinSilent [`3d4f8af`](https://github.com/AxaGuilDEv/react-oidc/commit/3d4f8af68901a39d6a9e4c958cf6c6e24c5c5ab5) by Hamza HAMIDI -- style: remove overwritten property jsx-filename-extension [`5dee604`](https://github.com/AxaGuilDEv/react-oidc/commit/5dee604e9bb16edad8a0c87c3c29d2fa98fc870f) by Hamza Hamidi -- docs(changelog) update to new 3.1.1 [`dd8b685`](https://github.com/AxaGuilDEv/react-oidc/commit/dd8b685650d08c2d2a480e7406b5d2f09c0ddc50) by Build-CI -- remove useMemo [`4cbf8f2`](https://github.com/AxaGuilDEv/react-oidc/commit/4cbf8f2df93271544f09f28008b199bfea07b391) by Viet VO - -#### [v3.1.1](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.1-alpha.0...v3.1.1) -> 25 May 2020 -- chore(release): publish v3.1.1 ***NO_CI*** [`1500b7e`](https://github.com/AxaGuilDEv/react-oidc/commit/1500b7e28914afb913ea4fc3e6b87ee707999fc3) by Build-CI -- docs(changelog) update to new 3.1.1-alpha.0 [`90ea0c9`](https://github.com/AxaGuilDEv/react-oidc/commit/90ea0c954531093f6f7a5cd221cf4d986468fd7c) by Build-CI - -#### [v3.1.1-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.1.0-alpha.0...v3.1.1-alpha.0) -> 20 May 2020 -- fix(context): Memoize the child component [`#451`](https://github.com/AxaGuilDEv/react-oidc/pull/451) by Olivier YOUF -- chore(release): publish v3.1.1-alpha.0 ***NO_CI*** [`dc8ee89`](https://github.com/AxaGuilDEv/react-oidc/commit/dc8ee8944258e33430be309cb09d5c55f71fc13b) by Build-CI -- docs(changelog) update to new 3.1.0-alpha.0 [`6a33c46`](https://github.com/AxaGuilDEv/react-oidc/commit/6a33c46beaa3f32c56c516811d6961362e761b20) by Build-CI - -#### [v3.1.0-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.8...v3.1.0-alpha.0) -> 12 May 2020 -- fix: add logout action [`#439`](https://github.com/AxaGuilDEv/react-oidc/pull/439) by Olivier YOUF -- refactor(context): Refactor/containers providers [`#432`](https://github.com/AxaGuilDEv/react-oidc/pull/432) by Olivier YOUF -- Typescript migration [`#410`](https://github.com/AxaGuilDEv/react-oidc/pull/410) by Olivier YOUF -- Remove all occurences of 'triggerAuthFlow' [`#425`](https://github.com/AxaGuilDEv/react-oidc/pull/425) by Olivier YOUF -- Overrides the react-redux dependency [`#424`](https://github.com/AxaGuilDEv/react-oidc/pull/424) by Olivier YOUF -- Fix minor typos in docs [`#414`](https://github.com/AxaGuilDEv/react-oidc/pull/414) by Tommi Laukkanen -- Remove all occurences of 'triggerAuthFlow' [`#392`](https://github.com/AxaGuilDEv/react-oidc/issues/392) by Vincent Ricard -- Upgrade Jest [`7281ee1`](https://github.com/AxaGuilDEv/react-oidc/commit/7281ee1e5a7d3f19f6381a427ce5bfa4332829ef) by Vincent Ricard -- Migration of packages/core [`9f518a5`](https://github.com/AxaGuilDEv/react-oidc/commit/9f518a50f7867a702d4174e764d169de9b21a5c6) by Vincent Ricard -- Format code with prettier and fix lint errors [`52ae362`](https://github.com/AxaGuilDEv/react-oidc/commit/52ae362769572e29155403695d8bb5de26ea4c26) by Vincent Ricard -- WIP [`b123a42`](https://github.com/AxaGuilDEv/react-oidc/commit/b123a4206ec4b7b134714d8f9e70434682a01c99) by Vincent Ricard -- WIP context package [`0fa40e9`](https://github.com/AxaGuilDEv/react-oidc/commit/0fa40e99a3d42ebdcf472bbd6d0ba7cca55c25c7) by Vincent Ricard -- WIP redux package [`b251bcc`](https://github.com/AxaGuilDEv/react-oidc/commit/b251bcc452a1362e54463d3f4c86b9f883c973f2) by Vincent Ricard -- Rename OidcHistory into ReactOidcHistory [`760c77f`](https://github.com/AxaGuilDEv/react-oidc/commit/760c77f511536eaf49f7e1e3b702a741c0723d36) by Vincent Ricard -- chore(release): publish v3.1.0-alpha.0 ***NO_CI*** [`892f3cb`](https://github.com/AxaGuilDEv/react-oidc/commit/892f3cb98ab452f11823af8ed44fb16897f14ecb) by Build-CI -- chore(release): publish v3.0.9-alpha.0 ***NO_CI*** [`61c8884`](https://github.com/AxaGuilDEv/react-oidc/commit/61c8884393c0df5ae37b0c8b113cb92a942602aa) by Build-CI -- WIP [`0282c3c`](https://github.com/AxaGuilDEv/react-oidc/commit/0282c3c81cfb1ecc4be57408f3dd6e7a2bc72fe7) by Vincent Ricard -- Fix some tests [`6a7b09c`](https://github.com/AxaGuilDEv/react-oidc/commit/6a7b09c90d47203eb5cfe5bafb71e3371def176f) by Vincent Ricard -- docs(changelog) update to new 3.0.9-alpha.0 [`08a6938`](https://github.com/AxaGuilDEv/react-oidc/commit/08a69388c8177bc87335cb741330811db6d2aca2) by Build-CI -- Add specific type ofr UserStore [`1b44db5`](https://github.com/AxaGuilDEv/react-oidc/commit/1b44db5d9a9c433b27571e73335bfc18fec4f97f) by Vincent Ricard -- WIP redux-fetch package [`a8bed40`](https://github.com/AxaGuilDEv/react-oidc/commit/a8bed40cead711a707ae1dfdb5ca36e77a43935d) by Vincent Ricard -- WIP context-fetch package [`fd6f8f2`](https://github.com/AxaGuilDEv/react-oidc/commit/fd6f8f2872c12f6d4abdec36f0915524b64cab17) by Vincent Ricard -- docs(changelog) update to new 3.0.8 [`f28c0ed`](https://github.com/AxaGuilDEv/react-oidc/commit/f28c0ede0d3bba884085b1269b94eee3a223e50e) by Build-CI -- Revert a useless modification in fetch-core/package.json [`fa101b8`](https://github.com/AxaGuilDEv/react-oidc/commit/fa101b865ba386cdef4ebf1479ab357ce8e0288c) by Vincent Ricard - -#### [v3.0.8](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.7...v3.0.8) -> 14 February 2020 -- fix(options): options can be overrided [`#399`](https://github.com/AxaGuilDEv/react-oidc/pull/399) by Guillaume Chervet -- fix(fetchToken): options override [`#398`](https://github.com/AxaGuilDEv/react-oidc/pull/398) by Guillaume Chervet -- chore(release): publish v3.0.8 ***NO_CI*** [`ecccc47`](https://github.com/AxaGuilDEv/react-oidc/commit/ecccc47cb9ee65cccbb23aac53e215ced26d4914) by Build-CI -- docs(changelog) update to new 3.0.7 [`1c2e599`](https://github.com/AxaGuilDEv/react-oidc/commit/1c2e599cc9eeffc287b05b6c2671b270c28ad91e) by Build-CI - -#### [v3.0.7](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.6...v3.0.7) -> 7 February 2020 -- chore(deps-dev): bump concurrently from 4.1.2 to 5.1.0 [`#393`](https://github.com/AxaGuilDEv/react-oidc/pull/393) by dependabot-preview[bot] -- refactor(log): Replace console.log by oidcLog [`#386`](https://github.com/AxaGuilDEv/react-oidc/pull/386) by Cockedey Sébastien -- chore(release): publish v3.0.7 ***NO_CI*** [`9bdbb89`](https://github.com/AxaGuilDEv/react-oidc/commit/9bdbb8976b173d1fbc8da12e1a623aca61c39d6c) by Build-CI -- docs(changelog) update to new 3.0.6 [`46055a6`](https://github.com/AxaGuilDEv/react-oidc/commit/46055a654246bb678e745abb5b57717049850d82) by Build-CI - -#### [v3.0.6](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.6-alpha.0...v3.0.6) -> 7 January 2020 -- feat(components): add bem to default components [`#384`](https://github.com/AxaGuilDEv/react-oidc/pull/384) by Guillaume Chervet -- chore(release): publish v3.0.6 ***NO_CI*** [`db79cce`](https://github.com/AxaGuilDEv/react-oidc/commit/db79ccec24ddca89f7eb55a84a9684e409c8e548) by Build-CI -- docs(changelog) update to new 3.0.6-alpha.0 [`c55f2ed`](https://github.com/AxaGuilDEv/react-oidc/commit/c55f2ed5538e1dd4bd9f9f0ae0d25fdeb1421984) by Build-CI - -#### [v3.0.6-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.5-alpha.0...v3.0.6-alpha.0) -> 5 January 2020 -- fix(SessionLost): complete re-auth automaticaly first time display [`#373`](https://github.com/AxaGuilDEv/react-oidc/pull/373) by Guillaume Chervet -- chore(deps-dev): bump eslint-plugin-react-hooks from 1.7.0 to 2.3.0 [`#363`](https://github.com/AxaGuilDEv/react-oidc/pull/363) by dependabot-preview[bot] -- chore(deps-dev): bump redux from 4.0.4 to 4.0.5 [`#372`](https://github.com/AxaGuilDEv/react-oidc/pull/372) by dependabot-preview[bot] -- chore(deps-dev): bump @babel/cli from 7.7.4 to 7.7.7 [`#369`](https://github.com/AxaGuilDEv/react-oidc/pull/369) by dependabot-preview[bot] -- chore(deps-dev): bump oidc-client from 1.9.1 to 1.10.1 [`#366`](https://github.com/AxaGuilDEv/react-oidc/pull/366) by dependabot-preview[bot] -- chore(deps-dev): bump auto-changelog from 1.16.1 to 1.16.2 [`#367`](https://github.com/AxaGuilDEv/react-oidc/pull/367) by dependabot-preview[bot] -- chore(deps-dev): bump eslint-plugin-import from 2.18.2 to 2.19.1 [`#364`](https://github.com/AxaGuilDEv/react-oidc/pull/364) by dependabot-preview[bot] -- chore(deps-dev): bump @testing-library/jest-dom from 4.1.0 to 4.2.4 [`#368`](https://github.com/AxaGuilDEv/react-oidc/pull/368) by dependabot-preview[bot] -- chore(deps): bump @typescript-eslint/parser from 2.3.2 to 2.14.0 [`#371`](https://github.com/AxaGuilDEv/react-oidc/pull/371) by dependabot-preview[bot] -- chore(deps-dev): bump inquirer from 6.5.2 to 7.0.1 [`#365`](https://github.com/AxaGuilDEv/react-oidc/pull/365) by dependabot-preview[bot] -- chore(release): publish v3.0.6-alpha.0 ***NO_CI*** [`c871a60`](https://github.com/AxaGuilDEv/react-oidc/commit/c871a60adc3a6a8bbe816e5298e6056563e5b531) by Build-CI -- docs(changelog) update to new 3.0.5-alpha.0 [`96a24a9`](https://github.com/AxaGuilDEv/react-oidc/commit/96a24a95d62b1b829958c5769ac0617ccab18cca) by Build-CI - -#### [v3.0.5-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.4-alpha.0...v3.0.5-alpha.0) -> 3 January 2020 -- chore(deps-dev): bump @testing-library/react from 8.0.9 to 9.4.0 [`#358`](https://github.com/AxaGuilDEv/react-oidc/pull/358) by dependabot-preview[bot] -- chore(deps): [security] bump lodash.template from 4.4.0 to 4.5.0 [`#230`](https://github.com/AxaGuilDEv/react-oidc/pull/230) by dependabot-preview[bot] -- Can set the JWT in memory [`#354`](https://github.com/AxaGuilDEv/react-oidc/pull/354) by Olivier YOUF -- fix(all): F5 always re-auth and manage session lost [`#319`](https://github.com/AxaGuilDEv/react-oidc/pull/319) by Olivier YOUF -- chore(deps): bump enzyme-adapter-react-16 from 1.14.0 to 1.15.2 [`#359`](https://github.com/AxaGuilDEv/react-oidc/pull/359) by dependabot-preview[bot] -- chore(deps-dev): bump eslint-plugin-prettier from 3.1.1 to 3.1.2 [`#357`](https://github.com/AxaGuilDEv/react-oidc/pull/357) by dependabot-preview[bot] -- chore(deps-dev): bump redux-oidc from 3.1.5 to 3.1.7 [`#336`](https://github.com/AxaGuilDEv/react-oidc/pull/336) by dependabot-preview[bot] -- chore(deps-dev): bump typescript from 3.6.3 to 3.7.4 [`#361`](https://github.com/AxaGuilDEv/react-oidc/pull/361) by dependabot-preview[bot] -- chore(deps-dev): bump @babel/preset-react from 7.0.0 to 7.7.4 [`#347`](https://github.com/AxaGuilDEv/react-oidc/pull/347) by dependabot-preview[bot] -- chore(deps): [security] bump https-proxy-agent from 2.2.2 to 2.2.4 [`#345`](https://github.com/AxaGuilDEv/react-oidc/pull/345) by dependabot-preview[bot] -- chore(deps-dev): bump lint-staged from 8.2.1 to 9.5.0 [`#348`](https://github.com/AxaGuilDEv/react-oidc/pull/348) by dependabot-preview[bot] -- chore(deps-dev): bump react-redux from 5.1.1 to 7.1.3 [`#334`](https://github.com/AxaGuilDEv/react-oidc/pull/334) by dependabot-preview[bot] -- chore(deps-dev): bump eslint-plugin-jest from 22.17.0 to 23.2.0 [`#362`](https://github.com/AxaGuilDEv/react-oidc/pull/362) by dependabot-preview[bot] -- feat(context): Add events in useReactOidc hook [`#343`](https://github.com/AxaGuilDEv/react-oidc/pull/343) by Olivier YOUF -- chore(release): publish v3.0.5-alpha.0 ***NO_CI*** [`6fa041a`](https://github.com/AxaGuilDEv/react-oidc/commit/6fa041af0e1f1fcb9216fd6ed7a287e7fdc73ed6) by Build-CI -- fix(sessionlost) typo [`dd69fe6`](https://github.com/AxaGuilDEv/react-oidc/commit/dd69fe67acda1d6f2b7b1933cafa67f3c6133839) by guillaume chervet -- fix(sessionlost) typo [`2d8427f`](https://github.com/AxaGuilDEv/react-oidc/commit/2d8427ffd81f39dc65f9ecf26bc65b4244013607) by guillaume chervet -- refactor(auth) refresh branch and clean things [`59dedc1`](https://github.com/AxaGuilDEv/react-oidc/commit/59dedc11c7fc10a246ff8c915fa0583be981ab52) by guillaume chervet -- docs(changelog) update to new 3.0.4-alpha.0 [`b201e35`](https://github.com/AxaGuilDEv/react-oidc/commit/b201e3563ff1caf9bf940dde2210ef2bfc39ace0) by Build-CI - -#### [v3.0.4-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.3-alpha.0...v3.0.4-alpha.0) -> 18 November 2019 -- fix(context): avoid errors on console with custom callback [`#341`](https://github.com/AxaGuilDEv/react-oidc/pull/341) by Olivier YOUF -- fix(context): Fix silent crash [`#340`](https://github.com/AxaGuilDEv/react-oidc/pull/340) by Olivier YOUF -- doc(oidc-metadata): add document about metadata [`#330`](https://github.com/AxaGuilDEv/react-oidc/pull/330) by Guillaume Chervet -- chore(release): publish v3.0.4-alpha.0 ***NO_CI*** [`f8d7557`](https://github.com/AxaGuilDEv/react-oidc/commit/f8d755783d2b4cfbee0cdaabe6f27178d3200080) by Build-CI -- docs(changelog) update to new 3.0.3-alpha.0 [`6b0fc09`](https://github.com/AxaGuilDEv/react-oidc/commit/6b0fc0961c90ec3200e3995482fe748d1fbe5e1d) by Build-CI - -#### [v3.0.3-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.2-alpha.0...v3.0.3-alpha.0) -> 5 November 2019 -- fix(redux) oidcSecure hoc was not working [`#331`](https://github.com/AxaGuilDEv/react-oidc/pull/331) by Guillaume Chervet -- wip [`e5d41f8`](https://github.com/AxaGuilDEv/react-oidc/commit/e5d41f82a1b7d7e1608e84aad4482a5f4ac5fefc) by guillaume chervet -- wip [`d03101d`](https://github.com/AxaGuilDEv/react-oidc/commit/d03101d730d6cbecc3a4ee191bfde97137060cdf) by guillaume chervet -- chore(release): publish v3.0.3-alpha.0 ***NO_CI*** [`9b8de3b`](https://github.com/AxaGuilDEv/react-oidc/commit/9b8de3bf60b0d5d58caf12513be1bd742d2936df) by Build-CI -- maj [`b2d63e8`](https://github.com/AxaGuilDEv/react-oidc/commit/b2d63e8c92e0526abe1ba242759c1716f56bdac6) by guillaume chervet -- wip [`5613367`](https://github.com/AxaGuilDEv/react-oidc/commit/5613367e95de9aa5399b9ccdacd268e5d0ef4516) by guillaume chervet -- docs(changelog) update to new 3.0.2-alpha.0 [`5f22a9f`](https://github.com/AxaGuilDEv/react-oidc/commit/5f22a9fe09da0b803abd0c7698638acdfe6620f9) by Build-CI - -#### [v3.0.2-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.1-alpha.0...v3.0.2-alpha.0) -> 15 October 2019 -- Fix component prop type validation to use elementType [`#321`](https://github.com/AxaGuilDEv/react-oidc/pull/321) by Henri Koskenranta -- fix(router) : Add some polyfills for IE [`#314`](https://github.com/AxaGuilDEv/react-oidc/pull/314) by Olivier YOUF -- chore(mergify) add sonar rules [`#313`](https://github.com/AxaGuilDEv/react-oidc/pull/313) by Guillaume Chervet -- refactor(context) : remove callback OR in core [`#310`](https://github.com/AxaGuilDEv/react-oidc/pull/310) by Olivier YOUF -- chore(deps-dev): bump cross-env from 5.2.0 to 6.0.0 [`#306`](https://github.com/AxaGuilDEv/react-oidc/pull/306) by dependabot-preview[bot] -- chore(deps-dev): bump redux from 4.0.1 to 4.0.4 [`#243`](https://github.com/AxaGuilDEv/react-oidc/pull/243) by dependabot-preview[bot] -- fix(all) F5 always re-auth and manage session lost [`ee0c13f`](https://github.com/AxaGuilDEv/react-oidc/commit/ee0c13f437244fad58fa352da9a1a35f8e3eb3f7) by guillaume chervet -- wip [`b2a7185`](https://github.com/AxaGuilDEv/react-oidc/commit/b2a71851d0cb91653e1d77e2fe037aa2114e9037) by guillaume chervet -- chore(release): publish v3.0.2-alpha.0 ***NO_CI*** [`1e74a2c`](https://github.com/AxaGuilDEv/react-oidc/commit/1e74a2cdf751debd3e5fe6bb84c55d0850b27ba8) by Build-CI -- docs(changelog) update to new 3.0.1-alpha.0 [`75b21af`](https://github.com/AxaGuilDEv/react-oidc/commit/75b21af75f890f3b08c46847dcb7ab7fd52df1ef) by Build-CI -- wip [`e20c897`](https://github.com/AxaGuilDEv/react-oidc/commit/e20c8975f80f71ac7a6b4eaebf44025744359d93) by guillaume chervet - -#### [v3.0.1-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v3.0.0-alpha.0...v3.0.1-alpha.0) -> 25 September 2019 -- feat(all) Add callback component [`#303`](https://github.com/AxaGuilDEv/react-oidc/pull/303) by Madebymaurice -- doc(package) add better keword and update licence [`#304`](https://github.com/AxaGuilDEv/react-oidc/pull/304) by Guillaume Chervet -- docs: fixed a typo on AuthenticationProvider [`#295`](https://github.com/AxaGuilDEv/react-oidc/pull/295) by Jean-Lou Piermé -- fix(sample:redux) typo to get the condition working [`#292`](https://github.com/AxaGuilDEv/react-oidc/pull/292) by Markus Lasermann -- chore(release): publish v3.0.1-alpha.0 ***NO_CI*** [`3a6de2e`](https://github.com/AxaGuilDEv/react-oidc/commit/3a6de2ef2af3a7a51ee191a0c003907ba7fbcd7e) by Build-CI -- docs(changelog) update to new 3.0.0-alpha.0 [`1953c47`](https://github.com/AxaGuilDEv/react-oidc/commit/1953c479773b6181a3e0acf308e63bdc4d12cf8b) by Build-CI - -#### [v3.0.0-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.8...v3.0.0-alpha.0) -> 2 September 2019 -- feat(router) Agnostic router [`#290`](https://github.com/AxaGuilDEv/react-oidc/pull/290) by Arnaud Foraison -- fix(licence)set correct entity name [`#285`](https://github.com/AxaGuilDEv/react-oidc/pull/285) by Guillaume Chervet -- chore(release): publish v3.0.0-alpha.0 ***NO_CI*** [`6192d98`](https://github.com/AxaGuilDEv/react-oidc/commit/6192d98c63cd30ee2b69561bd78c4c313353dff7) by Build-CI -- docs(changelog) update to new 2.0.8 [`db610e3`](https://github.com/AxaGuilDEv/react-oidc/commit/db610e36a5874fc05ee3130eb116223b8122aa29) by Build-CI - -#### [v2.0.8](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.7...v2.0.8) -> 20 August 2019 -- fix(redux) F5 always re-auth [`#278`](https://github.com/AxaGuilDEv/react-oidc/pull/278) by Guillaume Chervet -- fix(redux) sample react route problem [`#277`](https://github.com/AxaGuilDEv/react-oidc/pull/277) by Guillaume Chervet -- chore(release): publish v2.0.8 ***NO_CI*** [`ebe2d7d`](https://github.com/AxaGuilDEv/react-oidc/commit/ebe2d7de2a76557b0bd95110afdf7b63192ead46) by Build-CI -- docs(changelog) update to new 2.0.7 [`5264289`](https://github.com/AxaGuilDEv/react-oidc/commit/5264289a48a6c0fd863757cf57b3e4bec89a6fe1) by Build-CI - -#### [v2.0.7](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.6...v2.0.7) -> 13 August 2019 -- fix(redux) workflow [`#271`](https://github.com/AxaGuilDEv/react-oidc/pull/271) by Guillaume Chervet -- chore(release): publish v2.0.7 ***NO_CI*** [`a45f630`](https://github.com/AxaGuilDEv/react-oidc/commit/a45f6300cac5f37efc9fdbdf76f7c97107a49b2f) by Build-CI -- docs(changelog) update to new 2.0.6 [`356afab`](https://github.com/AxaGuilDEv/react-oidc/commit/356afab343cd06f9535feb3a64fdf9675a84b8f2) by Build-CI - -#### [v2.0.6](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.5...v2.0.6) -> 9 August 2019 -- fix(redux) workflow [`#266`](https://github.com/AxaGuilDEv/react-oidc/pull/266) by Guillaume Chervet -- chore(release): publish v2.0.6 ***NO_CI*** [`a55b16e`](https://github.com/AxaGuilDEv/react-oidc/commit/a55b16edadb67903e51db9e359d7f260107c4a39) by Build-CI -- docs(changelog) update to new 2.0.5 [`44cc13b`](https://github.com/AxaGuilDEv/react-oidc/commit/44cc13b9b33de9184fd87cb3beae48aea33837a7) by Build-CI - -#### [v2.0.5](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.4...v2.0.5) -> 5 August 2019 -- fix(redux) incorrect properties [`#262`](https://github.com/AxaGuilDEv/react-oidc/pull/262) by Guillaume Chervet -- chore(release): publish v2.0.5 ***NO_CI*** [`fff2d20`](https://github.com/AxaGuilDEv/react-oidc/commit/fff2d20ae08b5a0f5af84452db2376280df70f55) by Build-CI -- docs(changelog) update to new 2.0.4 [`a43242b`](https://github.com/AxaGuilDEv/react-oidc/commit/a43242b6cc33d096e9c85303f8d63c8d6be7ad07) by Build-CI - -#### [v2.0.4](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.3...v2.0.4) -> 5 August 2019 -- fix(redux) upgrade react router version [`#261`](https://github.com/AxaGuilDEv/react-oidc/pull/261) by Guillaume Chervet -- chore(release): publish v2.0.4 ***NO_CI*** [`2b63d3e`](https://github.com/AxaGuilDEv/react-oidc/commit/2b63d3ee4a925b045c1a711b2a92cace4448d3b0) by Build-CI -- docs(changelog) update to new 2.0.3 [`dba7b1d`](https://github.com/AxaGuilDEv/react-oidc/commit/dba7b1d899ab58c7351ffe065e0ad4b01fb3ef21) by Build-CI - -#### [v2.0.3](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.2...v2.0.3) -> 2 August 2019 -- fix(redux) token renew [`#260`](https://github.com/AxaGuilDEv/react-oidc/pull/260) by Guillaume Chervet -- fix(redux) token renew [`#260`](https://github.com/AxaGuilDEv/react-oidc/pull/260) by Guillaume Chervet -- chore(build) add and regenerate package.lock [`ef392f1`](https://github.com/AxaGuilDEv/react-oidc/commit/ef392f1c2294a150444dc370531ba17f46d30701) by guillaume chervet -- chore(package) fix package version [`0a2a2bf`](https://github.com/AxaGuilDEv/react-oidc/commit/0a2a2bf84740fac0586cdd137ae5cf47102957ac) by guillaume chervet -- chore(release): publish v2.0.3 ***NO_CI*** [`bcac2f4`](https://github.com/AxaGuilDEv/react-oidc/commit/bcac2f4e37e6bc280fed9e6690224d552f8ee229) by Build-CI -- docs(changelog) update to new 2.0.2 [`ff075a4`](https://github.com/AxaGuilDEv/react-oidc/commit/ff075a4b400a074d376a4c07f4a751e6914f6cb4) by Build-CI - -#### [v2.0.2](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.2-alpha.0...v2.0.2) -> 30 July 2019 -- fix(redux) token renew [`#258`](https://github.com/AxaGuilDEv/react-oidc/pull/258) by Guillaume Chervet -- chore(release): publish v2.0.2 ***NO_CI*** [`8e50a29`](https://github.com/AxaGuilDEv/react-oidc/commit/8e50a29d6302b3c0487dd5102fe115458760705a) by Build-CI -- docs(changelog) update to new 2.0.2-alpha.0 [`df80867`](https://github.com/AxaGuilDEv/react-oidc/commit/df808675ee9d524f15d2c1f493d8cfe5a36d926e) by Build-CI - -#### [v2.0.2-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.1-alpha.0...v2.0.2-alpha.0) -> 25 July 2019 -- doc : add optionnal parameter for post logout uri redirect [`#253`](https://github.com/AxaGuilDEv/react-oidc/pull/253) by Olivier YOUF -- chore(release): publish v2.0.2-alpha.0 ***NO_CI*** [`3c1230a`](https://github.com/AxaGuilDEv/react-oidc/commit/3c1230ab6b950a100ba58190f4f9781ed06af82f) by Build-CI -- docs(changelog) update to new 2.0.1-alpha.0 [`c7c32a2`](https://github.com/AxaGuilDEv/react-oidc/commit/c7c32a21992e8f907671788f4d49a3af7a76fcd6) by Build-CI - -#### [v2.0.1-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v2.0.0-alpha.0...v2.0.1-alpha.0) -> 15 July 2019 -- Fix/infiniteloop [`#238`](https://github.com/AxaGuilDEv/react-oidc/pull/238) by Olivier YOUF -- fix(infiniteLoop) : package upgrade [`e98e7d6`](https://github.com/AxaGuilDEv/react-oidc/commit/e98e7d6febdc820dc66122db43d443a8eb3d7d26) by Olivier YOUF -- fix(infiniteLoop) : change hooks to avoid infinite loop [`2168254`](https://github.com/AxaGuilDEv/react-oidc/commit/21682540fdf9a71e178942ee31b711a1f2c1575d) by Olivier YOUF -- chore(release): publish v2.0.1-alpha.0 ***NO_CI*** [`d906ddf`](https://github.com/AxaGuilDEv/react-oidc/commit/d906ddf3b2d269a362604e0a1418699bd4d10371) by Build-CI -- docs(changelog) update to new 2.0.0-alpha.0 [`2b07917`](https://github.com/AxaGuilDEv/react-oidc/commit/2b0791737eaf7c42b96ba77900d1bf10aa6a1e09) by Build-CI - -#### [v2.0.0-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.3.3...v2.0.0-alpha.0) -> 11 July 2019 -- fix(packages) : rebuild packages for package lock [`#229`](https://github.com/AxaGuilDEv/react-oidc/pull/229) by Olivier YOUF -- Feature/hooks [`#225`](https://github.com/AxaGuilDEv/react-oidc/pull/225) by Olivier YOUF -- fix(packages) : resolves missing scripts [`043a66e`](https://github.com/AxaGuilDEv/react-oidc/commit/043a66eee2f3862e1a0ab5b4155fd2475206fa35) by Olivier YOUF -- upgrading React Context + Hooks [`dafe353`](https://github.com/AxaGuilDEv/react-oidc/commit/dafe353e93456cbb2d4feba5f20cbc563029e50c) by Olivier YOUF -- babel 7 migration [`d4a8b09`](https://github.com/AxaGuilDEv/react-oidc/commit/d4a8b099fb5f1cf47a57f418b93f12f9afd04efb) by Olivier YOUF -- refacto : Package managament & dependency [`d8e8d39`](https://github.com/AxaGuilDEv/react-oidc/commit/d8e8d394cfcad14bc2bec0b58a13d440aa9a6702) by Olivier YOUF -- fix(lint) : fix lint return and deps [`c275ea3`](https://github.com/AxaGuilDEv/react-oidc/commit/c275ea3daaff745b691f083788c0155f6c89bb3c) by Olivier YOUF -- fix : fix isEnabled flag [`fe5779c`](https://github.com/AxaGuilDEv/react-oidc/commit/fe5779c5d47986223cafab81ca09bfb3f5b7a83b) by Olivier YOUF -- PR remarks [`8b6ed4d`](https://github.com/AxaGuilDEv/react-oidc/commit/8b6ed4d3e3a1a0600d9d7011a551c07c500f82cf) by Olivier YOUF -- feat : new hooks function to get oidc props [`e7c4530`](https://github.com/AxaGuilDEv/react-oidc/commit/e7c45303167c37b5322955f1274e6cf90bd698cf) by Olivier YOUF -- chore(release): publish v2.0.0-alpha.0 ***NO_CI*** [`06e5a77`](https://github.com/AxaGuilDEv/react-oidc/commit/06e5a7743225a652142defc6dd658fa9c45f8d26) by Build-CI -- refacto(packags) : bump babel [`fcf3169`](https://github.com/AxaGuilDEv/react-oidc/commit/fcf31694c9235da8c9d0b6d5d11f226efb65af43) by Olivier YOUF -- docs(changelog) update to new 1.3.3 [`eea8716`](https://github.com/AxaGuilDEv/react-oidc/commit/eea8716a1b2e8ac098c0f388682f1e1f166f22ca) by Build-CI -- override conf for example [`c6342f5`](https://github.com/AxaGuilDEv/react-oidc/commit/c6342f57d2952676d96b0990099c2741c63ac736) by Olivier YOUF - -#### [v1.3.3](https://github.com/AxaGuilDEv/react-oidc/compare/v1.3.3-alpha.0...v1.3.3) -> 4 April 2019 -- chore(release): publish v1.3.3 ***NO_CI*** [`3e011c2`](https://github.com/AxaGuilDEv/react-oidc/commit/3e011c2ca20c48a0b3e308c8e42ba96fd30b4ef8) by Build-CI -- docs(changelog) update to new 1.3.3-alpha.0 [`e8b9de0`](https://github.com/AxaGuilDEv/react-oidc/commit/e8b9de0754c9c1df227f70912fd5b5acf67a4134) by Build-CI - -#### [v1.3.3-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.3.2-alpha.0...v1.3.3-alpha.0) -> 1 April 2019 -- Fetch Core : Fix for header props [`#182`](https://github.com/AxaGuilDEv/react-oidc/pull/182) by Olivier YOUF -- chore(release): publish v1.3.3-alpha.0 ***NO_CI*** [`1d9d9e3`](https://github.com/AxaGuilDEv/react-oidc/commit/1d9d9e3ecf855f56e961743d04533c1408bbbeb5) by Build-CI -- docs(changelog) update to new 1.3.2-alpha.0 [`100e4be`](https://github.com/AxaGuilDEv/react-oidc/commit/100e4be4321359fdb628bf52c93adae612576564) by Build-CI -- fix headers [`01dd579`](https://github.com/AxaGuilDEv/react-oidc/commit/01dd579c63401c99b097726b73658bfa84db7767) by Olivier YOUF - -#### [v1.3.2-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.3.1-alpha.0...v1.3.2-alpha.0) -> 27 March 2019 -- Few changes for multiple Auth requests and callbacks issue [`#180`](https://github.com/AxaGuilDEv/react-oidc/pull/180) by Olivier YOUF -- fix callback double tap [`35f5609`](https://github.com/AxaGuilDEv/react-oidc/commit/35f56093d6e0aedca493aabde779bef58f49d59d) by Olivier YOUF -- fix : flag for waiting auth [`89b32c0`](https://github.com/AxaGuilDEv/react-oidc/commit/89b32c0a411957d1e514602d72b52ddb25b5de97) by Olivier YOUF -- Fix : package changes [`b8692f2`](https://github.com/AxaGuilDEv/react-oidc/commit/b8692f29f4fae45fb64e74d1d89fa7cf10f2fc05) by Olivier YOUF -- chore(release): publish v1.3.2-alpha.0 ***NO_CI*** [`d814ada`](https://github.com/AxaGuilDEv/react-oidc/commit/d814ada43b9e826d3a5aa9317e4b8f7dcff0671f) by Build-CI -- wip : callback [`01af436`](https://github.com/AxaGuilDEv/react-oidc/commit/01af43636e2fc5cb99a08aa154b415857493956b) by Olivier YOUF -- docs(changelog) update to new 1.3.1-alpha.0 [`17c8683`](https://github.com/AxaGuilDEv/react-oidc/commit/17c86839884e63cf8c05459839f869f0ef55e019) by Build-CI - -#### [v1.3.1-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.3.0...v1.3.1-alpha.0) -> 14 March 2019 -- Fix(context) component should wait user loading [`#170`](https://github.com/AxaGuilDEv/react-oidc/pull/170) by Guillaume Chervet -- fix(tweet) set up good changelog link [`#169`](https://github.com/AxaGuilDEv/react-oidc/pull/169) by Guillaume Chervet -- docs(changelog) update to new 1.3.0 [`02de519`](https://github.com/AxaGuilDEv/react-oidc/commit/02de5196b3e7907acfeb631ee27fdea7ed15968a) by Build-CI -- chore(release): publish v1.3.1-alpha.0 ***NO_CI*** [`32d880f`](https://github.com/AxaGuilDEv/react-oidc/commit/32d880fb06a6b916d87e90d8f4c6b1d338969d06) by Build-CI - -#### [v1.3.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.2.1...v1.3.0) -> 12 March 2019 -- fix(context) no state found in storage [`#168`](https://github.com/AxaGuilDEv/react-oidc/pull/168) by Guillaume Chervet -- docs(changelog) update to new 1.2.1 [`4eed1e9`](https://github.com/AxaGuilDEv/react-oidc/commit/4eed1e91ad3ed5dce05827444334a598f747844c) by Guillaume Chervet -- chore(release): publish v1.3.0 ***NO_CI*** [`517804b`](https://github.com/AxaGuilDEv/react-oidc/commit/517804b569c31e2e6a43f32f0aac2ff960291988) by Build-CI - -#### [v1.2.1](https://github.com/AxaGuilDEv/react-oidc/compare/v1.2.0...v1.2.1) -> 8 March 2019 -- feature(context/routes) allow to configure callbacks [`#164`](https://github.com/AxaGuilDEv/react-oidc/pull/164) by Guillaume Chervet -- feature(vanilla) vanilla lib usefull for demo or debug or migration of old js application [`#160`](https://github.com/AxaGuilDEv/react-oidc/pull/160) by Guillaume Chervet -- chore(changelog) set up auto changelog and auto tweet [`#153`](https://github.com/AxaGuilDEv/react-oidc/pull/153) by Guillaume Chervet -- chore(release): publish v1.2.1 ***NO_CI*** [`fbb0339`](https://github.com/AxaGuilDEv/react-oidc/commit/fbb0339dad91dda54d2828c7d5a4ffa5cd071a6e) by Build-CI - -#### [v1.2.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.1.6...v1.2.0) -> 24 February 2019 -- English - change all instances of "authentified" to be "authenticated" [`#151`](https://github.com/AxaGuilDEv/react-oidc/pull/151) by Paul Hammond -- chore(release): publish v1.2.0 ***NO_CI*** [`5f491b7`](https://github.com/AxaGuilDEv/react-oidc/commit/5f491b75962664904720b3404ce80a27ed9967a6) by Build-CI - -#### [v1.1.6](https://github.com/AxaGuilDEv/react-oidc/compare/v1.1.5...v1.1.6) -> 24 February 2019 -- Customise authenticating component [context] [`#150`](https://github.com/AxaGuilDEv/react-oidc/pull/150) by Paul Hammond -- lock down version of jest [`#149`](https://github.com/AxaGuilDEv/react-oidc/pull/149) by Paul Hammond -- chore(deps-dev): bump enzyme from 3.7.0 to 3.8.0 [`#112`](https://github.com/AxaGuilDEv/react-oidc/pull/112) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-jsx-a11y from 6.1.2 to 6.2.0 [`#113`](https://github.com/AxaGuilDEv/react-oidc/pull/113) by dependabot[bot] -- chore(deps-dev): bump codacy-coverage from 3.3.0 to 3.4.0 [`#116`](https://github.com/AxaGuilDEv/react-oidc/pull/116) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-import from 2.14.0 to 2.16.0 [`#117`](https://github.com/AxaGuilDEv/react-oidc/pull/117) by dependabot[bot] -- chore(deps-dev): bump prettier from 1.16.1 to 1.16.4 [`#122`](https://github.com/AxaGuilDEv/react-oidc/pull/122) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-jest from 22.1.2 to 22.2.2 [`#126`](https://github.com/AxaGuilDEv/react-oidc/pull/126) by dependabot[bot] -- feat : adding enable prop in Provider [`#125`](https://github.com/AxaGuilDEv/react-oidc/pull/125) by Olivier YOUF -- chore(release): publish v1.1.6 ***NO_CI*** [`6f573cd`](https://github.com/AxaGuilDEv/react-oidc/commit/6f573cd08e1e39143c661553645fdc62adebd3d8) by Build-CI - -#### [v1.1.5](https://github.com/AxaGuilDEv/react-oidc/compare/v1.1.5-alpha.0...v1.1.5) -> 1 February 2019 -- chore(deps-dev): bump eslint-config-prettier from 3.3.0 to 4.0.0 [`#111`](https://github.com/AxaGuilDEv/react-oidc/pull/111) by dependabot[bot] -- chore(deps-dev): bump prettier from 1.16.0 to 1.16.1 [`#110`](https://github.com/AxaGuilDEv/react-oidc/pull/110) by dependabot[bot] -- chore(deps-dev): bump jest from 23.6.0 to 24.0.0 [`#118`](https://github.com/AxaGuilDEv/react-oidc/pull/118) by dependabot[bot] -- Fix: Add react-router to dependencies [`#120`](https://github.com/AxaGuilDEv/react-oidc/pull/120) by Hamza Hamidi -- chore: remove react-redux dependency [`#119`](https://github.com/AxaGuilDEv/react-oidc/pull/119) by rpetigny -- chore(deps-dev): bump expect from 23.6.0 to 24.0.0 [`#106`](https://github.com/AxaGuilDEv/react-oidc/pull/106) by dependabot[bot] -- chore(deps-dev): bump lerna from 3.5.0 to 3.10.7 [`#107`](https://github.com/AxaGuilDEv/react-oidc/pull/107) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-jest from 22.1.2 to 22.1.3 [`#108`](https://github.com/AxaGuilDEv/react-oidc/pull/108) by dependabot[bot] -- chore(deps-dev): bump enzyme-adapter-react-16 from 1.7.1 to 1.8.0 [`#109`](https://github.com/AxaGuilDEv/react-oidc/pull/109) by dependabot[bot] -- chore(deps): bump react-dom from 16.6.3 to 16.7.0 [`#95`](https://github.com/AxaGuilDEv/react-oidc/pull/95) by dependabot[bot] -- chore(deps): bump oidc-client from 1.5.4 to 1.6.1 [`#96`](https://github.com/AxaGuilDEv/react-oidc/pull/96) by dependabot[bot] -- chore(deps): bump react from 16.6.3 to 16.7.0 [`#97`](https://github.com/AxaGuilDEv/react-oidc/pull/97) by dependabot[bot] -- chore(deps-dev): bump tslint from 5.11.0 to 5.12.1 [`#99`](https://github.com/AxaGuilDEv/react-oidc/pull/99) by dependabot[bot] -- chore(deps-dev): bump eslint from 5.11.1 to 5.12.1 [`#100`](https://github.com/AxaGuilDEv/react-oidc/pull/100) by dependabot[bot] -- chore(deps-dev): bump prettier from 1.15.3 to 1.16.0 [`#101`](https://github.com/AxaGuilDEv/react-oidc/pull/101) by dependabot[bot] -- chore(deps-dev): bump babel-plugin-macros from 2.4.4 to 2.4.5 [`#93`](https://github.com/AxaGuilDEv/react-oidc/pull/93) by dependabot[bot] -- chore(deps-dev): bump typescript from 3.2.2 to 3.2.4 [`#102`](https://github.com/AxaGuilDEv/react-oidc/pull/102) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-react from 7.12.3 to 7.12.4 [`#103`](https://github.com/AxaGuilDEv/react-oidc/pull/103) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-prettier from 3.0.0 to 3.0.1 [`#88`](https://github.com/AxaGuilDEv/react-oidc/pull/88) by dependabot[bot] -- chore(deps-dev): bump react-scripts from 2.1.1 to 2.1.3 [`#90`](https://github.com/AxaGuilDEv/react-oidc/pull/90) by dependabot[bot] -- chore(deps-dev): bump babel-plugin-macros from 2.4.2 to 2.4.4 [`#85`](https://github.com/AxaGuilDEv/react-oidc/pull/85) by mergify[bot] -- chore(deps-dev): bump chalk from 2.4.1 to 2.4.2 [`#86`](https://github.com/AxaGuilDEv/react-oidc/pull/86) by mergify[bot] -- chore(deps-dev): bump eslint-plugin-react from 7.11.1 to 7.12.3 [`#87`](https://github.com/AxaGuilDEv/react-oidc/pull/87) by mergify[bot] -- Fix example link [`#89`](https://github.com/AxaGuilDEv/react-oidc/pull/89) by Seth -- fix(redux) oidc default props [`#84`](https://github.com/AxaGuilDEv/react-oidc/pull/84) by julienbirgand -- chore(release): publish v1.1.5 ***NO_CI*** [`e21bbbc`](https://github.com/AxaGuilDEv/react-oidc/commit/e21bbbcadfec1fe70cc64d0b33c84910a9e8add1) by Build-CI - -#### [v1.1.5-alpha.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.1.0...v1.1.5-alpha.0) -> 4 January 2019 -- chore(pipeline-azure) branch variable was a bad one [`#83`](https://github.com/AxaGuilDEv/react-oidc/pull/83) by mergify[bot] -- fix : Context Fetch>oidcUser transmission [`#80`](https://github.com/AxaGuilDEv/react-oidc/pull/80) by Olivier YOUF -- fix token expired event [`#81`](https://github.com/AxaGuilDEv/react-oidc/pull/81) by mergify[bot] -- chore(deps-dev): bump eslint from 5.9.0 to 5.11.1 [`#82`](https://github.com/AxaGuilDEv/react-oidc/pull/82) by mergify[bot] -- chore(deps-dev): bump @angular/compiler from 7.1.0 to 7.1.4 [`#75`](https://github.com/AxaGuilDEv/react-oidc/pull/75) by mergify[bot] -- chore(deps-dev): bump typescript from 3.2.1 to 3.2.2 [`#63`](https://github.com/AxaGuilDEv/react-oidc/pull/63) by dependabot[bot] -- chore(deps-dev): bump @angular/core from 7.1.0 to 7.1.3 [`#65`](https://github.com/AxaGuilDEv/react-oidc/pull/65) by mergify[bot] -- chore(deps-dev): bump tslint-config-prettier from 1.16.0 to 1.17.0 [`#64`](https://github.com/AxaGuilDEv/react-oidc/pull/64) by mergify[bot] -- chore(deps-dev): bump regenerator-runtime from 0.12.1 to 0.13.1 [`#67`](https://github.com/AxaGuilDEv/react-oidc/pull/67) by mergify[bot] -- chore(deps-dev): bump babel-eslint from 8.2.6 to 10.0.1 [`#69`](https://github.com/AxaGuilDEv/react-oidc/pull/69) by mergify[bot] -- chore(deps-dev): bump inquirer from 6.2.0 to 6.2.1 [`#68`](https://github.com/AxaGuilDEv/react-oidc/pull/68) by mergify[bot] -- chore(deps-dev): bump react-test-renderer from 16.6.3 to 16.7.0 [`#70`](https://github.com/AxaGuilDEv/react-oidc/pull/70) by mergify[bot] -- chore(deps-dev): bump enzyme-adapter-react-16 from 1.7.0 to 1.7.1 [`#71`](https://github.com/AxaGuilDEv/react-oidc/pull/71) by mergify[bot] -- chore(deps-dev): bump eslint-plugin-jest from 22.0.1 to 22.1.2 [`#76`](https://github.com/AxaGuilDEv/react-oidc/pull/76) by mergify[bot] -- docs(readme) add keyword [`#79`](https://github.com/AxaGuilDEv/react-oidc/pull/79) by Guillaume Chervet -- chore(ci) remove travis and codeclimate [`#73`](https://github.com/AxaGuilDEv/react-oidc/pull/73) by Guillaume Chervet -- chore(deps-dev): bump lint-staged from 7.3.0 to 8.1.0 [`#74`](https://github.com/AxaGuilDEv/react-oidc/pull/74) by dependabot[bot] -- chore(ci) add azureDevops build + sonar [`#72`](https://github.com/AxaGuilDEv/react-oidc/pull/72) by Guillaume Chervet -- chore(deps-dev): bump react-scripts from 1.1.5 to 2.1.1 [`#57`](https://github.com/AxaGuilDEv/react-oidc/pull/57) by dependabot[bot] -- chore(deps-dev): bump typescript from 3.1.6 to 3.2.1 [`#59`](https://github.com/AxaGuilDEv/react-oidc/pull/59) by dependabot[bot] -- chore(deps-dev): bump react-test-renderer from 16.6.1 to 16.6.3 [`#60`](https://github.com/AxaGuilDEv/react-oidc/pull/60) by dependabot[bot] -- chore(deps-dev): bump prettier from 1.15.1 to 1.15.3 [`#61`](https://github.com/AxaGuilDEv/react-oidc/pull/61) by dependabot[bot] -- doc(readme) small fix for demo to internship [`#62`](https://github.com/AxaGuilDEv/react-oidc/pull/62) by Guillaume Chervet -- chore(azurepipeline) configure lerna to publish [`#58`](https://github.com/AxaGuilDEv/react-oidc/pull/58) by Guillaume Chervet -- chore(deps-dev): bump lerna from 3.4.3 to 3.5.0 [`#55`](https://github.com/AxaGuilDEv/react-oidc/pull/55) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-json from 1.2.1 to 1.3.2 [`#54`](https://github.com/AxaGuilDEv/react-oidc/pull/54) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-prettier from 2.7.0 to 3.0.0 [`#56`](https://github.com/AxaGuilDEv/react-oidc/pull/56) by dependabot[bot] -- chore(deps-dev): bump @angular/compiler from 7.0.4 to 7.1.0 [`#52`](https://github.com/AxaGuilDEv/react-oidc/pull/52) by dependabot[bot] -- chore(deps-dev): bump codacy-coverage from 3.2.0 to 3.3.0 [`#53`](https://github.com/AxaGuilDEv/react-oidc/pull/53) by dependabot[bot] -- chore(deps-dev): bump @angular/core from 7.0.3 to 7.1.0 [`#46`](https://github.com/AxaGuilDEv/react-oidc/pull/46) by dependabot[bot] -- chore(deps-dev): bump eslint from 5.8.0 to 5.9.0 [`#48`](https://github.com/AxaGuilDEv/react-oidc/pull/48) by dependabot[bot] -- chore(deps-dev): bump shelljs from 0.8.2 to 0.8.3 [`#49`](https://github.com/AxaGuilDEv/react-oidc/pull/49) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-jest from 22.0.0 to 22.0.1 [`#50`](https://github.com/AxaGuilDEv/react-oidc/pull/50) by dependabot[bot] -- chore(deps-dev): bump eslint-config-prettier from 3.1.0 to 3.3.0 [`#47`](https://github.com/AxaGuilDEv/react-oidc/pull/47) by dependabot[bot] -- chore(deps): bump react-dom from 16.6.1 to 16.6.3 [`#44`](https://github.com/AxaGuilDEv/react-oidc/pull/44) by dependabot[bot] -- chore(deps): bump rxjs from 6.3.2 to 6.3.3 [`#45`](https://github.com/AxaGuilDEv/react-oidc/pull/45) by dependabot[bot] -- chore(deps): bump react from 16.6.1 to 16.6.3 [`#43`](https://github.com/AxaGuilDEv/react-oidc/pull/43) by dependabot[bot] -- chore(deps): bump react-redux from 5.0.7 to 5.1.1 [`#38`](https://github.com/AxaGuilDEv/react-oidc/pull/38) by dependabot[bot] -- chore(deps-dev): bump @angular/compiler from 7.0.3 to 7.0.4 [`#42`](https://github.com/AxaGuilDEv/react-oidc/pull/42) by dependabot[bot] -- chore(deps-dev): bump tslint-config-prettier from 1.15.0 to 1.16.0 [`#40`](https://github.com/AxaGuilDEv/react-oidc/pull/40) by dependabot[bot] -- doc(redux): update code example and add more informations [`#41`](https://github.com/AxaGuilDEv/react-oidc/pull/41) by Benoit Fontaine -- doc(context) add more explanation [`#37`](https://github.com/AxaGuilDEv/react-oidc/pull/37) by Guillaume Chervet -- chore(deps): [security] bump merge from 1.2.0 to 1.2.1 [`#39`](https://github.com/AxaGuilDEv/react-oidc/pull/39) by dependabot[bot] -- Set up CI with Azure Pipelines [`#31`](https://github.com/AxaGuilDEv/react-oidc/pull/31) by Cyril Lakech -- chore(deps-dev): bump tslint-plugin-prettier from 1.3.0 to 2.0.1 [`#34`](https://github.com/AxaGuilDEv/react-oidc/pull/34) by dependabot[bot] -- chore(deps-dev): bump eslint-config-prettier from 2.10.0 to 3.1.0 [`#36`](https://github.com/AxaGuilDEv/react-oidc/pull/36) by dependabot[bot] -- chore(deps-dev): bump eslint-plugin-jest from 21.27.2 to 22.0.0 [`#35`](https://github.com/AxaGuilDEv/react-oidc/pull/35) by dependabot[bot] -- fix oidcUser transmission [`0ae83e1`](https://github.com/AxaGuilDEv/react-oidc/commit/0ae83e1e9e4d71683c190a32fb87a91b307539cc) by Olivier YOUF -- chore(release): publish v1.1.5-alpha.0 ***NO_CI*** [`41536de`](https://github.com/AxaGuilDEv/react-oidc/commit/41536de22955b5f7f6b5b0dc758554a7f1deff20) by Build-CI -- WIP [`b866401`](https://github.com/AxaGuilDEv/react-oidc/commit/b86640100253030ccc1386d198f9910f86c052a4) by Guillaume Chervet -- WIP [`cad214b`](https://github.com/AxaGuilDEv/react-oidc/commit/cad214b48575a759f9245bcf2651d78dba4435e6) by Guillaume Chervet -- WIP [`d36dd3d`](https://github.com/AxaGuilDEv/react-oidc/commit/d36dd3d1463b0a4f6c9b6f8f6be74707552b139f) by Guillaume Chervet -- it works! [`b58a355`](https://github.com/AxaGuilDEv/react-oidc/commit/b58a355821a53cb0229acc1a1a69d724655e9f77) by Guillaume Chervet -- WIP [`fd2c87a`](https://github.com/AxaGuilDEv/react-oidc/commit/fd2c87a4b8b67914526bdef213719c08d49cbd54) by Guillaume Chervet -- chore(pipeline-azure) bug during publish [`0f0935a`](https://github.com/AxaGuilDEv/react-oidc/commit/0f0935a84f5065c1b3beabbb0b4acdc04346bf1d) by Guillaume Chervet -- WIP [`7c238f5`](https://github.com/AxaGuilDEv/react-oidc/commit/7c238f59ed3221910ced2631bed5092a9a56d71d) by Guillaume Chervet -- WIP [`4d04233`](https://github.com/AxaGuilDEv/react-oidc/commit/4d04233963fe77e803626ed0752dfe66474f8e71) by Guillaume Chervet -- WIP [`1a2fdbd`](https://github.com/AxaGuilDEv/react-oidc/commit/1a2fdbd0b2fc8f9d611248c02987fc524c77ea94) by Guillaume Chervet -- it works! [`adb3ecf`](https://github.com/AxaGuilDEv/react-oidc/commit/adb3ecf6f64e626209dd18bc6b0949c321af3347) by Guillaume Chervet -- WIP [`0836ecd`](https://github.com/AxaGuilDEv/react-oidc/commit/0836ecdfe1a0ff9846621a78e44b3cacb9184436) by Guillaume Chervet - -#### [v1.1.0](https://github.com/AxaGuilDEv/react-oidc/compare/v1.0.2...v1.1.0) -> 9 November 2018 -- fix(publish) missing attribute to publish to npm [`36a05fa`](https://github.com/AxaGuilDEv/react-oidc/commit/36a05faf92e6f09a2fec01756ad9b15cb44253ac) by Guillaume Chervet -- chore(release): publish v1.1.0 [ci skip] [`cc39e30`](https://github.com/AxaGuilDEv/react-oidc/commit/cc39e30840195b6d00591f72bef879e671a6a0f6) by Travis CI User - -#### [v1.0.2](https://github.com/AxaGuilDEv/react-oidc/compare/v1.0.1...v1.0.2) -> 31 October 2018 -- feat: add fetch observable hoc [`7ef055c`](https://github.com/AxaGuilDEv/react-oidc/commit/7ef055cb555d2937c2fcac175ab6294ef0fe9662) by Thierno Barry -- chore(release): publish v1.0.2 [ci skip] [`689b36c`](https://github.com/AxaGuilDEv/react-oidc/commit/689b36c1820e07ab1bc4b8542c4914f3081fed54) by Travis CI User -- chore: remove codacy that return 404 errors [`52724bb`](https://github.com/AxaGuilDEv/react-oidc/commit/52724bb7171a1e117f893580a6df54bcacf6d584) by Cyril Lakech - -#### [v1.0.1](https://github.com/AxaGuilDEv/react-oidc/compare/v1.0.0...v1.0.1) -> 4 October 2018 -- replacing includes by indexof [`#25`](https://github.com/AxaGuilDEv/react-oidc/pull/25) by mergify[bot] -- chore(release): publish v1.0.1 [ci skip] [`7cfb06c`](https://github.com/AxaGuilDEv/react-oidc/commit/7cfb06ce706187d79fccf9fbcebf28e5f1c28e9b) by Travis CI User - -### [v1.0.0](https://github.com/AxaGuilDEv/react-oidc/compare/v0.0.1...v1.0.0) -> 3 October 2018 -- doc: add npm version badge [`#23`](https://github.com/AxaGuilDEv/react-oidc/pull/23) by mergify[bot] -- chore(release): publish v1.0.0 [ci skip] [`728051b`](https://github.com/AxaGuilDEv/react-oidc/commit/728051b8b5db2eba1c7d2f922d9c466c7eba62ea) by Travis CI User - -#### [v0.0.1](https://github.com/AxaGuilDEv/react-oidc/compare/v0.0.1-alpha.11...v0.0.1) -> 3 October 2018 -- Mergify initial configuration [`#22`](https://github.com/AxaGuilDEv/react-oidc/pull/22) by mergify[bot] -- chore(release): publish v0.0.1 [ci skip] [`94cbf05`](https://github.com/AxaGuilDEv/react-oidc/commit/94cbf05bf38ad190f0025d3ddee3bb584d42cc01) by Travis CI User - -#### [v0.0.1-alpha.11](https://github.com/AxaGuilDEv/react-oidc/compare/v0.0.1-alpha.10...v0.0.1-alpha.11) -> 3 October 2018 -- chore: exclude tests from codeclimate analysis [`#14`](https://github.com/AxaGuilDEv/react-oidc/pull/14) by Cyril Lakech -- chore(build) add user variable for releasing a specific version to npm [`#20`](https://github.com/AxaGuilDEv/react-oidc/pull/20) by Guillaume Chervet -- fix : recompose branch test in the consumer and add doc about dev [`#21`](https://github.com/AxaGuilDEv/react-oidc/pull/21) by youf-olivier -- chore(release): publish v0.0.1-alpha.11 [ci skip] [`82d326a`](https://github.com/AxaGuilDEv/react-oidc/commit/82d326a0abc8c89516c010e731f911cc27da29c6) by Travis CI User - -#### [v0.0.1-alpha.10](https://github.com/AxaGuilDEv/react-oidc/compare/v0.0.1-alpha.9...v0.0.1-alpha.10) -> 1 October 2018 -- chore: setup test coverage with codacy [`#17`](https://github.com/AxaGuilDEv/react-oidc/pull/17) by Cyril Lakech -- chore(release): publish v0.0.1-alpha.10 [ci skip] [`612031e`](https://github.com/AxaGuilDEv/react-oidc/commit/612031ea55e145672dd5c2d8fd078479cff5f706) by Travis CI User - -#### v0.0.1-alpha.9 -> 1 October 2018 -- wip chore: setup publishing to npm [`#19`](https://github.com/AxaGuilDEv/react-oidc/pull/19) by Cyril Lakech -- chore: do not share codeclimate token [`#16`](https://github.com/AxaGuilDEv/react-oidc/pull/16) by Guillaume Chervet -- Add a Codacy badge to readme.md [`#15`](https://github.com/AxaGuilDEv/react-oidc/pull/15) by Guillaume Chervet -- chore: setup coverage with codeclimate [`#13`](https://github.com/AxaGuilDEv/react-oidc/pull/13) by youf-olivier -- chore: add coverage badge [`#12`](https://github.com/AxaGuilDEv/react-oidc/pull/12) by Guillaume Chervet -- chore(packages) add require attributes to publish inside npm in publi… [`#11`](https://github.com/AxaGuilDEv/react-oidc/pull/11) by Cyril Lakech -- refactor: simplify oidc service authenticateUser [`#10`](https://github.com/AxaGuilDEv/react-oidc/pull/10) by Guillaume Chervet -- chore: add codeclimate badge [`#8`](https://github.com/AxaGuilDEv/react-oidc/pull/8) by Guillaume Chervet -- init [`8d1518e`](https://github.com/AxaGuilDEv/react-oidc/commit/8d1518edc28882b83f207e8dc19d3c805f5ce96d) by Olivier Youf -- chore(release): publish v0.0.1-alpha.9 [ci skip] [`df4adb5`](https://github.com/AxaGuilDEv/react-oidc/commit/df4adb51f25be9f6b49f46ad9c7620e6b91fc259) by Travis CI User -- chore(packages) add require attributes to publish inside npm in public with a scope [`bb6f22f`](https://github.com/AxaGuilDEv/react-oidc/commit/bb6f22fe4a2c93156ad5848e1e9e221f5d7f2e57) by Guillaume Chervet -- chore: add license [`3d2ba13`](https://github.com/AxaGuilDEv/react-oidc/commit/3d2ba1328685a2aec3b5d158db9047870ed236c4) by Cyril Lakech -- Add Codacy badge [`400b938`](https://github.com/AxaGuilDEv/react-oidc/commit/400b93878c0b55b831de63b5bd01de82ac6d389c) by The Codacy Badger +# Changelog + +## v7.10.11 + +- [4460d89](https://github.com/AxaFrance/oidc-client/commit/4460d893d74258dd2052674ee29694037c372247) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* +- [69eadc6](https://github.com/AxaFrance/oidc-client/commit/69eadc60c92bc799d0a2d65bd6b841f98bd7d78c) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.10 + +- [83f0c10](https://github.com/AxaFrance/oidc-client/commit/83f0c1092c48987eb8ad149100f3b44b4e7bc50b) - Update npm-publish.yml (release), 2023-11-29 by *Guillaume Chervet* + + +## v7.10.9 + +- [da29bee](https://github.com/AxaFrance/oidc-client/commit/da29beef9bf3a6993ca862b258254cd894977a74) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* +- [e1230bb](https://github.com/AxaFrance/oidc-client/commit/e1230bb4f1cfb57fea4998da768bd3b7676e78da) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.8 + +- [9bbfaa8](https://github.com/AxaFrance/oidc-client/commit/9bbfaa8dc34271692a278178539862e19fd76b6c) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* +- [09ece5b](https://github.com/AxaFrance/oidc-client/commit/09ece5bea1128ad24847036521aac2f27f7df261) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.7 + +- [82ed281](https://github.com/AxaFrance/oidc-client/commit/82ed28183d4efea9c1835f4eed9a25c254ecd8a5) - Update generate-changelog.sh (release) (#1203), 2023-11-29 by *Guillaume Chervet* +- [f41eafd](https://github.com/AxaFrance/oidc-client/commit/f41eafd59c1cd6b04f889db18d1e9db72e96d7af) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.6 + +- [a51e099](https://github.com/AxaFrance/oidc-client/commit/a51e099cb0d1f9fc2734d0fc73eb3bfefc77caf1) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* +- [34f9291](https://github.com/AxaFrance/oidc-client/commit/34f9291104c3911f6a9e33dc23d5373bdc867ba2) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.5 + +- [c1f7494](https://github.com/AxaFrance/oidc-client/commit/c1f7494aaa58f50d22fe51d763b32f3914a515ed) - fix (release), 2023-11-29 by *Guillaume Chervet* +- [7e3af1f](https://github.com/AxaFrance/oidc-client/commit/7e3af1f9b0ffcf9714333b445577c04595a9135f) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.4 + +- [edb89b3](https://github.com/AxaFrance/oidc-client/commit/edb89b390eefce93dbaa02c813d388bbaf1088e2) - fix (release), 2023-11-29 by *Guillaume Chervet* + + +## v7.10.3 + +- [15f1414](https://github.com/AxaFrance/oidc-client/commit/15f1414d8699b9f35cfa977a204ae7bfb73cbbea) - fix(ci): update (release), 2023-11-29 by *Guillaume Chervet* +- [742c643](https://github.com/AxaFrance/oidc-client/commit/742c6430518c9cc64e0735e2203d659ab2098dc8) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + +## v7.10.2 + +- [99ca1c3](https://github.com/AxaFrance/oidc-client/commit/99ca1c3b022109a3c0712d0cafb436ee6eab20d0) - fix(ci): test (release), 2023-11-29 by *Guillaume Chervet* + + +## v7.10.1 + +- [ff1f841](https://github.com/AxaFrance/oidc-client/commit/ff1f841044101b99d8d896828015d732a383e437) - fix(ci): ammend (release), 2023-11-29 by *Guillaume Chervet* +- [a194c5b](https://github.com/AxaFrance/oidc-client/commit/a194c5bf7addede93cc56319bafaf07fd73243ad) - fix(ci): autochangelog, 2023-11-29 by *Guillaume Chervet* + + +## v7.10.0 + +- [3d1af45](https://github.com/AxaFrance/oidc-client/commit/3d1af45133e41c981c4a35c4b19298a3b0f1d555) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* +- [56bde67](https://github.com/AxaFrance/oidc-client/commit/56bde67566f8203e9d62ae6e8b722c86a7b63cae) - doc(readme): Update README.md, 2023-11-27 by *Guillaume Chervet* +- [790da5a](https://github.com/AxaFrance/oidc-client/commit/790da5a60cc7fb07ca82feb994c8d12ff3e01b69) - [skip ci] Update version package.json, 2023-11-24 by *GitHub* + + +## v7.9.3 + +- [a80844c](https://github.com/AxaFrance/oidc-client/commit/a80844c2668066b083009043f1dd94fa196e1f18) - fix(service-worker): make sure URL is normalized when comparing with token endpoint and revocation endpoint (#1198) (release), 2023-11-24 by *meesvandongen* +- [bf19dd0](https://github.com/AxaFrance/oidc-client/commit/bf19dd0cc975ea4524b0f68f9315625b3789801b) - fix(oidc-client): tokens refresh conflict multiple tabs (alpha), 2023-11-17 by *Guillaume Chervet* +- [216adc7](https://github.com/AxaFrance/oidc-client/commit/216adc79007264915747edf3ff07171cac456759) - [skip ci] Update version package.json, 2023-11-17 by *GitHub* + + +## v7.9.2 + +- [5085e05](https://github.com/AxaFrance/oidc-client/commit/5085e05beb4c7a88fad1df61e11213b68672e7d9) - fix(sevice-worker): add URL normalization for getCurrentDatabaseDomain endpoints comparison (release) (#1196), 2023-11-17 by *meesvandongen* +- [77361cf](https://github.com/AxaFrance/oidc-client/commit/77361cfb1c8f2f0eed9c38ba15e32f3bbe0f4095) - [skip ci] Update version package.json, 2023-11-13 by *GitHub* + + +## v7.9.1 + +- [7e0cb29](https://github.com/AxaFrance/oidc-client/commit/7e0cb297587e314451321c3ddd1b0e5f7e7e6c0e) - fix(logout): okta tokens null (release) (#1188), 2023-11-13 by *Guillaume Chervet* +- [2413503](https://github.com/AxaFrance/oidc-client/commit/24135038510ada4b9eecffae1494693ef9347a07) - [skip ci] Update version package.json, 2023-11-12 by *GitHub* + + +## v7.9.0 + +- [b08cd59](https://github.com/AxaFrance/oidc-client/commit/b08cd594d2427170cde835dcff97d5be396952e6) - doc(FAQ): Update FAQ.md (release), 2023-11-12 by *Guillaume Chervet* +- [c54c7b9](https://github.com/AxaFrance/oidc-client/commit/c54c7b9f3447c0474b460649eb315c13f5f8b1da) - fix(service-worker): Reclaming all clients from SW after hard reload (#1149), 2023-11-12 by *VladimirPlatonenko* +- [dbcfec4](https://github.com/AxaFrance/oidc-client/commit/dbcfec46798b2137154dd33f31bf842f6b7730b8) - feat(oidc-client): enhance service worker flexibility (alpha) (#1180), 2023-11-12 by *Guillaume Chervet* +- [9549b9a](https://github.com/AxaFrance/oidc-client/commit/9549b9ae613d3cf357cb4b760fc8cc9e0af80c44) - doc(oidc-client): typo in method name, 2023-11-07 by *Guillaume Chervet* +- [1a12a19](https://github.com/AxaFrance/oidc-client/commit/1a12a19a54924f0941a960b47fca8b4c169256a0) - [skip ci] Update version package.json, 2023-11-06 by *GitHub* + + +## v7.8.0 + +- [1684abb](https://github.com/AxaFrance/oidc-client/commit/1684abba7d982ecbd2f30610eb140e2ce4549814) - feat(oidc-client): move fetch to oidc-client (#1175) (release), 2023-11-06 by *Guillaume Chervet* +- [b4cee5a](https://github.com/AxaFrance/oidc-client/commit/b4cee5aec8365ba2b000742001c717f1d543011b) - [skip ci] Update version package.json, 2023-10-29 by *GitHub* + + +## v7.7.3 + +- [ac7f37b](https://github.com/AxaFrance/oidc-client/commit/ac7f37be28883edbe539eff02d0a6a054b2aab14) - build(npm): bump msw from 1.2.2 to 2.0.0 (#1165), 2023-10-29 by *dependabot[bot]* +- [1b4bc07](https://github.com/AxaFrance/oidc-client/commit/1b4bc0782c39a8f797de224f74073d4860672cb6) - [skip ci] Update version package.json, 2023-10-25 by *GitHub* + + +## v7.7.2 + +- [41ecf9e](https://github.com/AxaFrance/oidc-client/commit/41ecf9e1752f291f0d8f96a979ab393f5aaeb885) - build(npm): bump @testing-library/dom from 9.3.1 to 9.3.3 (#1161), 2023-10-25 by *dependabot[bot]* + + +## v7.7.1 + +- [07d266b](https://github.com/AxaFrance/oidc-client/commit/07d266b32b275038176a407036a338624d2bed47) - build(npm): bump next from 13.4.12 to 13.5.6 (#1158), 2023-10-25 by *dependabot[bot]* +- [03a6570](https://github.com/AxaFrance/oidc-client/commit/03a6570bb09a98686e67f17b57ee7f7b1849db2c) - [skip ci] Update version package.json, 2023-10-19 by *GitHub* + + +## v7.7.0 + +- [ec5ba27](https://github.com/AxaFrance/oidc-client/commit/ec5ba27f463c513e4d476621f684d0dcccd34470) - feat(oidc): make location injectable (release) (#1155), 2023-10-19 by *Guillaume Chervet* +- [8f24b11](https://github.com/AxaFrance/oidc-client/commit/8f24b119613fef5d7214826528bdb04c931a1986) - doc(faq): Update FAQ.md (#1151), 2023-10-13 by *Mateusz Popielarz* +- [4f9b3c0](https://github.com/AxaFrance/oidc-client/commit/4f9b3c0b767d4b955223febcc833e6ff47e997ef) - [skip ci] Update version package.json, 2023-09-21 by *GitHub* + + +## v7.6.0 + +- [3e0e554](https://github.com/AxaFrance/oidc-client/commit/3e0e5546ec756b4a9ddad695e4e2368c5721175f) - feat(service-worker): add to trusted type (#1142) (release), 2023-09-21 by *Guillaume Chervet* +- [79b3889](https://github.com/AxaFrance/oidc-client/commit/79b3889a3441b5bf95f980db7c2ae6aed60da8da) - [skip ci] Update version package.json, 2023-09-20 by *GitHub* + + +## v7.5.1 + +- [60d9c4e](https://github.com/AxaFrance/oidc-client/commit/60d9c4e68622f81ecceaf480de21d4646ae909f1) - fix(oidc): clean link with service worker (#1141) (release), 2023-09-20 by *Guillaume Chervet* +- [2e5b856](https://github.com/AxaFrance/oidc-client/commit/2e5b85670e7929a0b216fe695999a8cddcd2d3a8) - [skip ci] Update version package.json, 2023-09-19 by *GitHub* + + +## v7.5.0 + +- [ff7ac6a](https://github.com/AxaFrance/oidc-client/commit/ff7ac6ae7defbd84067b4084222430ef07f15713) - feat(oidc): add dpop (#1139) (release), 2023-09-19 by *Guillaume Chervet* +- [1980813](https://github.com/AxaFrance/oidc-client/commit/1980813234a63e13353b8e5623982e714b42ac12) - feat(demo): hack iframe unregister serviceworker (#1137), 2023-09-14 by *Guillaume Chervet* +- [8165fab](https://github.com/AxaFrance/oidc-client/commit/8165fab52b89ce20946378c5173783ef06f014ef) - [skip ci] Update version package.json, 2023-09-07 by *GitHub* + + +## v7.4.1 + +- [6941766](https://github.com/AxaFrance/oidc-client/commit/6941766614d18ff3c92bbd00bdf0583350b16b7f) - fix(service-worker): setAccessTokenToNavigateRequests always true (#1136) (release), 2023-09-07 by *Guillaume Chervet* +- [823a3c3](https://github.com/AxaFrance/oidc-client/commit/823a3c37351e39b0bb1290228f72c58f11a28960) - fix(oidc+serviceworker): better issueAt, 2023-09-05 by *Guillaume Chervet* + + +## v7.4.0 + +- [d0dfde4](https://github.com/AxaFrance/oidc-client/commit/d0dfde47e27125248e5af7e9d6c12bfbe1e3ec60) - feat(oidc+serviceworker): increase security preventing sw unresgistration during silent signin (#1134) (release), 2023-09-05 by *Guillaume Chervet* +- [9a05b9f](https://github.com/AxaFrance/oidc-client/commit/9a05b9f13a7d429f044bf84d57af64d356999955) - [skip ci] Update version package.json, 2023-08-25 by *GitHub* + + +## v7.3.4 + +- [6d371ff](https://github.com/AxaFrance/oidc-client/commit/6d371ff1ce909ae40ef2f44a145bdcd322ca9d90) - fix(oidc-service-worker): gracefull timeout on firefox (release) (#1132), 2023-08-25 by *Guillaume Chervet* +- [e004e32](https://github.com/AxaFrance/oidc-client/commit/e004e32dbafd06c766429903fe6cdd74d37b9bd2) - [skip ci] Update version package.json, 2023-08-15 by *GitHub* + + +## v7.3.3 + +- [e4e7409](https://github.com/AxaFrance/oidc-client/commit/e4e74091a8a6fadb64429dcccbd43331af62f920) - fix(oidc): parent instead of top for iframe allow app inside iframe (#1130) (release), 2023-08-15 by *Guillaume Chervet* +- [28e21ac](https://github.com/AxaFrance/oidc-client/commit/28e21acd8fbda1a7190917a80239b595fa5f2f36) - [skip ci] Update version package.json, 2023-08-15 by *GitHub* + + +## v7.3.2 + +- [790ec46](https://github.com/AxaFrance/oidc-client/commit/790ec468355967462b9bfce40196e9336efed0d7) - fix(oidc): allow service worker to chrome 70 (release), 2023-08-15 by *Guillaume Chervet* +- [bb7de00](https://github.com/AxaFrance/oidc-client/commit/bb7de0060ea81fa4206a5696a5479100f0c64898) - [skip ci] Update version package.json, 2023-08-08 by *GitHub* + + +## v7.3.1 + +- [c2564f9](https://github.com/AxaFrance/oidc-client/commit/c2564f9ef6de2122962cfb4a8e0f9195aa688d84) - fix(all): copy of service worker files (release), 2023-08-08 by *Guillaume Chervet* +- [0bc3398](https://github.com/AxaFrance/oidc-client/commit/0bc3398f09fd3bf6dff5a6443d5d42f0a26454bf) - [skip ci] Update version package.json, 2023-08-08 by *GitHub* + + +## v7.3.0 + +- [282c0f7](https://github.com/AxaFrance/oidc-client/commit/282c0f72ab7741f24468b2278466eb307d1fa0ce) - feat(oidc+serviceworker): add property setAccessTokenToNavigateRequests + service_worker_convert_all_requests_to_cors moved to TrustedDomains.js (#1123) (release), 2023-08-08 by *Guillaume Chervet* +- [c94163d](https://github.com/AxaFrance/oidc-client/commit/c94163d02f5947761d00bd5e18df6749106d6f3d) - doc(FAQ): add "Does Service Worker is mandatory ?", 2023-08-08 by *Guillaume Chervet* +- [7ffcde4](https://github.com/AxaFrance/oidc-client/commit/7ffcde465f5f4cbba4b39e0da43dee34d4ec37d9) - doc(readme): update images urls, 2023-08-08 by *Guillaume Chervet* +- [32b2861](https://github.com/AxaFrance/oidc-client/commit/32b286181436129e6d15e0e166108d1f0d4d5641) - [skip ci] Update version package.json, 2023-08-07 by *GitHub* + + +## v7.2.2 + +- [e0cad22](https://github.com/AxaFrance/oidc-client/commit/e0cad22179fb1d9e641fbbf14b879ea2d2d78c3a) - fix(faq): update faq (release), 2023-08-07 by *Guillaume Chervet* +- [a5d2e58](https://github.com/AxaFrance/oidc-client/commit/a5d2e5892cf456225618f55602c87c654cdad62c) - fix(oidc+serviceworker): add more log detail on token validation, 2023-08-07 by *Guillaume Chervet* +- [ad3a73b](https://github.com/AxaFrance/oidc-client/commit/ad3a73b9a65c942e2f3aee61516581613844a5ec) - [skip ci] Update version package.json, 2023-08-07 by *GitHub* + + +## v7.2.1 + +- [0e52c56](https://github.com/AxaFrance/oidc-client/commit/0e52c56e1d747aa17ee2bf3005893a8d67a03ab3) - fix(package.json): update new repository link (release), 2023-08-07 by *Guillaume Chervet* +- [3d0aaff](https://github.com/AxaFrance/oidc-client/commit/3d0aaff74fd1b14afe2aa3ec2b8b3c028dd3fe75) - fix(oidc): add more detail on state error, 2023-08-04 by *Guillaume Chervet* +- [faa0da2](https://github.com/AxaFrance/oidc-client/commit/faa0da2235239a0b12e82a070b3f6e2c30572bfa) - fix(readme): some path was broken, 2023-08-04 by *Guillaume Chervet* +- [3713dd6](https://github.com/AxaFrance/oidc-client/commit/3713dd65a6be6ff4a42b1507cd94e904445efb00) - [skip ci] Update version package.json, 2023-08-04 by *GitHub* + + +## v7.2.0 + +- [60ea58b](https://github.com/AxaFrance/oidc-client/commit/60ea58b266c4173e3a92b8637d9abd09cca0ea1a) - feat(oidc-service-worker): copy become manual (#1120) (release), 2023-08-04 by *Guillaume Chervet* +- [c74edeb](https://github.com/AxaFrance/oidc-client/commit/c74edeb0380c726fb861f499ba3811fa7317d343) - [skip ci] Update version package.json, 2023-08-04 by *GitHub* + + +## v7.1.0 + +- [ae8a601](https://github.com/AxaFrance/oidc-client/commit/ae8a60130b4dacfe7a73f6e2262ca1238a07a509) - feat(oidc): update service worker from version (#1121) (release), 2023-08-04 by *Guillaume Chervet* +- [9f986c6](https://github.com/AxaFrance/oidc-client/commit/9f986c6b576c50b9d87d94e2fc5af0c7521c7bdf) - [skip ci] Update version package.json, 2023-08-03 by *GitHub* + + +## v7.0.1 + +- [cd97895](https://github.com/AxaFrance/oidc-client/commit/cd9789520090b27ea905401be6d03fd87f817f76) - fix(oidc): expire_in in string instead of number (#1118) (release), 2023-08-03 by *Guillaume Chervet* +- [e74c0df](https://github.com/AxaFrance/oidc-client/commit/e74c0df57140ca2bd3c7fd631eef39661b1b2b8c) - [skip ci] Update version package.json, 2023-08-01 by *GitHub* + + +## v7.0.0 + +- [9567873](https://github.com/AxaFrance/oidc-client/commit/95678734c0495f80628f99ad3aa284a3014f8bbc) - feat(oidc): rename repository oidc-client (#1115) (release), 2023-08-01 by *Guillaume Chervet* +- [ff61e5d](https://github.com/AxaFrance/oidc-client/commit/ff61e5d5e3387888ce18ec8e99fde0044009f481) - fix(demo): google new link and add navigate button, 2023-07-31 by *Guillaume Chervet* +- [6e9e8bb](https://github.com/AxaFrance/oidc-client/commit/6e9e8bb94db0c52f684ea4c42a81c69f59dd3f2c) - [skip ci] Update version package.json, 2023-07-28 by *GitHub* +- [0d8bc06](https://github.com/AxaFrance/oidc-client/commit/0d8bc0626be0d5d14edca83dacb7367f57d4bb6d) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* + + +## v6.26.6 + +- [dab3662](https://github.com/AxaFrance/oidc-client/commit/dab36629bdebed5a3f085d606f313c7a12644e77) - fix build (release), 2023-07-28 by *Guillaume Chervet* + + +## v6.26.5 + +- [48d9db2](https://github.com/AxaFrance/oidc-client/commit/48d9db2f2cffbe74a6fd32b5771f5df0b8314b7f) - test release, 2023-07-28 by *Guillaume Chervet* + + +## v6.26.4 + +- [9c7a143](https://github.com/AxaFrance/oidc-client/commit/9c7a143797cffff1044c13787c6ceaf690fa4c87) - fix build (release), 2023-07-28 by *Guillaume Chervet* + + +## v6.26.3 + +- [04f4900](https://github.com/AxaFrance/oidc-client/commit/04f4900d672e954278e6835bc31c62e4bf8660de) - try fix (release), 2023-07-28 by *Guillaume Chervet* + + +## v6.26.2 + +- [d329ce0](https://github.com/AxaFrance/oidc-client/commit/d329ce0cb013f4877cb401c6ccef316077ce9d09) - fix(ci): add set to replace workspace* (release), 2023-07-28 by *Guillaume Chervet* + + +## v6.26.1 + + + +## v6.26.0 + +- [7eac9e5](https://github.com/AxaFrance/oidc-client/commit/7eac9e5c10175ae6850a72e21e11bac568a01720) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* +- [9f25be7](https://github.com/AxaFrance/oidc-client/commit/9f25be794ff6b08d8ca30cc5f27dff554136d163) - refactor(lint): Enable linting on examples, fix lint warnings. (#1111), 2023-07-27 by *Jason Finch* +- [762ca42](https://github.com/AxaFrance/oidc-client/commit/762ca423a2efe946d4213a3c482638a386a5b555) - ci(lint): Move eslint config to root. Add GH workflow to run lint. (#1109), 2023-07-27 by *Jason Finch* +- [6b5ba95](https://github.com/AxaFrance/oidc-client/commit/6b5ba95db3549c4cfd5ea0412c6f0de046256a57) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* + + +## v6.25.6 + +- [288ce99](https://github.com/AxaFrance/oidc-client/commit/288ce9937e6e1cb8c1b7c7f6909ebef8a48f12e5) - fix(react): ajust peerDependencies (release), 2023-07-24 by *Guillaume Chervet* +- [7c86bd7](https://github.com/AxaFrance/oidc-client/commit/7c86bd73d0e880a8ebbdfcad70ed5f2492cc0bc3) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* + + +## v6.25.5 + +- [8786e85](https://github.com/AxaFrance/oidc-client/commit/8786e85190dbc23de4311381b1c59f08673b0436) - fix(ci): github release (release), 2023-07-24 by *Guillaume Chervet* +- [34ac877](https://github.com/AxaFrance/oidc-client/commit/34ac877f2a82c9e048896bec8d077274216b8619) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* + + +## v6.25.4 + +- [9139393](https://github.com/AxaFrance/oidc-client/commit/9139393069142b05708f73a64ee81afdfaf0104f) - fix(oidc): Service Worker improper token revocation when logging out and showAccessToken=true (#1104) (release), 2023-07-24 by *kosciolek* +- [ccc7c42](https://github.com/AxaFrance/oidc-client/commit/ccc7c429cde1da743993d16db17ef343f374f00b) - fix(ci): website and packages psotinstall error when pnpm from root (#1108), 2023-07-24 by *Guillaume Chervet* +- [d0ede07](https://github.com/AxaFrance/oidc-client/commit/d0ede07c1cd1aaf8526917df299d7a308eb7ea9d) - ci(version): Add a period between version alpha|beta and run_number (#1107) (alpha), 2023-07-24 by *Jason Finch* +- [254b9f9](https://github.com/AxaFrance/oidc-client/commit/254b9f945bff154e127782522244378a3a224f94) - refactor(post-install): Alter post-install to not have a dependency on 'cpy' (#1106), 2023-07-24 by *Jason Finch* +- [e04fb4b](https://github.com/AxaFrance/oidc-client/commit/e04fb4b465178e4fe1d1b8e80c41516979e9702f) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* + + +## v6.25.3 + +- [e7aaa2f](https://github.com/AxaFrance/oidc-client/commit/e7aaa2f63614c1fc76f2e66e69877147aae37d8e) - [skip ci] Update version package.json, 2023-07-23 by *GitHub* +- [aea4aea](https://github.com/AxaFrance/oidc-client/commit/aea4aea5fda1ef7c7ee6e43f8fc8efb2a0797a58) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* + + +## v6.25.2 + +- [26b27a5](https://github.com/AxaFrance/oidc-client/commit/26b27a5d5242ce9bb47530fd48812f21b218c5be) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [612cf26](https://github.com/AxaFrance/oidc-client/commit/612cf26c1fb087c20f7207ae4e6281c2fe9d6a46) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* +- [c72ac31](https://github.com/AxaFrance/oidc-client/commit/c72ac31f723d26737f0223a4aefb84c0c9da7045) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [5472e0a](https://github.com/AxaFrance/oidc-client/commit/5472e0a9e510ba14c38bd205be39b732e877353a) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* +- [c2c8fd3](https://github.com/AxaFrance/oidc-client/commit/c2c8fd37dee118658bd0186ea18f8554fe4217f9) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [945043c](https://github.com/AxaFrance/oidc-client/commit/945043c39376611ba1e417e24d55607a5a4e861b) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* +- [776f0c2](https://github.com/AxaFrance/oidc-client/commit/776f0c22446763d89cd10412c53c964f3dd2bb57) - fix sw package test (alpha), 2023-07-22 by *Guillaume Chervet* +- [41dd0c3](https://github.com/AxaFrance/oidc-client/commit/41dd0c3d5c03e7af05e849fd35d4bc4a13078826) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [b2ed839](https://github.com/AxaFrance/oidc-client/commit/b2ed8393b061d4da8bbb67003f7940aaa7b845d3) - fix package sw remove private (alpha), 2023-07-22 by *Guillaume Chervet* +- [edd5b3d](https://github.com/AxaFrance/oidc-client/commit/edd5b3dd1207ca1683ee0f492914fa514cd2b239) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [d3531a6](https://github.com/AxaFrance/oidc-client/commit/d3531a68b78d48e6150f71d22deba738a15391f3) - fix conflict (alpha), 2023-07-22 by *Guillaume Chervet* +- [852900f](https://github.com/AxaFrance/oidc-client/commit/852900fd1473ac8c07ad298a275430fa91d5fb02) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [8c3e0c9](https://github.com/AxaFrance/oidc-client/commit/8c3e0c99c2507d7a6e198db517fd120cb06f6ac7) - chore(ci): fix duplicated id (alpha), 2023-07-22 by *Guillaume Chervet* +- [4ccbef0](https://github.com/AxaFrance/oidc-client/commit/4ccbef0417543bf2a7395788315298b873327e7a) - chore(ci): add serviceworker (alpha), 2023-07-22 by *Guillaume Chervet* + + +## v6.25.1 + +- [b08f00b](https://github.com/AxaFrance/oidc-client/commit/b08f00bf3d4fa8f798ca812abf1a00f19308df84) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [cf3e31a](https://github.com/AxaFrance/oidc-client/commit/cf3e31af027d60626f1bff9a7c0951db115d11c3) - fix(react): update lock file (alpha), 2023-07-22 by *Guillaume Chervet* +- [e02bc6e](https://github.com/AxaFrance/oidc-client/commit/e02bc6e77114f585e00f7d9d888db1d0a537be88) - chore(ci): fix numversion (alpha), 2023-07-22 by *Guillaume Chervet* + + +## v6.25.0 + +- [1adff41](https://github.com/AxaFrance/oidc-client/commit/1adff41b96d4e3e44a63670f2e6d1de13e202c7a) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* +- [7ba2509](https://github.com/AxaFrance/oidc-client/commit/7ba2509271acefb6ff744fb07a464fd7f9c42064) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* +- [4be9aed](https://github.com/AxaFrance/oidc-client/commit/4be9aedde3a81f11aac5f8dfdef4914ce2c0483b) - feat(workspace): Add workspaces to specify build order dependencies in packages. (#1004), 2023-07-22 by *Jason Finch* +- [d337b8b](https://github.com/AxaFrance/oidc-client/commit/d337b8b574936b81a4a6de9d533076a9da3a848b) - chore(ci): add way to publish alpha, beta, release (beta) (#1099), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.27 + +- [2b50407](https://github.com/AxaFrance/oidc-client/commit/2b50407c39bd95fdbbfec2c5f59c7901c189d3ec) - [skip ci] Update version package.json, 2023-07-21 by *GitHub* +- [e68b26b](https://github.com/AxaFrance/oidc-client/commit/e68b26be8ab30eef9aa46e5e4dd029fa5b3818c3) - test (beta), 2023-07-21 by *Guillaume Chervet* +- [4e78bbb](https://github.com/AxaFrance/oidc-client/commit/4e78bbbc4fb6f6728e97ee7a0f517bf8eac72998) - Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* +- [8b7eb9b](https://github.com/AxaFrance/oidc-client/commit/8b7eb9bfc29f242132e1cff4952a2342dd610b34) - fix(ci): Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.26 + +- [cee3198](https://github.com/AxaFrance/oidc-client/commit/cee3198d3ffde50a71e52a5654907b7f4ac013d9) - fix(ci): lastcomiit (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.25 + +- [f449785](https://github.com/AxaFrance/oidc-client/commit/f44978588f1697fe38fea68accbca0408ad6f6c6) - fix(ci): version badly injected, 2023-07-20 by *Guillaume Chervet* + + +## v6.24.24 + +- [0a30ab1](https://github.com/AxaFrance/oidc-client/commit/0a30ab1c3ce16df2ee8bb8c7fab4050e6cb1e3f1) - fix(ci): version empty (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.23 + +- [8ae8b23](https://github.com/AxaFrance/oidc-client/commit/8ae8b23d54c3352221bbca638a8f8ad5d2f70459) - fix(ci): bad variable (alpha), 2023-07-20 by *Guillaume Chervet* +- [8fd627d](https://github.com/AxaFrance/oidc-client/commit/8fd627df3359f24aa2f8a56381b50b2617dc2f53) - chore(ci): add way to publish alpha, beta, release (alpha) (#1099), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.22 + +- [1f8b455](https://github.com/AxaFrance/oidc-client/commit/1f8b455107dda34d267e0a6c898c704de88dfa77) - Merge db00519628cbd0a6f865539245321bcc85570f15 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [db00519](https://github.com/AxaFrance/oidc-client/commit/db00519628cbd0a6f865539245321bcc85570f15) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.21 + +- [40ec599](https://github.com/AxaFrance/oidc-client/commit/40ec5994043d3a8c294e520e10d24bd5f1e8a02f) - Merge 822f9aba2b245872401fa15905e7e256e4adb879 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.20 + +- [9888924](https://github.com/AxaFrance/oidc-client/commit/9888924541c0754c9dd033972d76c3c854e6ed4d) - Merge 13656ac570b3896db17bcf38f2113ae4443dba17 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [13656ac](https://github.com/AxaFrance/oidc-client/commit/13656ac570b3896db17bcf38f2113ae4443dba17) - test (alpha), 2023-07-20 by *Guillaume Chervet* + + diff --git a/README.md b/README.md new file mode 100644 index 000000000..7e5960073 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# README diff --git a/bin/generate-changelog.sh b/bin/generate-changelog.sh new file mode 100755 index 000000000..81a5d046b --- /dev/null +++ b/bin/generate-changelog.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +num_tags=60 +# Get all tag names in reverse order +tags=(`git tag -l --sort=-creatordate | head -$num_tags`) + +# File to save the log +outfile=CHANGELOG.md + +# Write the header +echo "# Changelog" > $outfile +echo "" >> $outfile + +# Iterate over tags array +for((i=0; i<${#tags[@]}-1; i++)) +do +# current tag +current=${tags[$i]} +# previous tag +previous=${tags[$i+1]} + +# Write header for current tag +echo "## $current" >> $outfile +echo "## $current" +echo "" >> $outfile + +# Get commit hashes: between current and previous tag +hashes=(`git log --pretty=format:"%H" $previous..$current`) + +# Output commit log for each hash +for hash in ${hashes[@]} +do +# Get commit log in desired format. +# You can modify the 'format' as per your need. Please refer 'PRETTY FORMATS' section of git-log man page +log=$(git log -1 --pretty=format:"[%h](https://github.com/AxaFrance/oidc-client/commit/%H) - %s, %ad by *%an*" --date=short $hash) + +# Write formatted log to CHANGELOG.md file +echo "- $log" >> $outfile +echo "- $log" +done + +# Space between two tags +echo "" >> $outfile +echo "" >> $outfile +done diff --git a/changelog-template.hbs b/changelog-template.hbs deleted file mode 100644 index ff4d159ef..000000000 --- a/changelog-template.hbs +++ /dev/null @@ -1,27 +0,0 @@ -### Changelog -All notable changes to this project will be documented in this file. - -{{#each releases}} - {{#if href}} - {{#if major}} - ### [{{title}}]({{href}}) - {{else}} - #### [{{title}}]({{href}}) - {{/if}} - {{else}} - #### {{title}} - {{/if}} - {{#if tag}} - > {{niceDate}} - {{/if}} - {{#each merges}} - - {{message}}{{#if href}} [`#{{id}}`]({{href}}){{/if}} by {{author}} - {{/each}} - {{#each fixes}} - - {{commit.subject}}{{#each fixes}}{{#if href}} [`#{{id}}`]({{href}}) by {{author}}{{/if}}{{/each}} - {{/each}} - {{#each commits}} - - {{subject}}{{#if href}} [`{{shorthash}}`]({{href}}) by {{author}} {{/if}} - {{/each}} - -{{/each}} \ No newline at end of file diff --git a/package.json b/package.json index 239b780dc..a90a7c30d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@axafr/react-oidc-monorepo", "private": true, - "version": "0.0.0", + "version": "0.0.5", "description": "Root package for the project", "license": "MIT", "workspaces": [ @@ -52,4 +52,4 @@ "node": "16.* || >= 18.0.0" }, "packageManager": "pnpm@8.6.7" -} +} \ No newline at end of file diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 2509fa730..0cf2337cd 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.9.3", + "version": "7.10.12", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 8ba13ebae..6b2a52fa1 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.9.3'; +export default '7.10.12'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f39ae9c37..82ea13e8d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.9.3", + "version": "7.10.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 8ba13ebae..6b2a52fa1 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.9.3'; +export default '7.10.12'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e0278884b..ef6d43337 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.9.3", + "version": "7.10.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa2a30e0b..0f790c5fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.0.0(react-dom@18.2.0)(react@18.2.0) + version: 13.4.12(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -1131,7 +1131,7 @@ packages: '@rushstack/ts-command-line': 4.15.1 colors: 1.2.5 lodash: 4.17.21 - resolve: 1.22.2 + resolve: 1.22.3 semver: 7.5.4 source-map: 0.6.1 typescript: 5.0.4 @@ -1169,12 +1169,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.0.0: - resolution: {integrity: sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA==} + /@next/env@13.4.12: + resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} dev: false - /@next/swc-darwin-arm64@14.0.0: - resolution: {integrity: sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA==} + /@next/swc-darwin-arm64@13.4.12: + resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1182,8 +1182,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.0: - resolution: {integrity: sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg==} + /@next/swc-darwin-x64@13.4.12: + resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1191,8 +1191,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.0: - resolution: {integrity: sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g==} + /@next/swc-linux-arm64-gnu@13.4.12: + resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1200,8 +1200,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.0: - resolution: {integrity: sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w==} + /@next/swc-linux-arm64-musl@13.4.12: + resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1209,8 +1209,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.0: - resolution: {integrity: sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw==} + /@next/swc-linux-x64-gnu@13.4.12: + resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1218,8 +1218,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.0: - resolution: {integrity: sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg==} + /@next/swc-linux-x64-musl@13.4.12: + resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1227,8 +1227,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.0: - resolution: {integrity: sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw==} + /@next/swc-win32-arm64-msvc@13.4.12: + resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1236,8 +1236,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.0: - resolution: {integrity: sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g==} + /@next/swc-win32-ia32-msvc@13.4.12: + resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1245,8 +1245,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.0: - resolution: {integrity: sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w==} + /@next/swc-win32-x64-msvc@13.4.12: + resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1340,7 +1340,7 @@ packages: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.2 + resolve: 1.22.3 semver: 7.5.4 z-schema: 5.0.5 dev: true @@ -1348,7 +1348,7 @@ packages: /@rushstack/rig-package@0.4.0: resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} dependencies: - resolve: 1.22.2 + resolve: 1.22.3 strip-json-comments: 3.1.1 dev: true @@ -1365,8 +1365,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.1 dev: false @@ -4505,40 +4505,44 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA==} - engines: {node: '>=18.17.0'} + /next@13.4.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} + engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + fibers: + optional: true sass: optional: true dependencies: - '@next/env': 14.0.0 - '@swc/helpers': 0.5.2 + '@next/env': 13.4.12 + '@swc/helpers': 0.5.1 busboy: 1.6.0 caniuse-lite: 1.0.30001517 - postcss: 8.4.31 + postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 + zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.0 - '@next/swc-darwin-x64': 14.0.0 - '@next/swc-linux-arm64-gnu': 14.0.0 - '@next/swc-linux-arm64-musl': 14.0.0 - '@next/swc-linux-x64-gnu': 14.0.0 - '@next/swc-linux-x64-musl': 14.0.0 - '@next/swc-win32-arm64-msvc': 14.0.0 - '@next/swc-win32-ia32-msvc': 14.0.0 - '@next/swc-win32-x64-msvc': 14.0.0 + '@next/swc-darwin-arm64': 13.4.12 + '@next/swc-darwin-x64': 13.4.12 + '@next/swc-linux-arm64-gnu': 13.4.12 + '@next/swc-linux-arm64-musl': 13.4.12 + '@next/swc-linux-x64-gnu': 13.4.12 + '@next/swc-linux-x64-musl': 13.4.12 + '@next/swc-win32-arm64-msvc': 13.4.12 + '@next/swc-win32-ia32-msvc': 13.4.12 + '@next/swc-win32-x64-msvc': 13.4.12 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4909,6 +4913,15 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true + /postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /postcss@8.4.27: resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} @@ -4925,6 +4938,7 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -6337,3 +6351,7 @@ packages: optionalDependencies: commander: 9.5.0 dev: true + + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false From 8a31551add5997caf1c975b7ab0fbba37be871b8 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 17:08:28 +0000 Subject: [PATCH 077/565] [skip ci] Update version package.json --- CHANGELOG.md | 12 ++++++------ packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab9790f86..5e8c9f9bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v7.10.12 + +- [84e0ed0](https://github.com/AxaFrance/oidc-client/commit/84e0ed001fe2d028e4dfaa423a56a35c86713446) - Update npm-publish.yml (release), 2023-11-29 by *Guillaume Chervet* +- [5994dd5](https://github.com/AxaFrance/oidc-client/commit/5994dd5fb3cd7bd124d895d1db78b7d6e0949f3a) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + ## v7.10.11 - [4460d89](https://github.com/AxaFrance/oidc-client/commit/4460d893d74258dd2052674ee29694037c372247) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* @@ -370,9 +376,3 @@ - [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.20 - -- [9888924](https://github.com/AxaFrance/oidc-client/commit/9888924541c0754c9dd033972d76c3c854e6ed4d) - Merge 13656ac570b3896db17bcf38f2113ae4443dba17 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [13656ac](https://github.com/AxaFrance/oidc-client/commit/13656ac570b3896db17bcf38f2113ae4443dba17) - test (alpha), 2023-07-20 by *Guillaume Chervet* - - diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0cf2337cd..ed0862c34 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.10.12", + "version": "7.11.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 6b2a52fa1..b176a586f 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.10.12'; +export default '7.11.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 82ea13e8d..953e3f674 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.10.12", + "version": "7.11.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 6b2a52fa1..b176a586f 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.10.12'; +export default '7.11.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ef6d43337..f9c35087d 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.10.12", + "version": "7.11.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 2fdfcb5ec727f0c6f5f86c4648b95ba4f265fc57 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 18:09:53 +0100 Subject: [PATCH 078/565] Update README.md (#1210) --- README.md | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 179 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e5960073..e4316d072 100644 --- a/README.md +++ b/README.md @@ -1 +1,179 @@ -# README +# @axa-fr/oidc-client + +[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) +[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Coverage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) + + +

+ Sample React Oicd +

+ +- [About](#about) +- [Getting Started](#getting-started) +- [Run The Demos](#run-the-demos) +- [How It Works](#how-it-works) +- Packages + - [`@axa-fr/oidc-client`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Foidc-client.svg)](https://badge.fury.io/js/%40axa-fr%2Foidc-client) + - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) + - `@axa-fr/svelte-oidc` : we are looking for contributor + - `@axa-fr/vue-oidc` : we are looking for contributor + - `@axa-fr/angular-oidc` : we are looking for contributor +- [FAQ](#FAQ) +- [Migrations](#migrations) +- [Contribute](#contribute) + +## About + +**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. +**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. +**@axa-fr/react-oidc** is for **React** (compatible next.js, etc.), we expect soon to provide one for **Vue**, **Angular** and **Svelte**. + +Demos: +- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) +- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + + +**@axa-fr/oidc-client** is: + +- **Secure** : + - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) + - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) + - OIDC using client side Code Credential Grant with pkce only +- **Lightweight** : Unpacked Size on npm is **274 kB** +- **Simple** + - refresh_token and access_token are auto refreshed in background + - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file +- **Multiple Authentication** : + - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) + - You can authenticate to multiple different providers inside the same SPA (single page application) website +- **Flexible** : + - Work with Service Worker (more secure) and without for older browser (less secure). + - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. + +Works perfectly well with: + +- [Auth0](https://auth0.com/) +- [Duende Identity Server](https://duendesoftware.com/) +- Azure AD +- Google +- AWS +- [Keycloak](https://www.keycloak.org/) +- etc., all OIDC providers + + +## Getting Started + +### Getting Started with @axa-fr/oidc-client + +```sh +npm install @axa-fr/oidc-client --save + +# To install or update OidcServiceWorker.js file, you can run +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public + +# If you have a "public" folder, the 2 files will be created : +# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" +# ./public/OidcTrustedDomains.js <-- won't be updated if already exist +``` + +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + }, +``` + +More documentation : + +- [`@axa-fr/oidc-client`](./packages/oidc-client#readme) + +### Getting Started with @axa-fr/react-oidc + +```sh +npm install @axa-fr/react-oidc --save + +# To install or update OidcServiceWorker.js file, you can run +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public + +# If you have a "public" folder, the 2 files will be created : +# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" +# ./public/OidcTrustedDomains.js <-- won't be updated if already exist +``` + +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +```sh + "scripts": { + ... + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + }, +``` + +More documentation : + +- [`@axa-fr/react-oidc`](./packages/react-oidc#readme) + +## Run The Demos + +```sh +git clone https://github.com/AxaFrance/oidc-client.git + +cd oidc-client +pnpm install + +# oidc client demo +cd examples/oidc-client-demo +pnpm install +pnpm start +# then navigate to http://localhost:5174 + +# react vite demo +cd examples/react-oidc-demo +pnpm install +pnpm start +# then navigate to http://localhost:4200 + +# react NextJS demo +cd examples/nextjs-demo +pnpm install +pnpm run dev +# then navigate to http://localhost:3001 +``` + +## How It Works + +

+ Schema Authorization Code Grant with pcke flow on the using service worker +
+ The service worker catch access_token and refresh_token that will never be accessible to the client. +

+ + +These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. +Internally for "`@axa-fr/react-oidc`", native History API is used to be router library agnostic. + +More information about OIDC : + +- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) +- [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) + +## FAQ + +- Frequented Asked Question [`FAQ`](./FAQ.md) + +## Migrations + +- Migrating from v3 to v4 [`guide`](./MIGRATION_GUIDE_V3_TO_V4.md) +- Migrating from v3 to v5 [`guide`](./MIGRATION_GUIDE_V3_TO_V5.md) +- Migrating from v4 to v5 [`guide`](./MIGRATION_GUIDE_V4_TO_V5.md) +- Migrating from v5 to v6 [`guide`](./MIGRATION_GUIDE_V5_TO_V6.md) +- Migrating from v6 to v7 [`guide`](./MIGRATION_GUIDE_V6_TO_V7.md) + +## Contribute + +- [How to run the solution and to contribute](./CONTRIBUTING.md) +- [Please respect our code of conduct](./CODE_OF_CONDUCT.md) From 23217fe3439500412eca9facc368e1ef5dfcb939 Mon Sep 17 00:00:00 2001 From: Douglas Zaltron Date: Wed, 29 Nov 2023 14:21:40 -0300 Subject: [PATCH 079/565] feat(oidc-client): export OidcClient instance for client application (#1211) (release) This commit introduces the exportation of the OidcClient instance, making it available for use in the client-side application. The addition ensures seamless integration of authentication mechanisms and improves the overall flow of user authentication and authorization processes. Key Changes: - Exported the OidcClient instance from the relevant module. - Ensured compatibility and smooth integration with the client application. Example of use without needing to use hooks in some cases ``` import { OidcClient } from '@axa-fr/react-oidc' export const getTokens = () => { const { tokens } = OidcClient.get() return tokens } ``` --- packages/react-oidc/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index 1970a986f..f967e4d8d 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -9,4 +9,4 @@ export type { OidcConfiguration, StringMap, } from '@axa-fr/oidc-client'; -export { type OidcUserInfo, TokenRenewMode } from '@axa-fr/oidc-client'; +export { type OidcUserInfo, TokenRenewMode, OidcClient } from '@axa-fr/oidc-client'; From 9f0c8513a65550a4baee3c143806f072c20cc1c4 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 17:24:26 +0000 Subject: [PATCH 080/565] [skip ci] Update version package.json --- CHANGELOG.md | 11 +++++------ packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e8c9f9bb..517974513 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## v7.11.0 + +- [6751b5c](https://github.com/AxaFrance/oidc-client/commit/6751b5c3f0e1265e35ac9b4b20cb673657eea6b4) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* + + ## v7.10.12 - [84e0ed0](https://github.com/AxaFrance/oidc-client/commit/84e0ed001fe2d028e4dfaa423a56a35c86713446) - Update npm-publish.yml (release), 2023-11-29 by *Guillaume Chervet* @@ -370,9 +375,3 @@ - [db00519](https://github.com/AxaFrance/oidc-client/commit/db00519628cbd0a6f865539245321bcc85570f15) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.21 - -- [40ec599](https://github.com/AxaFrance/oidc-client/commit/40ec5994043d3a8c294e520e10d24bd5f1e8a02f) - Merge 822f9aba2b245872401fa15905e7e256e4adb879 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* - - diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ed0862c34..51a47bf49 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.11.0", + "version": "7.12.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index b176a586f..bd8c75936 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.11.0'; +export default '7.12.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 953e3f674..d67921d0c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.11.0", + "version": "7.12.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index b176a586f..bd8c75936 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.11.0'; +export default '7.12.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f9c35087d..50b8b070e 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.11.0", + "version": "7.12.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 2b5aa6aba61bb35c7ae95102a34a8517c37607e5 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 21:06:07 +0100 Subject: [PATCH 081/565] fix(ci): changelog in another commit (release) --- .github/workflows/npm-publish.yml | 36 ++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index bdf3e4d88..96a18d566 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -56,6 +56,8 @@ jobs: working-directory: ./packages/oidc-client build: + permissions: + contents: write environment: react-oidc runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && !github.event.pull_request.head.repo.fork @@ -256,18 +258,32 @@ jobs: chmod +x ./bin/generate-changelog.sh ./bin/generate-changelog.sh - - - name: Commit updates package.json - uses: stefanzweifel/git-auto-commit-action@v4 + - name: Commit and push if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' - with: - commit_message: "[skip ci] Update version package.json" - commit_user_name: GitHub - commit_user_email: github-action@bot.com - commit_author: GitHub - push_options: '--force' - + run: | + git config --global user.name "GitHub" + git config --global user.email "github-action@bot.com" + git add . + git commit -m "[skip ci] Update to version ${{ steps.tag.outputs.new_version }} in package.json" + git tag ${{ steps.tag.outputs.new_version }} + git push --set-upstream origin "HEAD:main" --follow-tags -f + chmod +x ./bin/generate-changelog.sh + ./bin/generate-changelog.sh + git add . + git commit -m "[skip ci] Generate changelog to version ${{ steps.tag.outputs.new_version }}" + git push --set-upstream origin "HEAD:main" --follow-tags -f + + #- name: Commit updates package.json + # uses: stefanzweifel/git-auto-commit-action@v4 + # if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' + # with: + # commit_message: "[skip ci] Update version package.json" + # commit_user_name: GitHub + # commit_user_email: github-action@bot.com + # commit_author: GitHub + # push_options: '--force' + - name: SonarCloud Scan uses: sonarsource/sonarcloud-github-action@master if: github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.head.repo.fork From b621b379eadbe0beae1c1962b2c89b286cbc9a6f Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:10:17 +0000 Subject: [PATCH 082/565] [skip ci] Update to version 7.12.1 in package.json --- CHANGELOG.md | 153 +++++++++--------- .../oidc-client-service-worker/package.json | 2 +- .../oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 85 insertions(+), 78 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 517974513..90b5153fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,82 +1,15 @@ # Changelog -## v7.11.0 - -- [6751b5c](https://github.com/AxaFrance/oidc-client/commit/6751b5c3f0e1265e35ac9b4b20cb673657eea6b4) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* - - -## v7.10.12 - -- [84e0ed0](https://github.com/AxaFrance/oidc-client/commit/84e0ed001fe2d028e4dfaa423a56a35c86713446) - Update npm-publish.yml (release), 2023-11-29 by *Guillaume Chervet* -- [5994dd5](https://github.com/AxaFrance/oidc-client/commit/5994dd5fb3cd7bd124d895d1db78b7d6e0949f3a) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.11 - -- [4460d89](https://github.com/AxaFrance/oidc-client/commit/4460d893d74258dd2052674ee29694037c372247) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* -- [69eadc6](https://github.com/AxaFrance/oidc-client/commit/69eadc60c92bc799d0a2d65bd6b841f98bd7d78c) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.10 - -- [83f0c10](https://github.com/AxaFrance/oidc-client/commit/83f0c1092c48987eb8ad149100f3b44b4e7bc50b) - Update npm-publish.yml (release), 2023-11-29 by *Guillaume Chervet* - - -## v7.10.9 - -- [da29bee](https://github.com/AxaFrance/oidc-client/commit/da29beef9bf3a6993ca862b258254cd894977a74) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* -- [e1230bb](https://github.com/AxaFrance/oidc-client/commit/e1230bb4f1cfb57fea4998da768bd3b7676e78da) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.8 - -- [9bbfaa8](https://github.com/AxaFrance/oidc-client/commit/9bbfaa8dc34271692a278178539862e19fd76b6c) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* -- [09ece5b](https://github.com/AxaFrance/oidc-client/commit/09ece5bea1128ad24847036521aac2f27f7df261) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.7 - -- [82ed281](https://github.com/AxaFrance/oidc-client/commit/82ed28183d4efea9c1835f4eed9a25c254ecd8a5) - Update generate-changelog.sh (release) (#1203), 2023-11-29 by *Guillaume Chervet* -- [f41eafd](https://github.com/AxaFrance/oidc-client/commit/f41eafd59c1cd6b04f889db18d1e9db72e96d7af) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.6 - -- [a51e099](https://github.com/AxaFrance/oidc-client/commit/a51e099cb0d1f9fc2734d0fc73eb3bfefc77caf1) - Update generate-changelog.sh (release), 2023-11-29 by *Guillaume Chervet* -- [34f9291](https://github.com/AxaFrance/oidc-client/commit/34f9291104c3911f6a9e33dc23d5373bdc867ba2) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.5 - -- [c1f7494](https://github.com/AxaFrance/oidc-client/commit/c1f7494aaa58f50d22fe51d763b32f3914a515ed) - fix (release), 2023-11-29 by *Guillaume Chervet* -- [7e3af1f](https://github.com/AxaFrance/oidc-client/commit/7e3af1f9b0ffcf9714333b445577c04595a9135f) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.4 - -- [edb89b3](https://github.com/AxaFrance/oidc-client/commit/edb89b390eefce93dbaa02c813d388bbaf1088e2) - fix (release), 2023-11-29 by *Guillaume Chervet* - - -## v7.10.3 - -- [15f1414](https://github.com/AxaFrance/oidc-client/commit/15f1414d8699b9f35cfa977a204ae7bfb73cbbea) - fix(ci): update (release), 2023-11-29 by *Guillaume Chervet* -- [742c643](https://github.com/AxaFrance/oidc-client/commit/742c6430518c9cc64e0735e2203d659ab2098dc8) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* - - -## v7.10.2 - -- [99ca1c3](https://github.com/AxaFrance/oidc-client/commit/99ca1c3b022109a3c0712d0cafb436ee6eab20d0) - fix(ci): test (release), 2023-11-29 by *Guillaume Chervet* - - -## v7.10.1 +## v7.12.0 -- [ff1f841](https://github.com/AxaFrance/oidc-client/commit/ff1f841044101b99d8d896828015d732a383e437) - fix(ci): ammend (release), 2023-11-29 by *Guillaume Chervet* -- [a194c5b](https://github.com/AxaFrance/oidc-client/commit/a194c5bf7addede93cc56319bafaf07fd73243ad) - fix(ci): autochangelog, 2023-11-29 by *Guillaume Chervet* +- [23217fe](https://github.com/AxaFrance/oidc-client/commit/23217fe3439500412eca9facc368e1ef5dfcb939) - feat(oidc-client): export OidcClient instance for client application (#1211) (release), 2023-11-29 by *Douglas Zaltron* +- [2fdfcb5](https://github.com/AxaFrance/oidc-client/commit/2fdfcb5ec727f0c6f5f86c4648b95ba4f265fc57) - Update README.md (#1210), 2023-11-29 by *Guillaume Chervet* +- [8a31551](https://github.com/AxaFrance/oidc-client/commit/8a31551add5997caf1c975b7ab0fbba37be871b8) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* -## v7.10.0 +## v7.11.0 -- [3d1af45](https://github.com/AxaFrance/oidc-client/commit/3d1af45133e41c981c4a35c4b19298a3b0f1d555) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* +- [6751b5c](https://github.com/AxaFrance/oidc-client/commit/6751b5c3f0e1265e35ac9b4b20cb673657eea6b4) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* - [56bde67](https://github.com/AxaFrance/oidc-client/commit/56bde67566f8203e9d62ae6e8b722c86a7b63cae) - doc(readme): Update README.md, 2023-11-27 by *Guillaume Chervet* - [790da5a](https://github.com/AxaFrance/oidc-client/commit/790da5a60cc7fb07ca82feb994c8d12ff3e01b69) - [skip ci] Update version package.json, 2023-11-24 by *GitHub* @@ -375,3 +308,77 @@ - [db00519](https://github.com/AxaFrance/oidc-client/commit/db00519628cbd0a6f865539245321bcc85570f15) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* +## v6.24.21 + +- [40ec599](https://github.com/AxaFrance/oidc-client/commit/40ec5994043d3a8c294e520e10d24bd5f1e8a02f) - Merge 822f9aba2b245872401fa15905e7e256e4adb879 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.20 + +- [9888924](https://github.com/AxaFrance/oidc-client/commit/9888924541c0754c9dd033972d76c3c854e6ed4d) - Merge 13656ac570b3896db17bcf38f2113ae4443dba17 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [13656ac](https://github.com/AxaFrance/oidc-client/commit/13656ac570b3896db17bcf38f2113ae4443dba17) - test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.19 + +- [3c64173](https://github.com/AxaFrance/oidc-client/commit/3c641732e7787729a07735408098fc103ca9c66e) - Merge fa8c6c964011739e9297a31ec186c2c657f205fd into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [fa8c6c9](https://github.com/AxaFrance/oidc-client/commit/fa8c6c964011739e9297a31ec186c2c657f205fd) - fix text (alpha), 2023-07-20 by *Guillaume Chervet* +- [391f15a](https://github.com/AxaFrance/oidc-client/commit/391f15ae075ad8e0960bfad39068928405f748cf) - test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.18 + +- [3334870](https://github.com/AxaFrance/oidc-client/commit/3334870d3a281bf049b09f655c6ce8e587af8d35) - Merge bc91071c5f9c3dae1f74fc0b314acc984e7aea71 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [bc91071](https://github.com/AxaFrance/oidc-client/commit/bc91071c5f9c3dae1f74fc0b314acc984e7aea71) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* +- [dc1a8bf](https://github.com/AxaFrance/oidc-client/commit/dc1a8bfd997684b00b41c05196c470a60ab85555) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.17 + +- [e7bb2bf](https://github.com/AxaFrance/oidc-client/commit/e7bb2bf34af537756219d876a209297488996987) - Merge 290ee618c032f20b583ff624571ca53b9cd7a0b6 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [290ee61](https://github.com/AxaFrance/oidc-client/commit/290ee618c032f20b583ff624571ca53b9cd7a0b6) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.16 + +- [0c914ec](https://github.com/AxaFrance/oidc-client/commit/0c914ec8c7d815bb4f314eb61342d31edc68b100) - Merge 7fd9f9bf1f9c383b6b08d498f4743e0f8cbc0b65 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [7fd9f9b](https://github.com/AxaFrance/oidc-client/commit/7fd9f9bf1f9c383b6b08d498f4743e0f8cbc0b65) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.15 + +- [7c0e6c7](https://github.com/AxaFrance/oidc-client/commit/7c0e6c749b9c049accefbf29e36aa606db66ea87) - Merge eae183a91d6570b7ea23fe85ada9035dfcfbb83a into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [eae183a](https://github.com/AxaFrance/oidc-client/commit/eae183a91d6570b7ea23fe85ada9035dfcfbb83a) - ssssssssss, 2023-07-20 by *Guillaume Chervet* + + +## v6.24.14 + +- [f5ff779](https://github.com/AxaFrance/oidc-client/commit/f5ff779691943e5d6030b1bd387ffc8a302d3ce6) - Merge 69818e2f7a63cb3168e82e1d0e0d1db434db972a into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [69818e2](https://github.com/AxaFrance/oidc-client/commit/69818e2f7a63cb3168e82e1d0e0d1db434db972a) - fix(ct): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.13 + +- [27ba555](https://github.com/AxaFrance/oidc-client/commit/27ba555288f614cf8da7b1be01f3936e1bc1a56e) - Merge bdebcb00841e592e87cab9a6bec9ae683fb30e32 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [bdebcb0](https://github.com/AxaFrance/oidc-client/commit/bdebcb00841e592e87cab9a6bec9ae683fb30e32) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.12 + +- [35b7f96](https://github.com/AxaFrance/oidc-client/commit/35b7f9605aebfd93d7ef18fe20306b9e7ae53e4b) - Merge ca81becd76688d17bf0959908ffb194614fe29c4 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [ca81bec](https://github.com/AxaFrance/oidc-client/commit/ca81becd76688d17bf0959908ffb194614fe29c4) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.11 + +- [d99b335](https://github.com/AxaFrance/oidc-client/commit/d99b335f24c80e9a752b88275c7831617a68401f) - Merge b1cc89793d89a3bf821d917a99f0b7519526b030 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [b1cc897](https://github.com/AxaFrance/oidc-client/commit/b1cc89793d89a3bf821d917a99f0b7519526b030) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + +## v6.24.10 + +- [3fc3e9e](https://github.com/AxaFrance/oidc-client/commit/3fc3e9e2dd5a0c7758d53b1c87570d79906a410c) - Merge 2306e7a6b66ac207993f42b83d146566d2b55a83 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* +- [2306e7a](https://github.com/AxaFrance/oidc-client/commit/2306e7a6b66ac207993f42b83d146566d2b55a83) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* + + diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 51a47bf49..add139522 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.0", + "version": "7.12.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index bd8c75936..efdccb4c9 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.0'; +export default '7.12.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index d67921d0c..a37f09ec1 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.0", + "version": "7.12.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index bd8c75936..efdccb4c9 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.0'; +export default '7.12.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 50b8b070e..43b76771a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.0", + "version": "7.12.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 537816054f75c853550654dcec295a8cff2abb5c Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:10:18 +0000 Subject: [PATCH 083/565] [skip ci] Generate changelog to version 7.12.1 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90b5153fc..e5f066a63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 7.12.1 + +- [b621b37](https://github.com/AxaFrance/oidc-client/commit/b621b379eadbe0beae1c1962b2c89b286cbc9a6f) - [skip ci] Update to version 7.12.1 in package.json, 2023-11-29 by *GitHub* +- [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* +- [9f0c851](https://github.com/AxaFrance/oidc-client/commit/9f0c8513a65550a4baee3c143806f072c20cc1c4) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* + + ## v7.12.0 - [23217fe](https://github.com/AxaFrance/oidc-client/commit/23217fe3439500412eca9facc368e1ef5dfcb939) - feat(oidc-client): export OidcClient instance for client application (#1211) (release), 2023-11-29 by *Douglas Zaltron* @@ -376,9 +383,3 @@ - [b1cc897](https://github.com/AxaFrance/oidc-client/commit/b1cc89793d89a3bf821d917a99f0b7519526b030) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.10 - -- [3fc3e9e](https://github.com/AxaFrance/oidc-client/commit/3fc3e9e2dd5a0c7758d53b1c87570d79906a410c) - Merge 2306e7a6b66ac207993f42b83d146566d2b55a83 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [2306e7a](https://github.com/AxaFrance/oidc-client/commit/2306e7a6b66ac207993f42b83d146566d2b55a83) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - From cd575e716f4fbcb1ba09a76a1530a3ae23f08599 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 21:18:01 +0100 Subject: [PATCH 084/565] fix(ci): last clean and test (release) --- .github/workflows/npm-publish.yml | 10 ---------- package.json | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 96a18d566..a61d52661 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -273,16 +273,6 @@ jobs: git add . git commit -m "[skip ci] Generate changelog to version ${{ steps.tag.outputs.new_version }}" git push --set-upstream origin "HEAD:main" --follow-tags -f - - #- name: Commit updates package.json - # uses: stefanzweifel/git-auto-commit-action@v4 - # if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' - # with: - # commit_message: "[skip ci] Update version package.json" - # commit_user_name: GitHub - # commit_user_email: github-action@bot.com - # commit_author: GitHub - # push_options: '--force' - name: SonarCloud Scan uses: sonarsource/sonarcloud-github-action@master diff --git a/package.json b/package.json index a90a7c30d..bd198e384 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@axafr/react-oidc-monorepo", "private": true, - "version": "0.0.5", + "version": "0.0.0", "description": "Root package for the project", "license": "MIT", "workspaces": [ From 0c32c73fcff7a0bb625604a49b6acd131d4a5b24 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:20:55 +0000 Subject: [PATCH 085/565] [skip ci] Update to version 7.12.2 in package.json --- CHANGELOG.md | 3 +-- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5f066a63..a38a78fc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,7 @@ # Changelog -## 7.12.1 +## v7.12.1 -- [b621b37](https://github.com/AxaFrance/oidc-client/commit/b621b379eadbe0beae1c1962b2c89b286cbc9a6f) - [skip ci] Update to version 7.12.1 in package.json, 2023-11-29 by *GitHub* - [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* - [9f0c851](https://github.com/AxaFrance/oidc-client/commit/9f0c8513a65550a4baee3c143806f072c20cc1c4) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index add139522..465ce90c3 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.1", + "version": "7.12.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index efdccb4c9..11d3e1929 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.1'; +export default '7.12.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a37f09ec1..b69db236d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.1", + "version": "7.12.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index efdccb4c9..11d3e1929 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.1'; +export default '7.12.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 43b76771a..1bd8eadc3 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.1", + "version": "7.12.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 738fde94353a581efb9089da6cab2212e3d6930b Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:20:56 +0000 Subject: [PATCH 086/565] [skip ci] Generate changelog to version 7.12.2 --- CHANGELOG.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a38a78fc7..c872ce0fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 7.12.2 + +- [0c32c73](https://github.com/AxaFrance/oidc-client/commit/0c32c73fcff7a0bb625604a49b6acd131d4a5b24) - [skip ci] Update to version 7.12.2 in package.json, 2023-11-29 by *GitHub* +- [cd575e7](https://github.com/AxaFrance/oidc-client/commit/cd575e716f4fbcb1ba09a76a1530a3ae23f08599) - fix(ci): last clean and test (release), 2023-11-29 by *Guillaume Chervet* +- [5378160](https://github.com/AxaFrance/oidc-client/commit/537816054f75c853550654dcec295a8cff2abb5c) - [skip ci] Generate changelog to version 7.12.1, 2023-11-29 by *GitHub* +- [b621b37](https://github.com/AxaFrance/oidc-client/commit/b621b379eadbe0beae1c1962b2c89b286cbc9a6f) - [skip ci] Update to version 7.12.1 in package.json, 2023-11-29 by *GitHub* + + ## v7.12.1 - [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* @@ -376,9 +384,3 @@ - [ca81bec](https://github.com/AxaFrance/oidc-client/commit/ca81becd76688d17bf0959908ffb194614fe29c4) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.11 - -- [d99b335](https://github.com/AxaFrance/oidc-client/commit/d99b335f24c80e9a752b88275c7831617a68401f) - Merge b1cc89793d89a3bf821d917a99f0b7519526b030 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [b1cc897](https://github.com/AxaFrance/oidc-client/commit/b1cc89793d89a3bf821d917a99f0b7519526b030) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - From 59a9c468b4fa9eb9694b1f3921eb545daf1f58f8 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 21:31:13 +0100 Subject: [PATCH 087/565] fix(ci): exclude author GitHub from changelog (release) --- bin/generate-changelog.sh | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/bin/generate-changelog.sh b/bin/generate-changelog.sh index 81a5d046b..0c6151267 100755 --- a/bin/generate-changelog.sh +++ b/bin/generate-changelog.sh @@ -1,6 +1,8 @@ #!/bin/bash num_tags=60 +excluded_author="GitHub" + # Get all tag names in reverse order tags=(`git tag -l --sort=-creatordate | head -$num_tags`) @@ -30,13 +32,19 @@ hashes=(`git log --pretty=format:"%H" $previous..$current`) # Output commit log for each hash for hash in ${hashes[@]} do -# Get commit log in desired format. -# You can modify the 'format' as per your need. Please refer 'PRETTY FORMATS' section of git-log man page -log=$(git log -1 --pretty=format:"[%h](https://github.com/AxaFrance/oidc-client/commit/%H) - %s, %ad by *%an*" --date=short $hash) - -# Write formatted log to CHANGELOG.md file -echo "- $log" >> $outfile -echo "- $log" + # Check the author of the commit + author=$(git log -1 --pretty=format:"%an" $hash) + + # Exclude commits from the specified author + if [ "$author" != "$excluded_author" ]; then + # Get commit log in the desired format. + # You can modify the 'format' as per your need. Please refer 'PRETTY FORMATS' section of git-log man page + log=$(git log -1 --pretty=format:"[%h](https://github.com/AxaFrance/oidc-client/commit/%H) - %s, %ad by *%an*" --date=short $hash) + + # Write formatted log to CHANGELOG.md file + echo "- $log" >> $outfile + echo "- $log" + fi done # Space between two tags From 4e5d1dc1340ae276bd92c31a6dd5c2dd522ad505 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:34:48 +0000 Subject: [PATCH 088/565] [skip ci] Update to version 7.12.3 in package.json --- CHANGELOG.md | 44 +------------------ .../oidc-client-service-worker/package.json | 2 +- .../oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 6 files changed, 6 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c872ce0fe..d33bd1b5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,50 +1,41 @@ # Changelog -## 7.12.2 +## v7.12.2 -- [0c32c73](https://github.com/AxaFrance/oidc-client/commit/0c32c73fcff7a0bb625604a49b6acd131d4a5b24) - [skip ci] Update to version 7.12.2 in package.json, 2023-11-29 by *GitHub* - [cd575e7](https://github.com/AxaFrance/oidc-client/commit/cd575e716f4fbcb1ba09a76a1530a3ae23f08599) - fix(ci): last clean and test (release), 2023-11-29 by *Guillaume Chervet* -- [5378160](https://github.com/AxaFrance/oidc-client/commit/537816054f75c853550654dcec295a8cff2abb5c) - [skip ci] Generate changelog to version 7.12.1, 2023-11-29 by *GitHub* -- [b621b37](https://github.com/AxaFrance/oidc-client/commit/b621b379eadbe0beae1c1962b2c89b286cbc9a6f) - [skip ci] Update to version 7.12.1 in package.json, 2023-11-29 by *GitHub* ## v7.12.1 - [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* -- [9f0c851](https://github.com/AxaFrance/oidc-client/commit/9f0c8513a65550a4baee3c143806f072c20cc1c4) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* ## v7.12.0 - [23217fe](https://github.com/AxaFrance/oidc-client/commit/23217fe3439500412eca9facc368e1ef5dfcb939) - feat(oidc-client): export OidcClient instance for client application (#1211) (release), 2023-11-29 by *Douglas Zaltron* - [2fdfcb5](https://github.com/AxaFrance/oidc-client/commit/2fdfcb5ec727f0c6f5f86c4648b95ba4f265fc57) - Update README.md (#1210), 2023-11-29 by *Guillaume Chervet* -- [8a31551](https://github.com/AxaFrance/oidc-client/commit/8a31551add5997caf1c975b7ab0fbba37be871b8) - [skip ci] Update version package.json, 2023-11-29 by *GitHub* ## v7.11.0 - [6751b5c](https://github.com/AxaFrance/oidc-client/commit/6751b5c3f0e1265e35ac9b4b20cb673657eea6b4) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* - [56bde67](https://github.com/AxaFrance/oidc-client/commit/56bde67566f8203e9d62ae6e8b722c86a7b63cae) - doc(readme): Update README.md, 2023-11-27 by *Guillaume Chervet* -- [790da5a](https://github.com/AxaFrance/oidc-client/commit/790da5a60cc7fb07ca82feb994c8d12ff3e01b69) - [skip ci] Update version package.json, 2023-11-24 by *GitHub* ## v7.9.3 - [a80844c](https://github.com/AxaFrance/oidc-client/commit/a80844c2668066b083009043f1dd94fa196e1f18) - fix(service-worker): make sure URL is normalized when comparing with token endpoint and revocation endpoint (#1198) (release), 2023-11-24 by *meesvandongen* - [bf19dd0](https://github.com/AxaFrance/oidc-client/commit/bf19dd0cc975ea4524b0f68f9315625b3789801b) - fix(oidc-client): tokens refresh conflict multiple tabs (alpha), 2023-11-17 by *Guillaume Chervet* -- [216adc7](https://github.com/AxaFrance/oidc-client/commit/216adc79007264915747edf3ff07171cac456759) - [skip ci] Update version package.json, 2023-11-17 by *GitHub* ## v7.9.2 - [5085e05](https://github.com/AxaFrance/oidc-client/commit/5085e05beb4c7a88fad1df61e11213b68672e7d9) - fix(sevice-worker): add URL normalization for getCurrentDatabaseDomain endpoints comparison (release) (#1196), 2023-11-17 by *meesvandongen* -- [77361cf](https://github.com/AxaFrance/oidc-client/commit/77361cfb1c8f2f0eed9c38ba15e32f3bbe0f4095) - [skip ci] Update version package.json, 2023-11-13 by *GitHub* ## v7.9.1 - [7e0cb29](https://github.com/AxaFrance/oidc-client/commit/7e0cb297587e314451321c3ddd1b0e5f7e7e6c0e) - fix(logout): okta tokens null (release) (#1188), 2023-11-13 by *Guillaume Chervet* -- [2413503](https://github.com/AxaFrance/oidc-client/commit/24135038510ada4b9eecffae1494693ef9347a07) - [skip ci] Update version package.json, 2023-11-12 by *GitHub* ## v7.9.0 @@ -53,19 +44,16 @@ - [c54c7b9](https://github.com/AxaFrance/oidc-client/commit/c54c7b9f3447c0474b460649eb315c13f5f8b1da) - fix(service-worker): Reclaming all clients from SW after hard reload (#1149), 2023-11-12 by *VladimirPlatonenko* - [dbcfec4](https://github.com/AxaFrance/oidc-client/commit/dbcfec46798b2137154dd33f31bf842f6b7730b8) - feat(oidc-client): enhance service worker flexibility (alpha) (#1180), 2023-11-12 by *Guillaume Chervet* - [9549b9a](https://github.com/AxaFrance/oidc-client/commit/9549b9ae613d3cf357cb4b760fc8cc9e0af80c44) - doc(oidc-client): typo in method name, 2023-11-07 by *Guillaume Chervet* -- [1a12a19](https://github.com/AxaFrance/oidc-client/commit/1a12a19a54924f0941a960b47fca8b4c169256a0) - [skip ci] Update version package.json, 2023-11-06 by *GitHub* ## v7.8.0 - [1684abb](https://github.com/AxaFrance/oidc-client/commit/1684abba7d982ecbd2f30610eb140e2ce4549814) - feat(oidc-client): move fetch to oidc-client (#1175) (release), 2023-11-06 by *Guillaume Chervet* -- [b4cee5a](https://github.com/AxaFrance/oidc-client/commit/b4cee5aec8365ba2b000742001c717f1d543011b) - [skip ci] Update version package.json, 2023-10-29 by *GitHub* ## v7.7.3 - [ac7f37b](https://github.com/AxaFrance/oidc-client/commit/ac7f37be28883edbe539eff02d0a6a054b2aab14) - build(npm): bump msw from 1.2.2 to 2.0.0 (#1165), 2023-10-29 by *dependabot[bot]* -- [1b4bc07](https://github.com/AxaFrance/oidc-client/commit/1b4bc0782c39a8f797de224f74073d4860672cb6) - [skip ci] Update version package.json, 2023-10-25 by *GitHub* ## v7.7.2 @@ -76,33 +64,28 @@ ## v7.7.1 - [07d266b](https://github.com/AxaFrance/oidc-client/commit/07d266b32b275038176a407036a338624d2bed47) - build(npm): bump next from 13.4.12 to 13.5.6 (#1158), 2023-10-25 by *dependabot[bot]* -- [03a6570](https://github.com/AxaFrance/oidc-client/commit/03a6570bb09a98686e67f17b57ee7f7b1849db2c) - [skip ci] Update version package.json, 2023-10-19 by *GitHub* ## v7.7.0 - [ec5ba27](https://github.com/AxaFrance/oidc-client/commit/ec5ba27f463c513e4d476621f684d0dcccd34470) - feat(oidc): make location injectable (release) (#1155), 2023-10-19 by *Guillaume Chervet* - [8f24b11](https://github.com/AxaFrance/oidc-client/commit/8f24b119613fef5d7214826528bdb04c931a1986) - doc(faq): Update FAQ.md (#1151), 2023-10-13 by *Mateusz Popielarz* -- [4f9b3c0](https://github.com/AxaFrance/oidc-client/commit/4f9b3c0b767d4b955223febcc833e6ff47e997ef) - [skip ci] Update version package.json, 2023-09-21 by *GitHub* ## v7.6.0 - [3e0e554](https://github.com/AxaFrance/oidc-client/commit/3e0e5546ec756b4a9ddad695e4e2368c5721175f) - feat(service-worker): add to trusted type (#1142) (release), 2023-09-21 by *Guillaume Chervet* -- [79b3889](https://github.com/AxaFrance/oidc-client/commit/79b3889a3441b5bf95f980db7c2ae6aed60da8da) - [skip ci] Update version package.json, 2023-09-20 by *GitHub* ## v7.5.1 - [60d9c4e](https://github.com/AxaFrance/oidc-client/commit/60d9c4e68622f81ecceaf480de21d4646ae909f1) - fix(oidc): clean link with service worker (#1141) (release), 2023-09-20 by *Guillaume Chervet* -- [2e5b856](https://github.com/AxaFrance/oidc-client/commit/2e5b85670e7929a0b216fe695999a8cddcd2d3a8) - [skip ci] Update version package.json, 2023-09-19 by *GitHub* ## v7.5.0 - [ff7ac6a](https://github.com/AxaFrance/oidc-client/commit/ff7ac6ae7defbd84067b4084222430ef07f15713) - feat(oidc): add dpop (#1139) (release), 2023-09-19 by *Guillaume Chervet* - [1980813](https://github.com/AxaFrance/oidc-client/commit/1980813234a63e13353b8e5623982e714b42ac12) - feat(demo): hack iframe unregister serviceworker (#1137), 2023-09-14 by *Guillaume Chervet* -- [8165fab](https://github.com/AxaFrance/oidc-client/commit/8165fab52b89ce20946378c5173783ef06f014ef) - [skip ci] Update version package.json, 2023-09-07 by *GitHub* ## v7.4.1 @@ -114,31 +97,26 @@ ## v7.4.0 - [d0dfde4](https://github.com/AxaFrance/oidc-client/commit/d0dfde47e27125248e5af7e9d6c12bfbe1e3ec60) - feat(oidc+serviceworker): increase security preventing sw unresgistration during silent signin (#1134) (release), 2023-09-05 by *Guillaume Chervet* -- [9a05b9f](https://github.com/AxaFrance/oidc-client/commit/9a05b9f13a7d429f044bf84d57af64d356999955) - [skip ci] Update version package.json, 2023-08-25 by *GitHub* ## v7.3.4 - [6d371ff](https://github.com/AxaFrance/oidc-client/commit/6d371ff1ce909ae40ef2f44a145bdcd322ca9d90) - fix(oidc-service-worker): gracefull timeout on firefox (release) (#1132), 2023-08-25 by *Guillaume Chervet* -- [e004e32](https://github.com/AxaFrance/oidc-client/commit/e004e32dbafd06c766429903fe6cdd74d37b9bd2) - [skip ci] Update version package.json, 2023-08-15 by *GitHub* ## v7.3.3 - [e4e7409](https://github.com/AxaFrance/oidc-client/commit/e4e74091a8a6fadb64429dcccbd43331af62f920) - fix(oidc): parent instead of top for iframe allow app inside iframe (#1130) (release), 2023-08-15 by *Guillaume Chervet* -- [28e21ac](https://github.com/AxaFrance/oidc-client/commit/28e21acd8fbda1a7190917a80239b595fa5f2f36) - [skip ci] Update version package.json, 2023-08-15 by *GitHub* ## v7.3.2 - [790ec46](https://github.com/AxaFrance/oidc-client/commit/790ec468355967462b9bfce40196e9336efed0d7) - fix(oidc): allow service worker to chrome 70 (release), 2023-08-15 by *Guillaume Chervet* -- [bb7de00](https://github.com/AxaFrance/oidc-client/commit/bb7de0060ea81fa4206a5696a5479100f0c64898) - [skip ci] Update version package.json, 2023-08-08 by *GitHub* ## v7.3.1 - [c2564f9](https://github.com/AxaFrance/oidc-client/commit/c2564f9ef6de2122962cfb4a8e0f9195aa688d84) - fix(all): copy of service worker files (release), 2023-08-08 by *Guillaume Chervet* -- [0bc3398](https://github.com/AxaFrance/oidc-client/commit/0bc3398f09fd3bf6dff5a6443d5d42f0a26454bf) - [skip ci] Update version package.json, 2023-08-08 by *GitHub* ## v7.3.0 @@ -146,14 +124,12 @@ - [282c0f7](https://github.com/AxaFrance/oidc-client/commit/282c0f72ab7741f24468b2278466eb307d1fa0ce) - feat(oidc+serviceworker): add property setAccessTokenToNavigateRequests + service_worker_convert_all_requests_to_cors moved to TrustedDomains.js (#1123) (release), 2023-08-08 by *Guillaume Chervet* - [c94163d](https://github.com/AxaFrance/oidc-client/commit/c94163d02f5947761d00bd5e18df6749106d6f3d) - doc(FAQ): add "Does Service Worker is mandatory ?", 2023-08-08 by *Guillaume Chervet* - [7ffcde4](https://github.com/AxaFrance/oidc-client/commit/7ffcde465f5f4cbba4b39e0da43dee34d4ec37d9) - doc(readme): update images urls, 2023-08-08 by *Guillaume Chervet* -- [32b2861](https://github.com/AxaFrance/oidc-client/commit/32b286181436129e6d15e0e166108d1f0d4d5641) - [skip ci] Update version package.json, 2023-08-07 by *GitHub* ## v7.2.2 - [e0cad22](https://github.com/AxaFrance/oidc-client/commit/e0cad22179fb1d9e641fbbf14b879ea2d2d78c3a) - fix(faq): update faq (release), 2023-08-07 by *Guillaume Chervet* - [a5d2e58](https://github.com/AxaFrance/oidc-client/commit/a5d2e5892cf456225618f55602c87c654cdad62c) - fix(oidc+serviceworker): add more log detail on token validation, 2023-08-07 by *Guillaume Chervet* -- [ad3a73b](https://github.com/AxaFrance/oidc-client/commit/ad3a73b9a65c942e2f3aee61516581613844a5ec) - [skip ci] Update version package.json, 2023-08-07 by *GitHub* ## v7.2.1 @@ -161,32 +137,27 @@ - [0e52c56](https://github.com/AxaFrance/oidc-client/commit/0e52c56e1d747aa17ee2bf3005893a8d67a03ab3) - fix(package.json): update new repository link (release), 2023-08-07 by *Guillaume Chervet* - [3d0aaff](https://github.com/AxaFrance/oidc-client/commit/3d0aaff74fd1b14afe2aa3ec2b8b3c028dd3fe75) - fix(oidc): add more detail on state error, 2023-08-04 by *Guillaume Chervet* - [faa0da2](https://github.com/AxaFrance/oidc-client/commit/faa0da2235239a0b12e82a070b3f6e2c30572bfa) - fix(readme): some path was broken, 2023-08-04 by *Guillaume Chervet* -- [3713dd6](https://github.com/AxaFrance/oidc-client/commit/3713dd65a6be6ff4a42b1507cd94e904445efb00) - [skip ci] Update version package.json, 2023-08-04 by *GitHub* ## v7.2.0 - [60ea58b](https://github.com/AxaFrance/oidc-client/commit/60ea58b266c4173e3a92b8637d9abd09cca0ea1a) - feat(oidc-service-worker): copy become manual (#1120) (release), 2023-08-04 by *Guillaume Chervet* -- [c74edeb](https://github.com/AxaFrance/oidc-client/commit/c74edeb0380c726fb861f499ba3811fa7317d343) - [skip ci] Update version package.json, 2023-08-04 by *GitHub* ## v7.1.0 - [ae8a601](https://github.com/AxaFrance/oidc-client/commit/ae8a60130b4dacfe7a73f6e2262ca1238a07a509) - feat(oidc): update service worker from version (#1121) (release), 2023-08-04 by *Guillaume Chervet* -- [9f986c6](https://github.com/AxaFrance/oidc-client/commit/9f986c6b576c50b9d87d94e2fc5af0c7521c7bdf) - [skip ci] Update version package.json, 2023-08-03 by *GitHub* ## v7.0.1 - [cd97895](https://github.com/AxaFrance/oidc-client/commit/cd9789520090b27ea905401be6d03fd87f817f76) - fix(oidc): expire_in in string instead of number (#1118) (release), 2023-08-03 by *Guillaume Chervet* -- [e74c0df](https://github.com/AxaFrance/oidc-client/commit/e74c0df57140ca2bd3c7fd631eef39661b1b2b8c) - [skip ci] Update version package.json, 2023-08-01 by *GitHub* ## v7.0.0 - [9567873](https://github.com/AxaFrance/oidc-client/commit/95678734c0495f80628f99ad3aa284a3014f8bbc) - feat(oidc): rename repository oidc-client (#1115) (release), 2023-08-01 by *Guillaume Chervet* - [ff61e5d](https://github.com/AxaFrance/oidc-client/commit/ff61e5d5e3387888ce18ec8e99fde0044009f481) - fix(demo): google new link and add navigate button, 2023-07-31 by *Guillaume Chervet* -- [6e9e8bb](https://github.com/AxaFrance/oidc-client/commit/6e9e8bb94db0c52f684ea4c42a81c69f59dd3f2c) - [skip ci] Update version package.json, 2023-07-28 by *GitHub* - [0d8bc06](https://github.com/AxaFrance/oidc-client/commit/0d8bc0626be0d5d14edca83dacb7367f57d4bb6d) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* @@ -224,19 +195,16 @@ - [7eac9e5](https://github.com/AxaFrance/oidc-client/commit/7eac9e5c10175ae6850a72e21e11bac568a01720) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* - [9f25be7](https://github.com/AxaFrance/oidc-client/commit/9f25be794ff6b08d8ca30cc5f27dff554136d163) - refactor(lint): Enable linting on examples, fix lint warnings. (#1111), 2023-07-27 by *Jason Finch* - [762ca42](https://github.com/AxaFrance/oidc-client/commit/762ca423a2efe946d4213a3c482638a386a5b555) - ci(lint): Move eslint config to root. Add GH workflow to run lint. (#1109), 2023-07-27 by *Jason Finch* -- [6b5ba95](https://github.com/AxaFrance/oidc-client/commit/6b5ba95db3549c4cfd5ea0412c6f0de046256a57) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* ## v6.25.6 - [288ce99](https://github.com/AxaFrance/oidc-client/commit/288ce9937e6e1cb8c1b7c7f6909ebef8a48f12e5) - fix(react): ajust peerDependencies (release), 2023-07-24 by *Guillaume Chervet* -- [7c86bd7](https://github.com/AxaFrance/oidc-client/commit/7c86bd73d0e880a8ebbdfcad70ed5f2492cc0bc3) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* ## v6.25.5 - [8786e85](https://github.com/AxaFrance/oidc-client/commit/8786e85190dbc23de4311381b1c59f08673b0436) - fix(ci): github release (release), 2023-07-24 by *Guillaume Chervet* -- [34ac877](https://github.com/AxaFrance/oidc-client/commit/34ac877f2a82c9e048896bec8d077274216b8619) - [skip ci] Update version package.json, 2023-07-24 by *GitHub* ## v6.25.4 @@ -250,38 +218,29 @@ ## v6.25.3 -- [e7aaa2f](https://github.com/AxaFrance/oidc-client/commit/e7aaa2f63614c1fc76f2e66e69877147aae37d8e) - [skip ci] Update version package.json, 2023-07-23 by *GitHub* - [aea4aea](https://github.com/AxaFrance/oidc-client/commit/aea4aea5fda1ef7c7ee6e43f8fc8efb2a0797a58) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* ## v6.25.2 -- [26b27a5](https://github.com/AxaFrance/oidc-client/commit/26b27a5d5242ce9bb47530fd48812f21b218c5be) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [612cf26](https://github.com/AxaFrance/oidc-client/commit/612cf26c1fb087c20f7207ae4e6281c2fe9d6a46) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* -- [c72ac31](https://github.com/AxaFrance/oidc-client/commit/c72ac31f723d26737f0223a4aefb84c0c9da7045) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [5472e0a](https://github.com/AxaFrance/oidc-client/commit/5472e0a9e510ba14c38bd205be39b732e877353a) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* -- [c2c8fd3](https://github.com/AxaFrance/oidc-client/commit/c2c8fd37dee118658bd0186ea18f8554fe4217f9) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [945043c](https://github.com/AxaFrance/oidc-client/commit/945043c39376611ba1e417e24d55607a5a4e861b) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* - [776f0c2](https://github.com/AxaFrance/oidc-client/commit/776f0c22446763d89cd10412c53c964f3dd2bb57) - fix sw package test (alpha), 2023-07-22 by *Guillaume Chervet* -- [41dd0c3](https://github.com/AxaFrance/oidc-client/commit/41dd0c3d5c03e7af05e849fd35d4bc4a13078826) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [b2ed839](https://github.com/AxaFrance/oidc-client/commit/b2ed8393b061d4da8bbb67003f7940aaa7b845d3) - fix package sw remove private (alpha), 2023-07-22 by *Guillaume Chervet* -- [edd5b3d](https://github.com/AxaFrance/oidc-client/commit/edd5b3dd1207ca1683ee0f492914fa514cd2b239) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [d3531a6](https://github.com/AxaFrance/oidc-client/commit/d3531a68b78d48e6150f71d22deba738a15391f3) - fix conflict (alpha), 2023-07-22 by *Guillaume Chervet* -- [852900f](https://github.com/AxaFrance/oidc-client/commit/852900fd1473ac8c07ad298a275430fa91d5fb02) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [8c3e0c9](https://github.com/AxaFrance/oidc-client/commit/8c3e0c99c2507d7a6e198db517fd120cb06f6ac7) - chore(ci): fix duplicated id (alpha), 2023-07-22 by *Guillaume Chervet* - [4ccbef0](https://github.com/AxaFrance/oidc-client/commit/4ccbef0417543bf2a7395788315298b873327e7a) - chore(ci): add serviceworker (alpha), 2023-07-22 by *Guillaume Chervet* ## v6.25.1 -- [b08f00b](https://github.com/AxaFrance/oidc-client/commit/b08f00bf3d4fa8f798ca812abf1a00f19308df84) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [cf3e31a](https://github.com/AxaFrance/oidc-client/commit/cf3e31af027d60626f1bff9a7c0951db115d11c3) - fix(react): update lock file (alpha), 2023-07-22 by *Guillaume Chervet* - [e02bc6e](https://github.com/AxaFrance/oidc-client/commit/e02bc6e77114f585e00f7d9d888db1d0a537be88) - chore(ci): fix numversion (alpha), 2023-07-22 by *Guillaume Chervet* ## v6.25.0 -- [1adff41](https://github.com/AxaFrance/oidc-client/commit/1adff41b96d4e3e44a63670f2e6d1de13e202c7a) - [skip ci] Update version package.json, 2023-07-22 by *GitHub* - [7ba2509](https://github.com/AxaFrance/oidc-client/commit/7ba2509271acefb6ff744fb07a464fd7f9c42064) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* - [4be9aed](https://github.com/AxaFrance/oidc-client/commit/4be9aedde3a81f11aac5f8dfdef4914ce2c0483b) - feat(workspace): Add workspaces to specify build order dependencies in packages. (#1004), 2023-07-22 by *Jason Finch* - [d337b8b](https://github.com/AxaFrance/oidc-client/commit/d337b8b574936b81a4a6de9d533076a9da3a848b) - chore(ci): add way to publish alpha, beta, release (beta) (#1099), 2023-07-20 by *Guillaume Chervet* @@ -289,7 +248,6 @@ ## v6.24.27 -- [2b50407](https://github.com/AxaFrance/oidc-client/commit/2b50407c39bd95fdbbfec2c5f59c7901c189d3ec) - [skip ci] Update version package.json, 2023-07-21 by *GitHub* - [e68b26b](https://github.com/AxaFrance/oidc-client/commit/e68b26be8ab30eef9aa46e5e4dd029fa5b3818c3) - test (beta), 2023-07-21 by *Guillaume Chervet* - [4e78bbb](https://github.com/AxaFrance/oidc-client/commit/4e78bbbc4fb6f6728e97ee7a0f517bf8eac72998) - Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* - [8b7eb9b](https://github.com/AxaFrance/oidc-client/commit/8b7eb9bfc29f242132e1cff4952a2342dd610b34) - fix(ci): Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 465ce90c3..7383c7c27 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.2", + "version": "7.12.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 11d3e1929..931f5321e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.2'; +export default '7.12.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b69db236d..e077eb11c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.2", + "version": "7.12.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 11d3e1929..931f5321e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.2'; +export default '7.12.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 1bd8eadc3..9ab255db7 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.2", + "version": "7.12.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 78119d2cf61306279804b480722ce1331168a827 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:34:49 +0000 Subject: [PATCH 089/565] [skip ci] Generate changelog to version 7.12.3 --- CHANGELOG.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d33bd1b5c..43d9c200a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 7.12.3 + +- [59a9c46](https://github.com/AxaFrance/oidc-client/commit/59a9c468b4fa9eb9694b1f3921eb545daf1f58f8) - fix(ci): exclude author GitHub from changelog (release), 2023-11-29 by *Guillaume Chervet* + + ## v7.12.2 - [cd575e7](https://github.com/AxaFrance/oidc-client/commit/cd575e716f4fbcb1ba09a76a1530a3ae23f08599) - fix(ci): last clean and test (release), 2023-11-29 by *Guillaume Chervet* @@ -336,9 +341,3 @@ - [bdebcb0](https://github.com/AxaFrance/oidc-client/commit/bdebcb00841e592e87cab9a6bec9ae683fb30e32) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.12 - -- [35b7f96](https://github.com/AxaFrance/oidc-client/commit/35b7f9605aebfd93d7ef18fe20306b9e7ae53e4b) - Merge ca81becd76688d17bf0959908ffb194614fe29c4 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [ca81bec](https://github.com/AxaFrance/oidc-client/commit/ca81becd76688d17bf0959908ffb194614fe29c4) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - From 9373765eafb4ef8dcba904772d558ab5bb40f17c Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 21:36:04 +0100 Subject: [PATCH 090/565] fix(ci): remove duplicate --- .github/workflows/npm-publish.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index a61d52661..8f7fd0c4e 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -252,12 +252,6 @@ jobs: cat package.json working-directory: ./packages/react-oidc - - name: Auto generate changelog - if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' - run: | - chmod +x ./bin/generate-changelog.sh - ./bin/generate-changelog.sh - - name: Commit and push if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' run: | From 59efae45029593579d2dc377093777f8ef940537 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:36:41 +0100 Subject: [PATCH 091/565] build(npm): bump eslint from 8.46.0 to 8.54.0 (#1219) Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.54.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.46.0...v8.54.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 270 ++++++++++++++++++++++++------------------------- 2 files changed, 132 insertions(+), 140 deletions(-) diff --git a/package.json b/package.json index bd198e384..5e8d12e6f 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", - "eslint": "^8.45.0", + "eslint": "^8.54.0", "eslint-config-prettier": "^8.8.0", "eslint-define-config": "^1.21.0", "eslint-plugin-import": "^2.27.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f790c5fd..ed1f21c37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,49 +10,49 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^6.0.0 - version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6) + version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: ^6.0.0 - version: 6.2.0(eslint@8.46.0)(typescript@5.1.6) + version: 6.2.0(eslint@8.54.0)(typescript@5.1.6) eslint: - specifier: ^8.45.0 - version: 8.46.0 + specifier: ^8.54.0 + version: 8.54.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.9.0(eslint@8.46.0) + version: 8.9.0(eslint@8.54.0) eslint-define-config: specifier: ^1.21.0 version: 1.22.0 eslint-plugin-import: specifier: ^2.27.5 - version: 2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0) + version: 2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0) eslint-plugin-jsx-a11y: specifier: ^6.7.1 - version: 6.7.1(eslint@8.46.0) + version: 6.7.1(eslint@8.54.0) eslint-plugin-n: specifier: ^16.0.1 - version: 16.0.1(eslint@8.46.0) + version: 16.0.1(eslint@8.54.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) + version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.54.0)(prettier@3.0.0) eslint-plugin-react: specifier: ^7.32.2 - version: 7.33.1(eslint@8.46.0) + version: 7.33.1(eslint@8.54.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.46.0) + version: 4.6.0(eslint@8.54.0) eslint-plugin-regexp: specifier: ^1.15.0 - version: 1.15.0(eslint@8.46.0) + version: 1.15.0(eslint@8.54.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.46.0) + version: 10.0.0(eslint@8.54.0) eslint-plugin-testing-library: specifier: ^5.11.0 - version: 5.11.0(eslint@8.46.0)(typescript@5.1.6) + version: 5.11.0(eslint@8.54.0)(typescript@5.1.6) prettier: specifier: ^3.0.0 version: 3.0.0 @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 13.4.12(react-dom@18.2.0)(react@18.2.0) + version: 14.0.3(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -994,14 +994,14 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.46.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.54.0 + eslint-visitor-keys: 3.4.3 dev: true /@eslint-community/regexpp@4.6.2: @@ -1009,8 +1009,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.1: - resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -1026,16 +1026,16 @@ packages: - supports-color dev: true - /@eslint/js@8.46.0: - resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + /@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1047,8 +1047,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@isaacs/cliui@8.0.2: @@ -1169,12 +1169,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@13.4.12: - resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} + /@next/env@14.0.3: + resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} dev: false - /@next/swc-darwin-arm64@13.4.12: - resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} + /@next/swc-darwin-arm64@14.0.3: + resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1182,8 +1182,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.12: - resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} + /@next/swc-darwin-x64@14.0.3: + resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1191,8 +1191,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.12: - resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} + /@next/swc-linux-arm64-gnu@14.0.3: + resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1200,8 +1200,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.12: - resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} + /@next/swc-linux-arm64-musl@14.0.3: + resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1209,8 +1209,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.12: - resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} + /@next/swc-linux-x64-gnu@14.0.3: + resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1218,8 +1218,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.12: - resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} + /@next/swc-linux-x64-musl@14.0.3: + resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1227,8 +1227,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.12: - resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} + /@next/swc-win32-arm64-msvc@14.0.3: + resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1236,8 +1236,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.12: - resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} + /@next/swc-win32-ia32-msvc@14.0.3: + resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1245,8 +1245,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.12: - resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} + /@next/swc-win32-x64-msvc@14.0.3: + resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1365,8 +1365,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.1 dev: false @@ -1563,7 +1563,7 @@ packages: dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1575,13 +1575,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.54.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -1593,7 +1593,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6): + /@typescript-eslint/parser@6.2.0(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1608,7 +1608,7 @@ packages: '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.54.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -1630,7 +1630,7 @@ packages: '@typescript-eslint/visitor-keys': 6.2.0 dev: true - /@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@6.2.0(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1641,9 +1641,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.54.0 ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -1702,19 +1702,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - eslint: 8.46.0 + eslint: 8.54.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -1722,19 +1722,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): + /@typescript-eslint/utils@6.2.0(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 6.2.0 '@typescript-eslint/types': 6.2.0 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - eslint: 8.46.0 + eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1757,6 +1757,10 @@ packages: eslint-visitor-keys: 3.4.2 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vitejs/plugin-react@4.0.3(vite@4.4.7): resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -2906,13 +2910,13 @@ packages: engines: {node: '>=12'} dev: true - /eslint-config-prettier@8.9.0(eslint@8.46.0): + /eslint-config-prettier@8.9.0(eslint@8.54.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.54.0 dev: true /eslint-define-config@1.22.0: @@ -2930,7 +2934,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.54.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2951,26 +2955,26 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) debug: 3.2.7 - eslint: 8.46.0 + eslint: 8.54.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.46.0): + /eslint-plugin-es-x@7.2.0(eslint@8.54.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@eslint-community/regexpp': 4.6.2 - eslint: 8.46.0 + eslint: 8.54.0 dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -2980,16 +2984,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.46.0 + eslint: 8.54.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.54.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -3006,7 +3010,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.54.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -3021,7 +3025,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.46.0 + eslint: 8.54.0 has: 1.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -3031,16 +3035,16 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-n@16.0.1(eslint@8.46.0): + /eslint-plugin-n@16.0.1(eslint@8.54.0): resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) builtins: 5.0.1 - eslint: 8.46.0 - eslint-plugin-es-x: 7.2.0(eslint@8.46.0) + eslint: 8.54.0 + eslint-plugin-es-x: 7.2.0(eslint@8.54.0) ignore: 5.2.4 is-core-module: 2.12.1 minimatch: 3.1.2 @@ -3053,7 +3057,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.54.0)(prettier@3.0.0): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3067,23 +3071,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) + eslint: 8.54.0 + eslint-config-prettier: 8.9.0(eslint@8.54.0) prettier: 3.0.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.46.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.54.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.46.0 + eslint: 8.54.0 dev: true - /eslint-plugin-react@7.33.1(eslint@8.46.0): + /eslint-plugin-react@7.33.1(eslint@8.54.0): resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} engines: {node: '>=4'} peerDependencies: @@ -3093,7 +3097,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.46.0 + eslint: 8.54.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -3107,16 +3111,16 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.46.0): + /eslint-plugin-regexp@1.15.0(eslint@8.54.0): resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} engines: {node: ^12 || >=14} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@eslint-community/regexpp': 4.6.2 comment-parser: 1.3.1 - eslint: 8.46.0 + eslint: 8.54.0 grapheme-splitter: 1.0.4 jsdoctypeparser: 9.0.0 refa: 0.11.0 @@ -3124,22 +3128,22 @@ packages: scslre: 0.2.0 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.46.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.54.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.54.0 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.46.0)(typescript@5.1.6): + /eslint-plugin-testing-library@5.11.0(eslint@8.54.0)(typescript@5.1.6): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6) - eslint: 8.46.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.1.6) + eslint: 8.54.0 transitivePeerDependencies: - supports-color - typescript @@ -3166,18 +3170,24 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.46.0: - resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.1 - '@eslint/js': 8.46.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -3185,7 +3195,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -3218,7 +3228,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true /esquery@1.5.0: @@ -4505,44 +4515,40 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@13.4.12(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} - engines: {node: '>=16.8.0'} + /next@14.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.12 - '@swc/helpers': 0.5.1 + '@next/env': 14.0.3 + '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001517 - postcss: 8.4.14 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 - zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.12 - '@next/swc-darwin-x64': 13.4.12 - '@next/swc-linux-arm64-gnu': 13.4.12 - '@next/swc-linux-arm64-musl': 13.4.12 - '@next/swc-linux-x64-gnu': 13.4.12 - '@next/swc-linux-x64-musl': 13.4.12 - '@next/swc-win32-arm64-msvc': 13.4.12 - '@next/swc-win32-ia32-msvc': 13.4.12 - '@next/swc-win32-x64-msvc': 13.4.12 + '@next/swc-darwin-arm64': 14.0.3 + '@next/swc-darwin-x64': 14.0.3 + '@next/swc-linux-arm64-gnu': 14.0.3 + '@next/swc-linux-arm64-musl': 14.0.3 + '@next/swc-linux-x64-gnu': 14.0.3 + '@next/swc-linux-x64-musl': 14.0.3 + '@next/swc-win32-arm64-msvc': 14.0.3 + '@next/swc-win32-ia32-msvc': 14.0.3 + '@next/swc-win32-x64-msvc': 14.0.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4913,15 +4919,6 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true - /postcss@8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - /postcss@8.4.27: resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} @@ -4938,7 +4935,6 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -6351,7 +6347,3 @@ packages: optionalDependencies: commander: 9.5.0 dev: true - - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - dev: false From bf53fa803a6414b99e1520154c11d66c4958e62b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:36:54 +0100 Subject: [PATCH 092/565] build(npm): bump tslib from 2.6.1 to 2.6.2 (#1218) Bumps [tslib](https://github.com/Microsoft/tslib) from 2.6.1 to 2.6.2. - [Release notes](https://github.com/Microsoft/tslib/releases) - [Commits](https://github.com/Microsoft/tslib/compare/v2.6.1...v2.6.2) --- updated-dependencies: - dependency-name: tslib dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5e8d12e6f..b810176c6 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-testing-library": "^5.11.0", "prettier": "^3.0.0", - "tslib": "^2.6.0", + "tslib": "^2.6.2", "tsx": "^3.12.7", "typescript": "^5.1.6", "vitest": "^0.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed1f21c37..618e530e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,8 +57,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 tslib: - specifier: ^2.6.0 - version: 2.6.1 + specifier: ^2.6.2 + version: 2.6.2 tsx: specifier: ^3.12.7 version: 3.12.7 @@ -1306,7 +1306,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /@remix-run/router@1.7.2: @@ -5620,7 +5620,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /test-exclude@6.0.0: @@ -5736,6 +5736,10 @@ packages: /tslib@2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} From 0cc3821e5a97216192006230fbdb7ca395aedb1c Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:39:41 +0000 Subject: [PATCH 093/565] [skip ci] Update to version 7.12.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 7383c7c27..2269bb493 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.3", + "version": "7.12.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 931f5321e..9c3d95ea1 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.3'; +export default '7.12.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e077eb11c..4f0c795a9 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.3", + "version": "7.12.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 931f5321e..9c3d95ea1 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.3'; +export default '7.12.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9ab255db7..b50761225 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.3", + "version": "7.12.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 399d09a9500f153ea926dcbd978576ff2360a3f7 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 29 Nov 2023 20:39:43 +0000 Subject: [PATCH 094/565] [skip ci] Generate changelog to version 7.12.5 --- CHANGELOG.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43d9c200a..448f85006 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ # Changelog -## 7.12.3 +## 7.12.5 + +- [bf53fa8](https://github.com/AxaFrance/oidc-client/commit/bf53fa803a6414b99e1520154c11d66c4958e62b) - build(npm): bump tslib from 2.6.1 to 2.6.2 (#1218), 2023-11-29 by *dependabot[bot]* + + +## v7.12.4 + +- [59efae4](https://github.com/AxaFrance/oidc-client/commit/59efae45029593579d2dc377093777f8ef940537) - build(npm): bump eslint from 8.46.0 to 8.54.0 (#1219), 2023-11-29 by *dependabot[bot]* +- [283e7d9](https://github.com/AxaFrance/oidc-client/commit/283e7d9e02dcd0795489c9c4d24b9abcbb0e4b39) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2023-11-29 by *Guillaume Chervet* +- [9373765](https://github.com/AxaFrance/oidc-client/commit/9373765eafb4ef8dcba904772d558ab5bb40f17c) - fix(ci): remove duplicate, 2023-11-29 by *Guillaume Chervet* + + +## v7.12.3 - [59a9c46](https://github.com/AxaFrance/oidc-client/commit/59a9c468b4fa9eb9694b1f3921eb545daf1f58f8) - fix(ci): exclude author GitHub from changelog (release), 2023-11-29 by *Guillaume Chervet* @@ -329,15 +341,3 @@ - [eae183a](https://github.com/AxaFrance/oidc-client/commit/eae183a91d6570b7ea23fe85ada9035dfcfbb83a) - ssssssssss, 2023-07-20 by *Guillaume Chervet* -## v6.24.14 - -- [f5ff779](https://github.com/AxaFrance/oidc-client/commit/f5ff779691943e5d6030b1bd387ffc8a302d3ce6) - Merge 69818e2f7a63cb3168e82e1d0e0d1db434db972a into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [69818e2](https://github.com/AxaFrance/oidc-client/commit/69818e2f7a63cb3168e82e1d0e0d1db434db972a) - fix(ct): test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.13 - -- [27ba555](https://github.com/AxaFrance/oidc-client/commit/27ba555288f614cf8da7b1be01f3936e1bc1a56e) - Merge bdebcb00841e592e87cab9a6bec9ae683fb30e32 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [bdebcb0](https://github.com/AxaFrance/oidc-client/commit/bdebcb00841e592e87cab9a6bec9ae683fb30e32) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - From a9cd4d25ef8d66bd12e5c0e921b9fd1bc4a137ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:39:56 +0100 Subject: [PATCH 095/565] build(npm): bump @testing-library/react from 13.3.0 to 14.1.2 (#1222) * build(npm): bump @types/node from 18.17.1 to 20.10.1 (#1217) * fix(ci): Update dependabot.yml to run monthly (#1212) * build(npm): bump @types/node from 18.17.1 to 20.10.1 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.17.1 to 20.10.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: Guillaume Chervet Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(npm): bump @types/react from 18.2.17 to 18.2.39 (#1215) * fix(ci): Update dependabot.yml to run monthly (#1212) * build(npm): bump @types/react from 18.2.17 to 18.2.39 Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.17 to 18.2.39. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: Guillaume Chervet Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(npm): bump @testing-library/react from 13.3.0 to 14.1.2 Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 13.3.0 to 14.1.2. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v13.3.0...v14.1.2) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Guillaume Chervet --- .github/dependabot.yml | 2 +- examples/oidc-client-demo/package.json | 2 +- examples/react-oidc-demo/package.json | 4 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 4 +- pnpm-lock.yaml | 109 +++++++++++-------------- 6 files changed, 53 insertions(+), 70 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3c6510cc1..334e5b309 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,6 +6,6 @@ updates: directory: '/' # Check the npm registry for updates every day (weekdays) schedule: - interval: 'daily' + interval: 'monthly' commit-message: prefix: 'build(npm): ' diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 582b02dfd..1cf30c3ee 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -30,7 +30,7 @@ ] }, "devDependencies": { - "@types/node": "^18.11.9", + "@types/node": "^20.10.1", "cross-env": "^7.0.3", "vite": "^4.4.4" } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 2afb93a35..2931272ae 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -25,9 +25,9 @@ }, "devDependencies": { "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "13.3.0", + "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.4.3", - "@types/react": "^18.2.15", + "@types/react": "^18.2.39", "@vitejs/plugin-react": "4.0.3", "@vitest/coverage-c8": "^0.33.0", "bootstrap": "^4.6.2", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 4f0c795a9..e9ff762a7 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@testing-library/dom": "^9.3.3", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "13.3.0", + "@testing-library/react": "14.1.2", "@vitest/coverage-v8": "^0.33.0", "base64-js": "^1.5.1", "cpy": "^10.1.0", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b50761225..c122e84bd 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -49,9 +49,9 @@ }, "devDependencies": { "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "13.3.0", + "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.4.3", - "@types/react": "^18.2.15", + "@types/react": "^18.2.39", "@vitejs/plugin-react": "4.0.3", "@vitest/coverage-v8": "^0.33.0", "cpy": "^10.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 618e530e0..845ccc160 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -106,14 +106,14 @@ importers: version: 3.4.0 devDependencies: '@types/node': - specifier: ^18.11.9 - version: 18.17.1 + specifier: ^20.10.1 + version: 20.10.1 cross-env: specifier: ^7.0.3 version: 7.0.3 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@18.17.1) + version: 4.4.7(@types/node@20.10.1) examples/react-oidc-demo: dependencies: @@ -134,14 +134,14 @@ importers: specifier: 5.16.5 version: 5.16.5 '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.2 + version: 14.1.2(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.4.3 version: 14.4.3(@testing-library/dom@9.3.3) '@types/react': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.39 + version: 18.2.39 '@vitejs/plugin-react': specifier: 4.0.3 version: 4.0.3(vite@4.4.7) @@ -168,7 +168,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@20.4.5) + version: 4.4.7 vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -189,8 +189,8 @@ importers: specifier: ^5.16.5 version: 5.17.0 '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.2 + version: 14.1.2(react-dom@18.2.0)(react@18.2.0) '@vitest/coverage-v8': specifier: ^0.33.0 version: 0.33.0(vitest@0.33.0) @@ -211,7 +211,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@20.4.5) + version: 4.4.7 vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -241,7 +241,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@20.4.5) + version: 4.4.7 vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -265,14 +265,14 @@ importers: specifier: 5.16.5 version: 5.16.5 '@testing-library/react': - specifier: 13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.2 + version: 14.1.2(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.4.3 version: 14.4.3(@testing-library/dom@9.3.3) '@types/react': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.39 + version: 18.2.39 '@vitejs/plugin-react': specifier: 4.0.3 version: 4.0.3(vite@4.4.7) @@ -308,7 +308,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.4 - version: 4.4.7(@types/node@20.4.5) + version: 4.4.7 vite-plugin-dts: specifier: ^3.3.0 version: 3.4.0(typescript@5.1.6)(vite@4.4.7) @@ -1368,23 +1368,9 @@ packages: /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: false - /@testing-library/dom@8.20.1: - resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} - engines: {node: '>=12'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/runtime': 7.22.6 - '@types/aria-query': 5.0.1 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - /@testing-library/dom@9.3.3: resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} @@ -1427,15 +1413,15 @@ packages: lodash: 4.17.21 redent: 3.0.0 - /@testing-library/react@13.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} - engines: {node: '>=12'} + /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} + engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.22.6 - '@testing-library/dom': 8.20.1 + '@testing-library/dom': 9.3.3 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1516,12 +1502,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.17.1: - resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} - dev: true - - /@types/node@20.4.5: - resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} + /@types/node@20.10.1: + resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} + dependencies: + undici-types: 5.26.5 dev: true /@types/normalize-package-data@2.4.1: @@ -1535,11 +1519,11 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.17 + '@types/react': 18.2.39 dev: true - /@types/react@18.2.17: - resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} + /@types/react@18.2.39: + resolution: {integrity: sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1771,7 +1755,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) react-refresh: 0.14.0 - vite: 4.4.7(@types/node@20.4.5) + vite: 4.4.7 transitivePeerDependencies: - supports-color dev: true @@ -5269,7 +5253,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: true /safe-array-concat@1.0.0: @@ -5733,12 +5717,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.6.1: - resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -5855,6 +5835,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -5919,7 +5903,7 @@ packages: engines: {node: '>= 0.10'} dev: true - /vite-node@0.33.0(@types/node@20.4.5): + /vite-node@0.33.0(@types/node@20.10.1): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -5929,7 +5913,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.7(@types/node@20.4.5) + vite: 4.4.7(@types/node@20.10.1) transitivePeerDependencies: - '@types/node' - less @@ -5957,7 +5941,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 - vite: 4.4.7(@types/node@20.4.5) + vite: 4.4.7 vue-tsc: 1.8.8(typescript@5.1.6) transitivePeerDependencies: - '@types/node' @@ -5965,7 +5949,7 @@ packages: - supports-color dev: true - /vite@4.4.7(@types/node@18.17.1): + /vite@4.4.7: resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -5993,15 +5977,14 @@ packages: terser: optional: true dependencies: - '@types/node': 18.17.1 esbuild: 0.18.17 - postcss: 8.4.27 + postcss: 8.4.31 rollup: 3.27.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vite@4.4.7(@types/node@20.4.5): + /vite@4.4.7(@types/node@20.10.1): resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6029,9 +6012,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.5 + '@types/node': 20.10.1 esbuild: 0.18.17 - postcss: 8.4.31 + postcss: 8.4.27 rollup: 3.27.0 optionalDependencies: fsevents: 2.3.2 @@ -6070,7 +6053,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.5 + '@types/node': 20.10.1 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 @@ -6090,8 +6073,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.7(@types/node@20.4.5) - vite-node: 0.33.0(@types/node@20.4.5) + vite: 4.4.7(@types/node@20.10.1) + vite-node: 0.33.0(@types/node@20.10.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 6027511a0c8d2112d370d45cf42f144874112f77 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 29 Nov 2023 21:54:46 +0100 Subject: [PATCH 096/565] doc(readme) Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e4316d072..7efd04620 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Works perfectly well with: npm install @axa-fr/oidc-client --save # To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public +node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -82,7 +82,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" }, ``` From d1480fbe2c0e275f17775768f83b70d9adf00ee1 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 30 Nov 2023 09:23:54 +0100 Subject: [PATCH 097/565] fix(all): dependencies update break the build (release) --- package.json | 22 +- packages/oidc-client/src/fetch.ts | 3 +- pnpm-lock.yaml | 1708 ++++++++++++++++++----------- readme.md | 4 +- 4 files changed, 1053 insertions(+), 684 deletions(-) diff --git a/package.json b/package.json index b810176c6..6d99483bb 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,26 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", + "@typescript-eslint/eslint-plugin": "6.13.1", + "@typescript-eslint/parser": "6.13.1", "eslint": "^8.54.0", "eslint-config-prettier": "^8.8.0", "eslint-define-config": "^1.21.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-n": "^16.0.1", + "eslint-plugin-import": "2.29.0", + "eslint-plugin-jsx-a11y": "6.8.0", + "eslint-plugin-n": "16.3.1", "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.32.2", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-regexp": "^1.15.0", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-testing-library": "^5.11.0", - "prettier": "^3.0.0", + "prettier": "3.1.0", "tslib": "^2.6.2", - "tsx": "^3.12.7", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "tsx": "4.6.1", + "typescript": "5.3.2", + "vitest": "0.34.6" }, "engines": { "node": "16.* || >= 18.0.0" diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts index 9e78f7948..1cdfcd6fe 100644 --- a/packages/oidc-client/src/fetch.ts +++ b/packages/oidc-client/src/fetch.ts @@ -1,7 +1,8 @@ import {Fetch} from "./types"; import {OidcClient} from "./oidcClient"; -export const fetchWithTokens = (fetch: Fetch, oidcClient: OidcClient | null) => async (...params: Parameters) => { +// @ts-ignore +export const fetchWithTokens = (fetch: Fetch, oidcClient: OidcClient | null) : Fetch => async (...params: Parameters) :Promise => { const [url, options, ...rest] = params; const optionTmp = options ? { ...options } : { method: 'GET' }; let headers = new Headers(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 845ccc160..0d6848641 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,38 +9,38 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0)(typescript@5.1.6) + specifier: 6.13.1 + version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.2.0(eslint@8.54.0)(typescript@5.1.6) + specifier: 6.13.1 + version: 6.13.1(eslint@8.54.0)(typescript@5.3.2) eslint: specifier: ^8.54.0 version: 8.54.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.9.0(eslint@8.54.0) + version: 8.10.0(eslint@8.54.0) eslint-define-config: specifier: ^1.21.0 - version: 1.22.0 + version: 1.24.1 eslint-plugin-import: - specifier: ^2.27.5 - version: 2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0) + specifier: 2.29.0 + version: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0) eslint-plugin-jsx-a11y: - specifier: ^6.7.1 - version: 6.7.1(eslint@8.54.0) + specifier: 6.8.0 + version: 6.8.0(eslint@8.54.0) eslint-plugin-n: - specifier: ^16.0.1 - version: 16.0.1(eslint@8.54.0) + specifier: 16.3.1 + version: 16.3.1(eslint@8.54.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.54.0)(prettier@3.0.0) + specifier: 5.0.1 + version: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@3.1.0) eslint-plugin-react: - specifier: ^7.32.2 - version: 7.33.1(eslint@8.54.0) + specifier: 7.33.2 + version: 7.33.2(eslint@8.54.0) eslint-plugin-react-hooks: specifier: ^4.6.0 version: 4.6.0(eslint@8.54.0) @@ -52,22 +52,22 @@ importers: version: 10.0.0(eslint@8.54.0) eslint-plugin-testing-library: specifier: ^5.11.0 - version: 5.11.0(eslint@8.54.0)(typescript@5.1.6) + version: 5.11.1(eslint@8.54.0)(typescript@5.3.2) prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: 3.1.0 + version: 3.1.0 tslib: specifier: ^2.6.2 version: 2.6.2 tsx: - specifier: ^3.12.7 - version: 3.12.7 + specifier: 4.6.1 + version: 4.6.1 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: 5.3.2 + version: 5.3.2 vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 0.34.6 + version: 0.34.6 examples/nextjs-demo: dependencies: @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.0.3(react-dom@18.2.0)(react@18.2.0) + version: 13.4.12(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -150,7 +150,7 @@ importers: version: 0.33.0(vitest@0.33.0) bootstrap: specifier: ^4.6.2 - version: 4.6.2(jquery@3.7.0)(popper.js@1.16.1) + version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) copyfiles: specifier: 2.4.1 version: 2.4.1 @@ -519,6 +519,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime@7.23.5: + resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -577,36 +583,6 @@ packages: statuses: 2.0.1 dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.6.2 - dev: true - - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - dependencies: - esbuild: 0.17.19 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.6.2 - dev: true - - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.17: resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} @@ -616,10 +592,10 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true @@ -634,10 +610,10 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm] os: [android] requiresBuild: true dev: true @@ -652,11 +628,11 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] requiresBuild: true dev: true optional: true @@ -670,10 +646,10 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: true @@ -688,11 +664,11 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] requiresBuild: true dev: true optional: true @@ -706,10 +682,10 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [freebsd] requiresBuild: true dev: true @@ -724,11 +700,11 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] requiresBuild: true dev: true optional: true @@ -742,10 +718,10 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true @@ -760,10 +736,10 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm] os: [linux] requiresBuild: true dev: true @@ -778,10 +754,10 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: true @@ -796,10 +772,10 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [loong64] os: [linux] requiresBuild: true dev: true @@ -814,10 +790,10 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] requiresBuild: true dev: true @@ -832,10 +808,10 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] requiresBuild: true dev: true @@ -850,10 +826,10 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [riscv64] os: [linux] requiresBuild: true dev: true @@ -868,10 +844,10 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} - cpu: [x64] + cpu: [s390x] os: [linux] requiresBuild: true dev: true @@ -886,11 +862,11 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] - os: [netbsd] + os: [linux] requiresBuild: true dev: true optional: true @@ -904,11 +880,11 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] - os: [openbsd] + os: [netbsd] requiresBuild: true dev: true optional: true @@ -922,11 +898,11 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] - os: [sunos] + os: [openbsd] requiresBuild: true dev: true optional: true @@ -940,11 +916,11 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] requiresBuild: true dev: true optional: true @@ -958,10 +934,10 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true dev: true @@ -976,10 +952,10 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true dev: true @@ -994,6 +970,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1004,8 +989,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1016,8 +1001,8 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 + globals: 13.23.0 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1068,8 +1053,8 @@ packages: engines: {node: '>=8'} dev: true - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 @@ -1131,7 +1116,7 @@ packages: '@rushstack/ts-command-line': 4.15.1 colors: 1.2.5 lodash: 4.17.21 - resolve: 1.22.3 + resolve: 1.22.8 semver: 7.5.4 source-map: 0.6.1 typescript: 5.0.4 @@ -1169,12 +1154,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.0.3: - resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} + /@next/env@13.4.12: + resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} dev: false - /@next/swc-darwin-arm64@14.0.3: - resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} + /@next/swc-darwin-arm64@13.4.12: + resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1182,8 +1167,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.3: - resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} + /@next/swc-darwin-x64@13.4.12: + resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1191,8 +1176,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.3: - resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} + /@next/swc-linux-arm64-gnu@13.4.12: + resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1200,8 +1185,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.3: - resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} + /@next/swc-linux-arm64-musl@13.4.12: + resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1209,8 +1194,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.3: - resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} + /@next/swc-linux-x64-gnu@13.4.12: + resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1218,8 +1203,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.3: - resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} + /@next/swc-linux-x64-musl@13.4.12: + resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1227,8 +1212,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.3: - resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} + /@next/swc-win32-arm64-msvc@13.4.12: + resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1236,8 +1221,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.3: - resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} + /@next/swc-win32-ia32-msvc@13.4.12: + resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1245,8 +1230,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.3: - resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} + /@next/swc-win32-x64-msvc@13.4.12: + resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1302,7 +1287,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 @@ -1340,7 +1325,7 @@ packages: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.3 + resolve: 1.22.8 semver: 7.5.4 z-schema: 5.0.5 dev: true @@ -1348,7 +1333,7 @@ packages: /@rushstack/rig-package@0.4.0: resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} dependencies: - resolve: 1.22.3 + resolve: 1.22.8 strip-json-comments: 3.1.1 dev: true @@ -1365,8 +1350,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.2 dev: false @@ -1376,7 +1361,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.22.5 - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.5 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -1461,7 +1446,17 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.11 + dev: true + + /@types/chai-subset@1.3.5: + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + dependencies: + '@types/chai': 4.3.11 + dev: true + + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} dev: true /@types/chai@4.3.5: @@ -1490,8 +1485,8 @@ packages: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/json5@0.0.29: @@ -1534,8 +1529,8 @@ packages: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true /@types/statuses@2.0.3: @@ -1547,8 +1542,8 @@ packages: dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0)(typescript@5.1.6): - resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} + /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1558,27 +1553,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 eslint: 8.54.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.54.0)(typescript@5.1.6): - resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} + /@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1587,13 +1581,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 eslint: 8.54.0 - typescript: 5.1.6 + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true @@ -1606,16 +1600,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.2.0: - resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} + /@typescript-eslint/scope-manager@6.13.1: + resolution: {integrity: sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/visitor-keys': 6.13.1 dev: true - /@typescript-eslint/type-utils@6.2.0(eslint@8.54.0)(typescript@5.1.6): - resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} + /@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1624,12 +1618,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) debug: 4.3.4 eslint: 8.54.0 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true @@ -1639,12 +1633,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.2.0: - resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} + /@typescript-eslint/types@6.13.1: + resolution: {integrity: sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.2): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1659,14 +1653,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6): - resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} + /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.2): + resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1674,30 +1668,30 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.3.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2) eslint: 8.54.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -1706,18 +1700,18 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.2.0(eslint@8.54.0)(typescript@5.1.6): - resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} + /@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: @@ -1730,15 +1724,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.2.0: - resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} + /@typescript-eslint/visitor-keys@6.13.1: + resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.0 - eslint-visitor-keys: 3.4.2 + '@typescript-eslint/types': 6.13.1 + eslint-visitor-keys: 3.4.3 dev: true /@ungap/structured-clone@1.2.0: @@ -1799,7 +1793,15 @@ packages: dependencies: '@vitest/spy': 0.33.0 '@vitest/utils': 0.33.0 - chai: 4.3.7 + chai: 4.3.10 + dev: true + + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + dependencies: + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true /@vitest/runner@0.33.0: @@ -1810,26 +1812,56 @@ packages: pathe: 1.1.1 dev: true + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + dependencies: + '@vitest/utils': 0.34.6 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.2 + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + dependencies: + magic-string: 0.30.5 pathe: 1.1.1 - pretty-format: 29.6.2 + pretty-format: 29.7.0 dev: true /@vitest/spy@0.33.0: resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 + dev: true + + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + dependencies: + tinyspy: 2.2.0 dev: true /@vitest/utils@0.33.0: resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} dependencies: - diff-sequences: 29.4.3 - loupe: 2.3.6 - pretty-format: 29.6.2 + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true /@volar/language-core@1.10.0: @@ -1908,12 +1940,12 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.2 dev: true /acorn-walk@8.2.0: @@ -1921,12 +1953,23 @@ packages: engines: {node: '>=0.4.0'} dev: true + /acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -2021,17 +2064,17 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 is-array-buffer: 3.0.2 - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-string: 1.0.7 dev: true @@ -2040,55 +2083,56 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.2: - resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - define-properties: 1.2.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 dev: true @@ -2107,8 +2151,14 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 dev: true /asynckit@0.4.0: @@ -2119,8 +2169,8 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} dev: true @@ -2137,8 +2187,8 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} dev: true @@ -2155,13 +2205,13 @@ packages: readable-stream: 3.6.2 dev: true - /bootstrap@4.6.2(jquery@3.7.0)(popper.js@1.16.1): + /bootstrap@4.6.2(jquery@3.7.1)(popper.js@1.16.1): resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} peerDependencies: jquery: 1.9.1 - 3 popper.js: ^1.16.1 dependencies: - jquery: 3.7.0 + jquery: 3.7.1 popper.js: 1.16.1 dev: true @@ -2169,7 +2219,7 @@ packages: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} dependencies: - big-integer: 1.6.51 + big-integer: 1.6.52 dev: true /brace-expansion@1.1.11: @@ -2197,16 +2247,12 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001517 + caniuse-lite: 1.0.30001565 electron-to-chromium: 1.4.477 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2214,6 +2260,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: @@ -2258,11 +2309,12 @@ packages: engines: {node: '>=8'} dev: true - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2284,18 +2336,31 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + /caniuse-lite@1.0.30001565: + resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} + + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 + get-func-name: 2.0.2 + loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -2326,8 +2391,10 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /chokidar@3.5.3: @@ -2342,7 +2409,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /clean-stack@4.2.0: @@ -2431,8 +2498,8 @@ packages: dev: true optional: true - /comment-parser@1.3.1: - resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} dev: true @@ -2599,9 +2666,9 @@ packages: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.5 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -2611,11 +2678,11 @@ packages: object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2645,16 +2712,25 @@ packages: clone: 1.0.4 dev: true + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - has-property-descriptors: 1.0.0 + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 /delayed-stream@1.0.0: @@ -2670,8 +2746,8 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -2733,26 +2809,26 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 + hasown: 2.0.0 + internal-slot: 1.0.6 is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 @@ -2761,28 +2837,28 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.0 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 dev: true /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -2791,19 +2867,38 @@ packages: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 + get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 + hasown: 2.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - has: 1.0.3 + hasown: 2.0.0 dev: true /es-to-primitive@1.2.1: @@ -2815,36 +2910,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - dev: true - /esbuild@0.18.17: resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} @@ -2875,6 +2940,36 @@ packages: '@esbuild/win32-x64': 0.18.17 dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -2894,8 +2989,17 @@ packages: engines: {node: '>=12'} dev: true - /eslint-config-prettier@8.9.0(eslint@8.54.0): - resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} + /eslint-compat-utils@0.1.2(eslint@8.54.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.54.0 + dev: true + + /eslint-config-prettier@8.10.0(eslint@8.54.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -2903,22 +3007,22 @@ packages: eslint: 8.54.0 dev: true - /eslint-define-config@1.22.0: - resolution: {integrity: sha512-pckNJppFwC4AX+AGK63aa4sX5BluPwWwHES3fq/ER0jDR2U2czwlngg38B4EQ2ibvofufc+R5QfmdPKI6+74vQ==} - engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.0.0', pnpm: '>= 8.6.0'} + /eslint-define-config@1.24.1: + resolution: {integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.3 + is-core-module: 2.13.1 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.54.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2939,27 +3043,28 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) debug: 3.2.7 eslint: 8.54.0 - eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.54.0): - resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + /eslint-plugin-es-x@7.4.0(eslint@8.54.0): + resolution: {integrity: sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 eslint: 8.54.0 + eslint-compat-utils: 0.1.2(eslint@8.54.0) dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.54.0): - resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2968,24 +3073,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.2.0(eslint@8.54.0)(typescript@5.1.6) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.54.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.7)(eslint@8.54.0) - has: 1.0.3 - is-core-module: 2.12.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0) + hasown: 2.0.0 + is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 - object.values: 1.1.6 - resolve: 1.22.3 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -2994,33 +3098,33 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.54.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.54.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.5 aria-query: 5.3.0 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - ast-types-flow: 0.0.7 - axe-core: 4.7.2 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 eslint: 8.54.0 - has: 1.0.3 + hasown: 2.0.0 jsx-ast-utils: 3.3.5 - language-tags: 1.0.5 + language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 6.3.1 + object.entries: 1.1.7 + object.fromentries: 2.0.7 dev: true - /eslint-plugin-n@16.0.1(eslint@8.54.0): - resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} + /eslint-plugin-n@16.3.1(eslint@8.54.0): + resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' @@ -3028,11 +3132,13 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) builtins: 5.0.1 eslint: 8.54.0 - eslint-plugin-es-x: 7.2.0(eslint@8.54.0) - ignore: 5.2.4 - is-core-module: 2.12.1 + eslint-plugin-es-x: 7.4.0(eslint@8.54.0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 minimatch: 3.1.2 - resolve: 1.22.2 + resolve: 1.22.8 semver: 7.5.4 dev: true @@ -3041,8 +3147,8 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.54.0)(prettier@3.0.0): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@3.1.0): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -3056,8 +3162,8 @@ packages: optional: true dependencies: eslint: 8.54.0 - eslint-config-prettier: 8.9.0(eslint@8.54.0) - prettier: 3.0.0 + eslint-config-prettier: 8.10.0(eslint@8.54.0) + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -3071,28 +3177,29 @@ packages: eslint: 8.54.0 dev: true - /eslint-plugin-react@7.33.1(eslint@8.54.0): - resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} + /eslint-plugin-react@7.33.2(eslint@8.54.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 eslint: 8.54.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.10 dev: true /eslint-plugin-regexp@1.15.0(eslint@8.54.0): @@ -3102,8 +3209,8 @@ packages: eslint: '>=6.0.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.6.2 - comment-parser: 1.3.1 + '@eslint-community/regexpp': 4.10.0 + comment-parser: 1.4.1 eslint: 8.54.0 grapheme-splitter: 1.0.4 jsdoctypeparser: 9.0.0 @@ -3120,13 +3227,13 @@ packages: eslint: 8.54.0 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.54.0)(typescript@5.1.6): - resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} + /eslint-plugin-testing-library@5.11.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.3.2) eslint: 8.54.0 transitivePeerDependencies: - supports-color @@ -3149,11 +3256,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3165,7 +3267,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.3 '@eslint/js': 8.54.0 '@humanwhocodes/config-array': 0.11.13 @@ -3187,9 +3289,9 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -3210,8 +3312,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) eslint-visitor-keys: 3.4.3 dev: true @@ -3295,8 +3397,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3331,7 +3433,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.2.0 dev: true /fill-range@7.0.1: @@ -3357,16 +3459,17 @@ packages: path-exists: 5.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /for-each@0.3.3: @@ -3420,24 +3523,24 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 functions-have-names: 1.2.3 dev: true @@ -3454,17 +3557,17 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 + hasown: 2.0.0 /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -3475,12 +3578,12 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true - /get-tsconfig@4.6.2: - resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -3531,8 +3634,8 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -3542,7 +3645,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /globby@11.1.0: @@ -3551,8 +3654,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -3562,8 +3665,8 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -3571,7 +3674,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -3605,10 +3708,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -3624,11 +3727,11 @@ packages: dependencies: has-symbols: 1.0.3 - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -3713,8 +3816,8 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} dev: true @@ -3777,32 +3880,39 @@ packages: wrap-ansi: 7.0.0 dev: true - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 + get-intrinsic: 1.2.2 + hasown: 2.0.0 side-channel: 1.0.4 /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -3819,17 +3929,24 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.3 + hasown: 2.0.0 dev: true /is-date-object@1.0.5: @@ -3855,11 +3972,24 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3921,7 +4051,7 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 /is-set@2.0.2: @@ -3930,7 +4060,7 @@ packages: /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -3958,7 +4088,7 @@ packages: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -3971,14 +4101,14 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} @@ -4035,6 +4165,16 @@ packages: istanbul-lib-report: 3.0.1 dev: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + /jackspeak@2.2.2: resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} engines: {node: '>=14'} @@ -4070,8 +4210,8 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /jquery@3.7.0: - resolution: {integrity: sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==} + /jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} dev: true /js-levenshtein@1.1.6: @@ -4139,6 +4279,10 @@ packages: hasBin: true dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -4178,10 +4322,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 - object.values: 1.1.6 + object.values: 1.1.7 dev: true /junk@4.0.1: @@ -4189,6 +4333,12 @@ packages: engines: {node: '>=12.20'} dev: true + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -4202,8 +4352,9 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -4268,10 +4419,10 @@ packages: dependencies: js-tokens: 4.0.0 - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lru-cache@10.0.0: @@ -4308,6 +4459,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -4418,13 +4576,13 @@ packages: hasBin: true dev: true - /mlly@1.4.0: - resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.2 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.2.0 + ufo: 1.3.2 dev: true /ms@2.1.2: @@ -4482,15 +4640,11 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -4499,40 +4653,44 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.0.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} - engines: {node: '>=18.17.0'} + /next@13.4.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} + engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + fibers: + optional: true sass: optional: true dependencies: - '@next/env': 14.0.3 - '@swc/helpers': 0.5.2 + '@next/env': 13.4.12 + '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001517 - postcss: 8.4.31 + caniuse-lite: 1.0.30001565 + postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 + zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.3 - '@next/swc-darwin-x64': 14.0.3 - '@next/swc-linux-arm64-gnu': 14.0.3 - '@next/swc-linux-arm64-musl': 14.0.3 - '@next/swc-linux-x64-gnu': 14.0.3 - '@next/swc-linux-x64-musl': 14.0.3 - '@next/swc-win32-arm64-msvc': 14.0.3 - '@next/swc-win32-ia32-msvc': 14.0.3 - '@next/swc-win32-x64-msvc': 14.0.3 + '@next/swc-darwin-arm64': 13.4.12 + '@next/swc-darwin-x64': 13.4.12 + '@next/swc-linux-arm64-gnu': 13.4.12 + '@next/swc-linux-arm64-musl': 13.4.12 + '@next/swc-linux-x64-gnu': 13.4.12 + '@next/swc-linux-x64-musl': 13.4.12 + '@next/swc-win32-arm64-msvc': 13.4.12 + '@next/swc-win32-ia32-msvc': 13.4.12 + '@next/swc-win32-x64-msvc': 13.4.12 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4571,7 +4729,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.1 + is-core-module: 2.13.1 semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -4581,7 +4739,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: hosted-git-info: 6.1.1 - is-core-module: 2.12.1 + is-core-module: 2.13.1 semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -4614,15 +4772,15 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.5 + define-properties: 1.2.1 /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -4632,52 +4790,52 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.5 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /object.groupby@1.0.0: - resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true /once@1.4.0: @@ -4894,7 +5052,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.0 + mlly: 1.4.2 pathe: 1.1.1 dev: true @@ -4903,11 +5061,20 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true + /postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /postcss@8.4.27: resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -4916,9 +5083,10 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -4932,8 +5100,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -4946,11 +5114,11 @@ packages: ansi-styles: 5.2.0 react-is: 17.0.2 - /pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -4976,6 +5144,11 @@ packages: engines: {node: '>=6'} dev: true + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -5118,27 +5291,42 @@ packages: resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 + dev: true + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 dev: true /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regexp-ast-analysis@0.6.0: resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 refa: 0.11.0 dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -5161,33 +5349,24 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - dev: true - - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@1.22.3: - resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -5225,7 +5404,15 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 dev: true /rrweb-cssom@0.6.0: @@ -5256,12 +5443,12 @@ packages: tslib: 2.6.2 dev: true - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -5277,8 +5464,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-regex: 1.1.4 dev: true @@ -5301,7 +5488,7 @@ packages: /scslre@0.2.0: resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} dependencies: - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 refa: 0.11.0 regexp-ast-analysis: 0.6.0 dev: true @@ -5319,6 +5506,23 @@ packages: lru-cache: 6.0.0 dev: true + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5334,9 +5538,9 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -5365,13 +5569,6 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -5416,11 +5613,15 @@ packages: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true + /std-env@3.5.0: + resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} + dev: true + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.5 + internal-slot: 1.0.6 /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} @@ -5454,42 +5655,43 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 - internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true /string_decoder@0.10.31: @@ -5558,7 +5760,13 @@ packages: /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: - acorn: 8.10.0 + acorn: 8.11.2 + dev: true + + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.11.2 dev: true /styled-jsx@5.1.1(react@18.2.0): @@ -5635,13 +5843,22 @@ packages: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + /tinypool@0.6.0: resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -5687,7 +5904,7 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /trim-newlines@5.0.0: @@ -5695,13 +5912,13 @@ packages: engines: {node: '>=14.16'} dev: true - /ts-api-utils@1.0.1(typescript@5.1.6): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.3(typescript@5.3.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.3.2 dev: true /tsconfig-paths@3.14.2: @@ -5720,25 +5937,25 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.1.6): + /tsutils@3.21.0(typescript@5.3.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.6 + typescript: 5.3.2 dev: true - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + /tsx@4.6.1: + resolution: {integrity: sha512-OQ4TAPHXAPUo/NZAmmIybl0o8LFOTlycQxFepLBAp6EV87U88fOKYGCQI2viGAEOVU9UW/cgQcxcOMnfEKVY3Q==} + engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 + esbuild: 0.18.20 + get-tsconfig: 4.7.2 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /type-check@0.4.0: @@ -5777,8 +5994,8 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 dev: true @@ -5786,7 +6003,7 @@ packages: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -5797,7 +6014,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -5806,7 +6023,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 dev: true @@ -5822,14 +6039,20 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ufo@1.2.0: - resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} + /typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -5868,7 +6091,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /url-parse@1.5.10: @@ -5910,10 +6133,32 @@ packages: dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.0 + mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.7(@types/node@20.10.1) + vite: 4.5.0(@types/node@20.10.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-node@0.34.6(@types/node@20.10.1): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.5.0(@types/node@20.10.1) transitivePeerDependencies: - '@types/node' - less @@ -5981,7 +6226,7 @@ packages: postcss: 8.4.31 rollup: 3.27.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /vite@4.4.7(@types/node@20.10.1): @@ -6017,7 +6262,43 @@ packages: postcss: 8.4.27 rollup: 3.27.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + dev: true + + /vite@4.5.0(@types/node@20.10.1): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.10.1 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 dev: true /vitest@0.33.0(jsdom@22.1.0): @@ -6086,6 +6367,71 @@ packages: - terser dev: true + /vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.11 + '@types/chai-subset': 1.3.5 + '@types/node': 20.10.1 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + acorn: 8.11.2 + acorn-walk: 8.3.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.5.0 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.5.0(@types/node@20.10.1) + vite-node: 0.34.6(@types/node@20.10.1) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: @@ -6180,6 +6526,24 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: @@ -6188,12 +6552,12 @@ packages: is-weakmap: 2.0.1 is-weakset: 2.0.2 - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 @@ -6334,3 +6698,7 @@ packages: optionalDependencies: commander: 9.5.0 dev: true + + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false diff --git a/readme.md b/readme.md index e4316d072..7efd04620 100644 --- a/readme.md +++ b/readme.md @@ -71,7 +71,7 @@ Works perfectly well with: npm install @axa-fr/oidc-client --save # To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public +node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -82,7 +82,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" }, ``` From 3e7a6066d8a25b09edb9dca02374d2385732ac34 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 30 Nov 2023 08:27:52 +0000 Subject: [PATCH 098/565] [skip ci] Update to version 7.12.11 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 2269bb493..97561cedf 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.5", + "version": "7.12.11", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 9c3d95ea1..f75f36be0 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.5'; +export default '7.12.11'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e9ff762a7..faf9d640a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.5", + "version": "7.12.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 9c3d95ea1..f75f36be0 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.5'; +export default '7.12.11'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index c122e84bd..acaa15593 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.5", + "version": "7.12.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7f1c369ff4aa928340a34b480e79474e4303d6b6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 30 Nov 2023 08:27:54 +0000 Subject: [PATCH 099/565] [skip ci] Generate changelog to version 7.12.11 --- CHANGELOG.md | 72 ++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 448f85006..c7ae3730d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,38 @@ # Changelog -## 7.12.5 +## 7.12.11 + +- [d1480fb](https://github.com/AxaFrance/oidc-client/commit/d1480fbe2c0e275f17775768f83b70d9adf00ee1) - fix(all): dependencies update break the build (release), 2023-11-30 by *Guillaume Chervet* +- [6027511](https://github.com/AxaFrance/oidc-client/commit/6027511a0c8d2112d370d45cf42f144874112f77) - doc(readme) Update README.md, 2023-11-29 by *Guillaume Chervet* + + +## v7.12.10 + +- [a9cd4d2](https://github.com/AxaFrance/oidc-client/commit/a9cd4d25ef8d66bd12e5c0e921b9fd1bc4a137ba) - build(npm): bump @testing-library/react from 13.3.0 to 14.1.2 (#1222), 2023-11-29 by *dependabot[bot]* + + +## v7.12.9 + +- [2975d4e](https://github.com/AxaFrance/oidc-client/commit/2975d4e826c94eb7202ab7bba39687d1a7b6820b) - build(npm): bump eslint-plugin-import from 2.28.0 to 2.29.0 (#1221), 2023-11-29 by *dependabot[bot]* +- [f8be6ab](https://github.com/AxaFrance/oidc-client/commit/f8be6ab1096143c1a2eb35408669aef6df72d2d9) - doc(redame): fix service worker command to work with oidc-client standalone (#1200), 2023-11-29 by *Felix Roos* + + +## v7.12.8 + +- [53fd1f1](https://github.com/AxaFrance/oidc-client/commit/53fd1f1c093430f7e60eb43bc4a9a4fccebefe73) - build(npm): bump jsdom from 22.1.0 to 23.0.0 (#1220), 2023-11-29 by *dependabot[bot]* + + +## v7.12.7 + +- [7a53f73](https://github.com/AxaFrance/oidc-client/commit/7a53f73bf03b85be9248379f21def37ee34bd415) - build(npm): bump @types/react from 18.2.17 to 18.2.39 (#1215), 2023-11-29 by *dependabot[bot]* + + +## v7.12.6 + +- [55b318e](https://github.com/AxaFrance/oidc-client/commit/55b318e1c31fe6a7d1be106e99b14db35e4f4229) - build(npm): bump @types/node from 18.17.1 to 20.10.1 (#1217), 2023-11-29 by *dependabot[bot]* + + +## v7.12.5 - [bf53fa8](https://github.com/AxaFrance/oidc-client/commit/bf53fa803a6414b99e1520154c11d66c4958e62b) - build(npm): bump tslib from 2.6.1 to 2.6.2 (#1218), 2023-11-29 by *dependabot[bot]* @@ -303,41 +335,3 @@ - [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.20 - -- [9888924](https://github.com/AxaFrance/oidc-client/commit/9888924541c0754c9dd033972d76c3c854e6ed4d) - Merge 13656ac570b3896db17bcf38f2113ae4443dba17 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [13656ac](https://github.com/AxaFrance/oidc-client/commit/13656ac570b3896db17bcf38f2113ae4443dba17) - test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.19 - -- [3c64173](https://github.com/AxaFrance/oidc-client/commit/3c641732e7787729a07735408098fc103ca9c66e) - Merge fa8c6c964011739e9297a31ec186c2c657f205fd into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [fa8c6c9](https://github.com/AxaFrance/oidc-client/commit/fa8c6c964011739e9297a31ec186c2c657f205fd) - fix text (alpha), 2023-07-20 by *Guillaume Chervet* -- [391f15a](https://github.com/AxaFrance/oidc-client/commit/391f15ae075ad8e0960bfad39068928405f748cf) - test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.18 - -- [3334870](https://github.com/AxaFrance/oidc-client/commit/3334870d3a281bf049b09f655c6ce8e587af8d35) - Merge bc91071c5f9c3dae1f74fc0b314acc984e7aea71 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [bc91071](https://github.com/AxaFrance/oidc-client/commit/bc91071c5f9c3dae1f74fc0b314acc984e7aea71) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* -- [dc1a8bf](https://github.com/AxaFrance/oidc-client/commit/dc1a8bfd997684b00b41c05196c470a60ab85555) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.17 - -- [e7bb2bf](https://github.com/AxaFrance/oidc-client/commit/e7bb2bf34af537756219d876a209297488996987) - Merge 290ee618c032f20b583ff624571ca53b9cd7a0b6 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [290ee61](https://github.com/AxaFrance/oidc-client/commit/290ee618c032f20b583ff624571ca53b9cd7a0b6) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.16 - -- [0c914ec](https://github.com/AxaFrance/oidc-client/commit/0c914ec8c7d815bb4f314eb61342d31edc68b100) - Merge 7fd9f9bf1f9c383b6b08d498f4743e0f8cbc0b65 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [7fd9f9b](https://github.com/AxaFrance/oidc-client/commit/7fd9f9bf1f9c383b6b08d498f4743e0f8cbc0b65) - fix(ci): test (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.15 - -- [7c0e6c7](https://github.com/AxaFrance/oidc-client/commit/7c0e6c749b9c049accefbf29e36aa606db66ea87) - Merge eae183a91d6570b7ea23fe85ada9035dfcfbb83a into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [eae183a](https://github.com/AxaFrance/oidc-client/commit/eae183a91d6570b7ea23fe85ada9035dfcfbb83a) - ssssssssss, 2023-07-20 by *Guillaume Chervet* - - From b070c8848582ac6f52ab7cb00f16b0fe9f702b5f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 30 Nov 2023 12:23:20 +0100 Subject: [PATCH 100/565] fix(oidc-client): Update README.md (release) --- packages/oidc-client/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index c40527d68..a17f2b93f 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -55,7 +55,7 @@ The service worker catch **access_token** and **refresh_token** that will never npm install @axa-fr/oidc-client --save # To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public +node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public # If you have a "public" folder, the 2 files will be created : # ./public/OidcServiceWorker.js <-- will be updated at each "npm install" @@ -66,7 +66,7 @@ WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should a ```sh "scripts": { ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" }, ``` From 8b51642bbbe92a00781545a821c442300cf43bc6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 30 Nov 2023 11:26:00 +0000 Subject: [PATCH 101/565] [skip ci] Update to version 7.12.12 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 97561cedf..5ec2fffb9 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.11", + "version": "7.12.12", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f75f36be0..e1117b1d6 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.11'; +export default '7.12.12'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index faf9d640a..0a900c072 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.11", + "version": "7.12.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f75f36be0..e1117b1d6 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.11'; +export default '7.12.12'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index acaa15593..082bddf35 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.11", + "version": "7.12.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e51d30dc626fadb283747c180048f7620ba969d1 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 30 Nov 2023 11:26:02 +0000 Subject: [PATCH 102/565] [skip ci] Generate changelog to version 7.12.12 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ae3730d..cb566180e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.12.11 +## 7.12.12 + +- [b070c88](https://github.com/AxaFrance/oidc-client/commit/b070c8848582ac6f52ab7cb00f16b0fe9f702b5f) - fix(oidc-client): Update README.md (release), 2023-11-30 by *Guillaume Chervet* + + +## v7.12.11 - [d1480fb](https://github.com/AxaFrance/oidc-client/commit/d1480fbe2c0e275f17775768f83b70d9adf00ee1) - fix(all): dependencies update break the build (release), 2023-11-30 by *Guillaume Chervet* - [6027511](https://github.com/AxaFrance/oidc-client/commit/6027511a0c8d2112d370d45cf42f144874112f77) - doc(readme) Update README.md, 2023-11-29 by *Guillaume Chervet* @@ -329,9 +334,3 @@ - [db00519](https://github.com/AxaFrance/oidc-client/commit/db00519628cbd0a6f865539245321bcc85570f15) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.21 - -- [40ec599](https://github.com/AxaFrance/oidc-client/commit/40ec5994043d3a8c294e520e10d24bd5f1e8a02f) - Merge 822f9aba2b245872401fa15905e7e256e4adb879 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [822f9ab](https://github.com/AxaFrance/oidc-client/commit/822f9aba2b245872401fa15905e7e256e4adb879) - test (alpha), 2023-07-20 by *Guillaume Chervet* - - From 49c3d5e5487d714ccd97272e37fc34f2a7bd0ff6 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 4 Dec 2023 21:00:01 +0100 Subject: [PATCH 103/565] feat(oidc-client): allow to take control on service-worker registration (release) (#1229) --- packages/oidc-client/README.md | 5 +++-- packages/oidc-client/src/initWorker.ts | 13 +++++++++---- packages/oidc-client/src/oidc.ts | 6 +++--- packages/oidc-client/src/parseTokens.ts | 2 +- packages/oidc-client/src/types.ts | 2 ++ packages/oidc-client/src/user.ts | 2 +- packages/react-oidc/README.md | 1 + 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index a17f2b93f..b958d2bc0 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -194,9 +194,10 @@ const configuration = { refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds service_worker_relative_url: String, service_worker_keep_alive_path: String, // default is "/" - service_worker_only: Boolean, // default false - service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string + service_worker_only: Boolean, // default false, if true, the user will not be able to login if the service worker is not available on its browser + service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string, if return false, the service worker mode will not be used service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process + service_worker_register: (url: string) => Promise, // Optional, you can take the control of the service worker registration extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 229a4471f..959bc0a75 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -6,7 +6,7 @@ import {ILOidcLocation} from "./location"; let keepAliveServiceWorkerTimeoutId = null; let keepAliveController; -export const sleepAsync = (milliseconds) => { +export const sleepAsync = ({milliseconds}: { milliseconds: any }) => { return new Promise(resolve => timer.setTimeout(resolve, milliseconds)); }; @@ -16,7 +16,7 @@ const keepAlive = (service_worker_keep_alive_path='/') => { keepAliveController = new AbortController(); const promise = fetch(`${service_worker_keep_alive_path}OidcKeepAliveServiceWorker.json?minSleepSeconds=${minSleepSeconds}`, { signal: keepAliveController.signal }); promise.catch(error => { console.log(error); }); - sleepAsync(minSleepSeconds * 1000).then(keepAlive); + sleepAsync({milliseconds: minSleepSeconds * 1000}).then(keepAlive); } catch (error) { console.log(error); } }; @@ -41,7 +41,7 @@ export const defaultServiceWorkerUpdateRequireCallback = (location:ILOidcLocatio await registration.update(); const isSuccess = await registration.unregister(); console.log(`Service worker unregistering ${isSuccess}`) - await sleepAsync(2000); + await sleepAsync({milliseconds: 2000}); location.reload(); } @@ -72,7 +72,12 @@ export const initWorkerAsync = async(configuration, configurationName) => { return null; } - const registration = await navigator.serviceWorker.register(serviceWorkerRelativeUrl); + let registration = null; + if(configuration.register) { + registration = await configuration.service_worker_register(serviceWorkerRelativeUrl); + } else { + registration = await navigator.serviceWorker.register(serviceWorkerRelativeUrl); + } try { await navigator.serviceWorker.ready; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 0d53d90cf..b0e023a6a 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -352,18 +352,18 @@ Please checkout that you are using OIDC hook inside a 0) { - await sleepAsync(1000); + await sleepAsync({milliseconds: 1000}); numberTryOnline--; this.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is offline try ${numberTryOnline}` }); } let numberTryHidden = Math.floor(Math.random() * 15) + 10; while (document.hidden && numberTryHidden > 0) { - await sleepAsync(1000); + await sleepAsync({milliseconds: 1000}); numberTryHidden--; this.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is hidden try ${numberTryHidden}` }); } diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index c57816ca9..b1e6f83df 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -173,7 +173,7 @@ export const getValidTokenAsync = async (oidc: OidcToken, waitMs = 200, numberWa return null; } while (!isTokensValid(oidc.tokens) && numberWaitTemp > 0) { - await sleepAsync(waitMs); + await sleepAsync({milliseconds: waitMs}); numberWaitTemp = numberWaitTemp - 1; } const isValid = isTokensValid(oidc.tokens); diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index 89e4e7a44..54180c818 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -3,6 +3,7 @@ export type Fetch = typeof window.fetch; export type LogoutToken = 'access_token' | 'refresh_token'; export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAlive:Function) => Promise; +export type ServiceWorkerRegister = (serviceWorkerRelativeUrl:string) => Promise; export type ServiceWorkerActivate = () => boolean; export type OidcConfiguration = { @@ -19,6 +20,7 @@ export type OidcConfiguration = { refresh_time_before_tokens_expiration_in_second?: number; token_request_timeout?: number; service_worker_relative_url?:string; + service_worker_register?:ServiceWorkerRegister; service_worker_keep_alive_path?:string; service_worker_activate?:ServiceWorkerActivate; service_worker_only?:boolean; diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index ebc1d0600..5068c6435 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -8,7 +8,7 @@ export const userInfoAsync = (oidc) => async (noCache = false) => { // We wait the synchronisation before making a request while (oidc.tokens && !isTokensValid(oidc.tokens)) { - await sleepAsync(200); + await sleepAsync({milliseconds: 200}); } if (!oidc.tokens) { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 638da1918..8abaddeb2 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -191,6 +191,7 @@ const configuration = { service_worker_only: Boolean, // default false service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string service_worker_update_require_callback: (registration:any, stopKeepAlive:Function) => Promise, // callback called when service worker need to be updated, you can take the control of the update process + service_worker_register: (url: string) => Promise, // Optional, you can take the control of the service worker registration extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) withCustomHistory: Function, // Override history modification, return an instance with replaceState(url, stateHistory) implemented (like History.replaceState()) From d1188d6c54e8df192fa6aa4b17c1acb4c381ee86 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 4 Dec 2023 20:02:43 +0000 Subject: [PATCH 104/565] [skip ci] Update to version 7.13.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5ec2fffb9..7bce40ae1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.12.12", + "version": "7.13.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index e1117b1d6..20c952c8e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.12.12'; +export default '7.13.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 0a900c072..468acc98b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.12.12", + "version": "7.13.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index e1117b1d6..20c952c8e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.12.12'; +export default '7.13.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 082bddf35..b0f495874 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.12.12", + "version": "7.13.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 826084a87ce079980e86ce8f172b8ed8ae1d0451 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 4 Dec 2023 20:02:44 +0000 Subject: [PATCH 105/565] [skip ci] Generate changelog to version 7.13.0 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb566180e..9f7238013 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.12.12 +## 7.13.0 + +- [49c3d5e](https://github.com/AxaFrance/oidc-client/commit/49c3d5e5487d714ccd97272e37fc34f2a7bd0ff6) - feat(oidc-client): allow to take control on service-worker registration (release) (#1229), 2023-12-04 by *Guillaume Chervet* + + +## v7.12.12 - [b070c88](https://github.com/AxaFrance/oidc-client/commit/b070c8848582ac6f52ab7cb00f16b0fe9f702b5f) - fix(oidc-client): Update README.md (release), 2023-11-30 by *Guillaume Chervet* @@ -328,9 +333,3 @@ - [8fd627d](https://github.com/AxaFrance/oidc-client/commit/8fd627df3359f24aa2f8a56381b50b2617dc2f53) - chore(ci): add way to publish alpha, beta, release (alpha) (#1099), 2023-07-20 by *Guillaume Chervet* -## v6.24.22 - -- [1f8b455](https://github.com/AxaFrance/oidc-client/commit/1f8b455107dda34d267e0a6c898c704de88dfa77) - Merge db00519628cbd0a6f865539245321bcc85570f15 into 3e535c94dc57d59956498bfa0ca9536106039bda, 2023-07-20 by *Guillaume Chervet* -- [db00519](https://github.com/AxaFrance/oidc-client/commit/db00519628cbd0a6f865539245321bcc85570f15) - fix test (alpha), 2023-07-20 by *Guillaume Chervet* - - From 96637a73252e9ea34d8687409131f58f09633da6 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 5 Dec 2023 21:30:28 +0100 Subject: [PATCH 106/565] fix(oidc): sessions storage renew tokens (release) (#1230) * fix(oidc): sessions storage renew tokens (alpha) --- packages/oidc-client/src/oidc.ts | 7 +--- packages/oidc-client/src/renewTokens.ts | 47 +++++++++++++++---------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index b0e023a6a..9922dd8d2 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -112,6 +112,7 @@ export class Oidc { logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], service_worker_update_require_callback, service_worker_activate: configuration.service_worker_activate ?? activateServiceWorker, + storage: configuration.storage ?? sessionStorage, }; this.getFetch = getFetch ?? getFetchDefault; @@ -361,12 +362,6 @@ Please checkout that you are using OIDC hook inside a 0) { - await sleepAsync({milliseconds: 1000}); - numberTryHidden--; - this.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is hidden try ${numberTryHidden}` }); - } const isDocumentHidden = document.hidden; const nextIndex = isDocumentHidden ? index : index + 1; if (!extras) { diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 5811a6c14..993d6cdb9 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -5,28 +5,39 @@ import { computeTimeLeft } from './parseTokens.js'; import timer from './timer.js'; import { StringMap } from './types.js'; +async function syncTokens(oidc, refreshToken, forceRefresh: boolean, extras: StringMap) { + const updateTokens = (tokens) => { + oidc.tokens = tokens; + }; + const {tokens, status} = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); + + const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); + if (!serviceWorker) { + const session = initSession(oidc.configurationName, oidc.configuration.storage); + await session.setTokens(oidc.tokens); + } + + if (!oidc.tokens) { + await oidc.destroyAsync(status); + return null; + } + return tokens; +} + export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRefresh = false, extras:StringMap = null) { const configuration = oidc.configuration; const lockResourcesName = `${configuration.client_id}_${oidc.configurationName}_${configuration.authority}`; - const tokens = await navigator.locks.request(lockResourcesName, async (lock) => { - const updateTokens = (tokens) => { - oidc.tokens = tokens; - }; - const {tokens, status} = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); - - const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); - if (!serviceWorker) { - const session = initSession(oidc.configurationName, oidc.configuration.storage); - await session.setTokens(oidc.tokens); - } - - if (!oidc.tokens) { - await oidc.destroyAsync(status); - return null; - } - return tokens - }); + + let tokens = null; + const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); + if(configuration.storage === window.sessionStorage && !serviceWorker) { + tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); + } else { + tokens = await navigator.locks.request(lockResourcesName, async (lock) => { + return await syncTokens(oidc, refreshToken, forceRefresh, extras); + }); + } if(!tokens){ return null; } From 8c800a1334f1fd57ca6972961c5c62d13390e116 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 5 Dec 2023 20:33:04 +0000 Subject: [PATCH 107/565] [skip ci] Update to version 7.13.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 7bce40ae1..0017bc3c7 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.0", + "version": "7.13.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 20c952c8e..996a5af91 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.0'; +export default '7.13.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 468acc98b..fb9923db6 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.0", + "version": "7.13.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 20c952c8e..996a5af91 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.0'; +export default '7.13.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b0f495874..64fe11ac7 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.0", + "version": "7.13.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e142e7dd201ba5dcd6266a166cd6390fd8c24f31 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 5 Dec 2023 20:33:06 +0000 Subject: [PATCH 108/565] [skip ci] Generate changelog to version 7.13.1 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f7238013..341435378 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.0 +## 7.13.1 + +- [96637a7](https://github.com/AxaFrance/oidc-client/commit/96637a73252e9ea34d8687409131f58f09633da6) - fix(oidc): sessions storage renew tokens (release) (#1230), 2023-12-05 by *Guillaume Chervet* + + +## v7.13.0 - [49c3d5e](https://github.com/AxaFrance/oidc-client/commit/49c3d5e5487d714ccd97272e37fc34f2a7bd0ff6) - feat(oidc-client): allow to take control on service-worker registration (release) (#1229), 2023-12-04 by *Guillaume Chervet* @@ -327,9 +332,3 @@ - [0a30ab1](https://github.com/AxaFrance/oidc-client/commit/0a30ab1c3ce16df2ee8bb8c7fab4050e6cb1e3f1) - fix(ci): version empty (alpha), 2023-07-20 by *Guillaume Chervet* -## v6.24.23 - -- [8ae8b23](https://github.com/AxaFrance/oidc-client/commit/8ae8b23d54c3352221bbca638a8f8ad5d2f70459) - fix(ci): bad variable (alpha), 2023-07-20 by *Guillaume Chervet* -- [8fd627d](https://github.com/AxaFrance/oidc-client/commit/8fd627df3359f24aa2f8a56381b50b2617dc2f53) - chore(ci): add way to publish alpha, beta, release (alpha) (#1099), 2023-07-20 by *Guillaume Chervet* - - From 430a06b27b2f7164bc1557a2e55e547b5af3d8d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 06:43:48 +0100 Subject: [PATCH 109/565] build(npm): bump vite from 4.4.7 to 4.4.12 (#1231) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.7 to 4.4.12. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.4.12/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/oidc-client-demo/package.json | 2 +- examples/react-oidc-demo/package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 426 +++--------------- 6 files changed, 69 insertions(+), 367 deletions(-) diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 1cf30c3ee..958ac268b 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -32,6 +32,6 @@ "devDependencies": { "@types/node": "^20.10.1", "cross-env": "^7.0.3", - "vite": "^4.4.4" + "vite": "^4.4.12" } } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 2931272ae..52954cc2a 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -36,7 +36,7 @@ "jsdom": "22.1.0", "msw": "2.0.0", "typescript": "5.1.6", - "vite": "^4.4.4", + "vite": "^4.4.12", "vite-plugin-dts": "^3.3.0", "vitest": "^0.33.0" }, diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0017bc3c7..d6a62be3b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -40,7 +40,7 @@ "rimraf": "5.0.1", "msw": "2.0.0", "typescript": "5.1.6", - "vite": "^4.4.4", + "vite": "^4.4.12", "vite-plugin-dts": "^3.3.0", "vitest": "^0.33.0" }, diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index fb9923db6..b565298b5 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -32,7 +32,7 @@ "cpy-cli": "^5.0.0", "rimraf": "5.0.1", "typescript": "5.1.6", - "vite": "^4.4.4", + "vite": "^4.4.12", "vite-plugin-dts": "^3.3.0", "vitest": "^0.33.0" }, diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 64fe11ac7..7f51154b7 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -63,7 +63,7 @@ "react-dom": "^18.2.0", "rimraf": "5.0.1", "typescript": "5.1.6", - "vite": "^4.4.4", + "vite": "^4.4.12", "vite-plugin-dts": "^3.3.0", "vitest": "^0.33.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d6848641..31add89e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 13.4.12(react-dom@18.2.0)(react@18.2.0) + version: 14.0.3(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -112,8 +112,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 vite: - specifier: ^4.4.4 - version: 4.4.7(@types/node@20.10.1) + specifier: ^4.4.12 + version: 4.4.12(@types/node@20.10.1) examples/react-oidc-demo: dependencies: @@ -144,7 +144,7 @@ importers: version: 18.2.39 '@vitejs/plugin-react': specifier: 4.0.3 - version: 4.0.3(vite@4.4.7) + version: 4.0.3(vite@4.4.12) '@vitest/coverage-c8': specifier: ^0.33.0 version: 0.33.0(vitest@0.33.0) @@ -167,11 +167,11 @@ importers: specifier: 5.1.6 version: 5.1.6 vite: - specifier: ^4.4.4 - version: 4.4.7 + specifier: ^4.4.12 + version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + version: 3.4.0(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -210,11 +210,11 @@ importers: specifier: 5.1.6 version: 5.1.6 vite: - specifier: ^4.4.4 - version: 4.4.7 + specifier: ^4.4.12 + version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + version: 3.4.0(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -240,11 +240,11 @@ importers: specifier: 5.1.6 version: 5.1.6 vite: - specifier: ^4.4.4 - version: 4.4.7 + specifier: ^4.4.12 + version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + version: 3.4.0(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -275,7 +275,7 @@ importers: version: 18.2.39 '@vitejs/plugin-react': specifier: 4.0.3 - version: 4.0.3(vite@4.4.7) + version: 4.0.3(vite@4.4.12) '@vitest/coverage-v8': specifier: ^0.33.0 version: 0.33.0(vitest@0.33.0) @@ -307,11 +307,11 @@ importers: specifier: 5.1.6 version: 5.1.6 vite: - specifier: ^4.4.4 - version: 4.4.7 + specifier: ^4.4.12 + version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.7) + version: 3.4.0(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -583,15 +583,6 @@ packages: statuses: 2.0.1 dev: true - /@esbuild/android-arm64@0.18.17: - resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -601,15 +592,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.17: - resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -619,15 +601,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.17: - resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -637,15 +610,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.17: - resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -655,15 +619,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.17: - resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -673,15 +628,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.17: - resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -691,15 +637,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.17: - resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -709,15 +646,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.17: - resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -727,15 +655,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.17: - resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -745,15 +664,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.17: - resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -763,15 +673,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.17: - resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -781,15 +682,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.17: - resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -799,15 +691,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.17: - resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -817,15 +700,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.17: - resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -835,15 +709,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.17: - resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -853,15 +718,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.17: - resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -871,15 +727,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.17: - resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -889,15 +736,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.17: - resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -907,15 +745,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.17: - resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -925,15 +754,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.17: - resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -943,15 +763,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.17: - resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -961,15 +772,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.17: - resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -1154,12 +956,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@13.4.12: - resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} + /@next/env@14.0.3: + resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} dev: false - /@next/swc-darwin-arm64@13.4.12: - resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} + /@next/swc-darwin-arm64@14.0.3: + resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1167,8 +969,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.12: - resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} + /@next/swc-darwin-x64@14.0.3: + resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1176,8 +978,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.12: - resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} + /@next/swc-linux-arm64-gnu@14.0.3: + resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1185,8 +987,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.12: - resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} + /@next/swc-linux-arm64-musl@14.0.3: + resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1194,8 +996,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.12: - resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} + /@next/swc-linux-x64-gnu@14.0.3: + resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1203,8 +1005,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.12: - resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} + /@next/swc-linux-x64-musl@14.0.3: + resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1212,8 +1014,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.12: - resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} + /@next/swc-win32-arm64-msvc@14.0.3: + resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1221,8 +1023,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.12: - resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} + /@next/swc-win32-ia32-msvc@14.0.3: + resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1230,8 +1032,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.12: - resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} + /@next/swc-win32-x64-msvc@14.0.3: + resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1350,8 +1152,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.2 dev: false @@ -1739,7 +1541,7 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-react@4.0.3(vite@4.4.7): + /@vitejs/plugin-react@4.0.3(vite@4.4.12): resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1749,7 +1551,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) react-refresh: 0.14.0 - vite: 4.4.7 + vite: 4.4.12(@types/node@20.10.1) transitivePeerDependencies: - supports-color dev: true @@ -2910,36 +2712,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.18.17: - resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.17 - '@esbuild/android-arm64': 0.18.17 - '@esbuild/android-x64': 0.18.17 - '@esbuild/darwin-arm64': 0.18.17 - '@esbuild/darwin-x64': 0.18.17 - '@esbuild/freebsd-arm64': 0.18.17 - '@esbuild/freebsd-x64': 0.18.17 - '@esbuild/linux-arm': 0.18.17 - '@esbuild/linux-arm64': 0.18.17 - '@esbuild/linux-ia32': 0.18.17 - '@esbuild/linux-loong64': 0.18.17 - '@esbuild/linux-mips64el': 0.18.17 - '@esbuild/linux-ppc64': 0.18.17 - '@esbuild/linux-riscv64': 0.18.17 - '@esbuild/linux-s390x': 0.18.17 - '@esbuild/linux-x64': 0.18.17 - '@esbuild/netbsd-x64': 0.18.17 - '@esbuild/openbsd-x64': 0.18.17 - '@esbuild/sunos-x64': 0.18.17 - '@esbuild/win32-arm64': 0.18.17 - '@esbuild/win32-ia32': 0.18.17 - '@esbuild/win32-x64': 0.18.17 - dev: true - /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -4653,44 +4425,40 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@13.4.12(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} - engines: {node: '>=16.8.0'} + /next@14.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.12 - '@swc/helpers': 0.5.1 + '@next/env': 14.0.3 + '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001565 - postcss: 8.4.14 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 - zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.12 - '@next/swc-darwin-x64': 13.4.12 - '@next/swc-linux-arm64-gnu': 13.4.12 - '@next/swc-linux-arm64-musl': 13.4.12 - '@next/swc-linux-x64-gnu': 13.4.12 - '@next/swc-linux-x64-musl': 13.4.12 - '@next/swc-win32-arm64-msvc': 13.4.12 - '@next/swc-win32-ia32-msvc': 13.4.12 - '@next/swc-win32-x64-msvc': 13.4.12 + '@next/swc-darwin-arm64': 14.0.3 + '@next/swc-darwin-x64': 14.0.3 + '@next/swc-linux-arm64-gnu': 14.0.3 + '@next/swc-linux-arm64-musl': 14.0.3 + '@next/swc-linux-x64-gnu': 14.0.3 + '@next/swc-linux-x64-musl': 14.0.3 + '@next/swc-win32-arm64-msvc': 14.0.3 + '@next/swc-win32-ia32-msvc': 14.0.3 + '@next/swc-win32-x64-msvc': 14.0.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -5061,24 +4829,6 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true - /postcss@8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -5086,7 +4836,6 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -5399,14 +5148,6 @@ packages: glob: 10.3.3 dev: true - /rollup@3.27.0: - resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -6170,7 +5911,7 @@ packages: - terser dev: true - /vite-plugin-dts@3.4.0(typescript@5.1.6)(vite@4.4.7): + /vite-plugin-dts@3.4.0(typescript@5.1.6)(vite@4.4.12): resolution: {integrity: sha512-B5UbhiF83hPlJpdri3k2FlseO2qIQfY95XJib7z1s8NTQKgPK+KgeuOQf8FR1hnE/pSU+RA3ra2T18HvymPDyA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -6186,7 +5927,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 - vite: 4.4.7 + vite: 4.4.12(@types/node@20.10.1) vue-tsc: 1.8.8(typescript@5.1.6) transitivePeerDependencies: - '@types/node' @@ -6194,43 +5935,8 @@ packages: - supports-color dev: true - /vite@4.4.7: - resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.17 - postcss: 8.4.31 - rollup: 3.27.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@4.4.7(@types/node@20.10.1): - resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} + /vite@4.4.12(@types/node@20.10.1): + resolution: {integrity: sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -6258,9 +5964,9 @@ packages: optional: true dependencies: '@types/node': 20.10.1 - esbuild: 0.18.17 - postcss: 8.4.27 - rollup: 3.27.0 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -6354,7 +6060,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.7(@types/node@20.10.1) + vite: 4.5.0(@types/node@20.10.1) vite-node: 0.33.0(@types/node@20.10.1) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -6698,7 +6404,3 @@ packages: optionalDependencies: commander: 9.5.0 dev: true - - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - dev: false From 69111018ab317868304e0c04421ff8441585800d Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:46:29 +0000 Subject: [PATCH 110/565] [skip ci] Update to version 7.13.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index d6a62be3b..3985f3ff9 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.1", + "version": "7.13.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 996a5af91..8d869c75d 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.1'; +export default '7.13.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b565298b5..ce0c3ba0b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.1", + "version": "7.13.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 996a5af91..8d869c75d 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.1'; +export default '7.13.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 7f51154b7..8d1e053fb 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.1", + "version": "7.13.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From dbe6a9c22a294d3817e578964755c11e53b2766d Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:46:31 +0000 Subject: [PATCH 111/565] [skip ci] Generate changelog to version 7.13.2 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 341435378..1005469e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.1 +## 7.13.2 + +- [430a06b](https://github.com/AxaFrance/oidc-client/commit/430a06b27b2f7164bc1557a2e55e547b5af3d8d7) - build(npm): bump vite from 4.4.7 to 4.4.12 (#1231), 2023-12-07 by *dependabot[bot]* + + +## v7.13.1 - [96637a7](https://github.com/AxaFrance/oidc-client/commit/96637a73252e9ea34d8687409131f58f09633da6) - fix(oidc): sessions storage renew tokens (release) (#1230), 2023-12-05 by *Guillaume Chervet* @@ -327,8 +332,3 @@ - [f449785](https://github.com/AxaFrance/oidc-client/commit/f44978588f1697fe38fea68accbca0408ad6f6c6) - fix(ci): version badly injected, 2023-07-20 by *Guillaume Chervet* -## v6.24.24 - -- [0a30ab1](https://github.com/AxaFrance/oidc-client/commit/0a30ab1c3ce16df2ee8bb8c7fab4050e6cb1e3f1) - fix(ci): version empty (alpha), 2023-07-20 by *Guillaume Chervet* - - From 43eac59f1598ab6a5b07dc52deed95297c73f875 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 06:47:13 +0100 Subject: [PATCH 112/565] build(npm): bump vite-plugin-dts from 3.4.0 to 3.6.4 (#1227) Bumps [vite-plugin-dts](https://github.com/qmhc/vite-plugin-dts) from 3.4.0 to 3.6.4. - [Release notes](https://github.com/qmhc/vite-plugin-dts/releases) - [Changelog](https://github.com/qmhc/vite-plugin-dts/blob/main/CHANGELOG.md) - [Commits](https://github.com/qmhc/vite-plugin-dts/compare/v3.4.0...v3.6.4) --- updated-dependencies: - dependency-name: vite-plugin-dts dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/react-oidc-demo/package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 130 ++++++++---------- 5 files changed, 64 insertions(+), 74 deletions(-) diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 52954cc2a..c35fa3457 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -37,7 +37,7 @@ "msw": "2.0.0", "typescript": "5.1.6", "vite": "^4.4.12", - "vite-plugin-dts": "^3.3.0", + "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" }, "license": "MIT", diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 3985f3ff9..13108b70b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -41,7 +41,7 @@ "msw": "2.0.0", "typescript": "5.1.6", "vite": "^4.4.12", - "vite-plugin-dts": "^3.3.0", + "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" }, "publishConfig": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index ce0c3ba0b..698b4b19b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -33,7 +33,7 @@ "rimraf": "5.0.1", "typescript": "5.1.6", "vite": "^4.4.12", - "vite-plugin-dts": "^3.3.0", + "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" }, "keywords": [ diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 8d1e053fb..00a416aa9 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -64,7 +64,7 @@ "rimraf": "5.0.1", "typescript": "5.1.6", "vite": "^4.4.12", - "vite-plugin-dts": "^3.3.0", + "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" }, "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31add89e3..20bf7192c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -170,8 +170,8 @@ importers: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: - specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.12) + specifier: ^3.6.4 + version: 3.6.4(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -213,8 +213,8 @@ importers: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: - specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.12) + specifier: ^3.6.4 + version: 3.6.4(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -243,8 +243,8 @@ importers: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: - specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.12) + specifier: ^3.6.4 + version: 3.6.4(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -310,8 +310,8 @@ importers: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: - specifier: ^3.3.0 - version: 3.4.0(typescript@5.1.6)(vite@4.4.12) + specifier: ^3.6.4 + version: 3.6.4(typescript@5.1.6)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -896,26 +896,26 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@microsoft/api-extractor-model@7.27.5: - resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} + /@microsoft/api-extractor-model@7.28.3: + resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6 + '@rushstack/node-core-library': 3.62.0 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.36.3: - resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} + /@microsoft/api-extractor@7.38.5: + resolution: {integrity: sha512-c/w2zfqBcBJxaCzpJNvFoouWewcYrUOfeu5ZkWCCIXTF9a/gXM85RGevEzlMAIEGM/kssAAZSXRJIZ3Q5vLFow==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.27.5 + '@microsoft/api-extractor-model': 7.28.3 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6 - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 + '@rushstack/node-core-library': 3.62.0 + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 lodash: 4.17.21 resolve: 1.22.8 @@ -1101,11 +1101,11 @@ packages: engines: {node: '>=14'} dev: false - /@rollup/pluginutils@5.0.2: - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -1115,8 +1115,8 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/node-core-library@3.59.6: - resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} + /@rushstack/node-core-library@3.62.0: + resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -1132,15 +1132,15 @@ packages: z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.4.0: - resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} + /@rushstack/rig-package@0.5.1: + resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.15.1: - resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} + /@rushstack/ts-command-line@4.17.1: + resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -1666,22 +1666,23 @@ packages: pretty-format: 29.7.0 dev: true - /@volar/language-core@1.10.0: - resolution: {integrity: sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==} + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: - '@volar/source-map': 1.10.0 + '@volar/source-map': 1.11.1 dev: true - /@volar/source-map@1.10.0: - resolution: {integrity: sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==} + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.10.0: - resolution: {integrity: sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==} + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: - '@volar/language-core': 1.10.0 + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 dev: true /@vue/compiler-core@3.3.4: @@ -1700,44 +1701,30 @@ packages: '@vue/shared': 3.3.4 dev: true - /@vue/language-core@1.8.8(typescript@5.1.6): - resolution: {integrity: sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==} + /@vue/language-core@1.8.25(typescript@5.1.6): + resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 1.10.0 - '@volar/source-map': 1.10.0 + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 '@vue/compiler-dom': 3.3.4 - '@vue/reactivity': 3.3.4 '@vue/shared': 3.3.4 + computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 + path-browserify: 1.0.1 typescript: 5.1.6 vue-template-compiler: 2.7.14 dev: true - /@vue/reactivity@3.3.4: - resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} - dependencies: - '@vue/shared': 3.3.4 - dev: true - /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true - /@vue/typescript@1.8.8(typescript@5.1.6): - resolution: {integrity: sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==} - dependencies: - '@volar/typescript': 1.10.0 - '@vue/language-core': 1.8.8(typescript@5.1.6) - transitivePeerDependencies: - - typescript - dev: true - /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true @@ -2305,6 +2292,10 @@ packages: engines: {node: '>= 12.0.0'} dev: true + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -4754,6 +4745,10 @@ packages: entities: 4.5.0 dev: true + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4888,11 +4883,6 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5632,7 +5622,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -5911,8 +5901,8 @@ packages: - terser dev: true - /vite-plugin-dts@3.4.0(typescript@5.1.6)(vite@4.4.12): - resolution: {integrity: sha512-B5UbhiF83hPlJpdri3k2FlseO2qIQfY95XJib7z1s8NTQKgPK+KgeuOQf8FR1hnE/pSU+RA3ra2T18HvymPDyA==} + /vite-plugin-dts@3.6.4(typescript@5.1.6)(vite@4.4.12): + resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -5921,14 +5911,14 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.36.3 - '@rollup/pluginutils': 5.0.2 - '@vue/language-core': 1.8.8(typescript@5.1.6) + '@microsoft/api-extractor': 7.38.5 + '@rollup/pluginutils': 5.1.0 + '@vue/language-core': 1.8.25(typescript@5.1.6) debug: 4.3.4 kolorist: 1.8.0 typescript: 5.1.6 vite: 4.4.12(@types/node@20.10.1) - vue-tsc: 1.8.8(typescript@5.1.6) + vue-tsc: 1.8.25(typescript@5.1.6) transitivePeerDependencies: - '@types/node' - rollup @@ -6145,14 +6135,14 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.8(typescript@5.1.6): - resolution: {integrity: sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==} + /vue-tsc@1.8.25(typescript@5.1.6): + resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.8(typescript@5.1.6) - '@vue/typescript': 1.8.8(typescript@5.1.6) + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.25(typescript@5.1.6) semver: 7.5.4 typescript: 5.1.6 dev: true From 33a9c8349f23d98960fb4c60f49d7fd19572cca5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 06:48:32 +0100 Subject: [PATCH 113/565] build(npm): bump react-router-dom from 6.14.2 to 6.20.1 (#1234) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.14.2 to 6.20.1. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.20.1/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/react-oidc-demo/package.json | 2 +- pnpm-lock.yaml | 28 +++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index c35fa3457..be35496e4 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -21,7 +21,7 @@ "@axa-fr/react-oidc":"workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1" + "react-router-dom": "^6.20.1" }, "devDependencies": { "@testing-library/jest-dom": "5.16.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20bf7192c..98da085a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -127,8 +127,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-router-dom: - specifier: ^6.14.1 - version: 6.14.2(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.20.1 + version: 6.20.1(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': specifier: 5.16.5 @@ -1096,9 +1096,9 @@ packages: tslib: 2.6.2 dev: true - /@remix-run/router@1.7.2: - resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} - engines: {node: '>=14'} + /@remix-run/router@1.13.1: + resolution: {integrity: sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==} + engines: {node: '>=14.0.0'} dev: false /@rollup/pluginutils@5.1.0: @@ -4926,26 +4926,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==} - engines: {node: '>=14'} + /react-router-dom@6.20.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.7.2 + '@remix-run/router': 1.13.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.14.2(react@18.2.0) + react-router: 6.20.1(react@18.2.0) dev: false - /react-router@6.14.2(react@18.2.0): - resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==} - engines: {node: '>=14'} + /react-router@6.20.1(react@18.2.0): + resolution: {integrity: sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.7.2 + '@remix-run/router': 1.13.1 react: 18.2.0 dev: false From 8f5f888fe34d739ded51f611e194d77a2e788830 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 06:49:25 +0100 Subject: [PATCH 114/565] build(npm): bump eslint-plugin-regexp from 1.15.0 to 2.1.2 (#1233) Bumps [eslint-plugin-regexp](https://github.com/ota-meshi/eslint-plugin-regexp) from 1.15.0 to 2.1.2. - [Release notes](https://github.com/ota-meshi/eslint-plugin-regexp/releases) - [Changelog](https://github.com/ota-meshi/eslint-plugin-regexp/blob/master/CHANGELOG.md) - [Commits](https://github.com/ota-meshi/eslint-plugin-regexp/compare/v1.15.0...v2.1.2) --- updated-dependencies: - dependency-name: eslint-plugin-regexp dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 51 +++++++++++++++++++++++--------------------------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 6d99483bb..e39db69b1 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "eslint-plugin-prettier": "5.0.1", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-regexp": "^1.15.0", + "eslint-plugin-regexp": "^2.1.2", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-testing-library": "^5.11.0", "prettier": "3.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98da085a1..e06ceb75f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^4.6.0 version: 4.6.0(eslint@8.54.0) eslint-plugin-regexp: - specifier: ^1.15.0 - version: 1.15.0(eslint@8.54.0) + specifier: ^2.1.2 + version: 2.1.2(eslint@8.54.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@8.54.0) @@ -2965,21 +2965,20 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.54.0): - resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} - engines: {node: ^12 || >=14} + /eslint-plugin-regexp@2.1.2(eslint@8.54.0): + resolution: {integrity: sha512-nnhNqHblaD8YTJiEHfyVRhiw8sm0eFQ9h+ee3rMqJhf2R9sJWbSXkjrLxIeCNZSNqitUOdaYFfrPVyvS9i72AA==} + engines: {node: ^18 || >=20} peerDependencies: - eslint: '>=6.0.0' + eslint: '>=8.44.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 eslint: 8.54.0 - grapheme-splitter: 1.0.4 - jsdoctypeparser: 9.0.0 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 - scslre: 0.2.0 + jsdoc-type-pratt-parser: 4.0.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 dev: true /eslint-plugin-simple-import-sort@10.0.0(eslint@8.54.0): @@ -3442,10 +3441,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -3992,10 +3987,9 @@ packages: argparse: 2.0.1 dev: true - /jsdoctypeparser@9.0.0: - resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} - engines: {node: '>=10'} - hasBin: true + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} dev: true /jsdom@22.1.0: @@ -5026,8 +5020,8 @@ packages: strip-indent: 4.0.0 dev: true - /refa@0.11.0: - resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} + /refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: '@eslint-community/regexpp': 4.10.0 @@ -5051,12 +5045,12 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - /regexp-ast-analysis@0.6.0: - resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} + /regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: '@eslint-community/regexpp': 4.10.0 - refa: 0.11.0 + refa: 0.12.1 dev: true /regexp.prototype.flags@1.5.1: @@ -5216,12 +5210,13 @@ packages: dependencies: loose-envify: 1.4.0 - /scslre@0.2.0: - resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + /scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} dependencies: '@eslint-community/regexpp': 4.10.0 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 dev: true /semver@6.3.1: From e386fa19f554f07df448f6e984e22cbeeca25933 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:52:17 +0000 Subject: [PATCH 115/565] [skip ci] Update to version 7.13.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 13108b70b..f984dd921 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.2", + "version": "7.13.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 8d869c75d..717e0679a 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.2'; +export default '7.13.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 698b4b19b..6edb207a4 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.2", + "version": "7.13.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 8d869c75d..717e0679a 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.2'; +export default '7.13.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 00a416aa9..6d1b4404b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.2", + "version": "7.13.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 43ac307f1bc709dfe8dc4ea1566e097a5f7c2bae Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:52:19 +0000 Subject: [PATCH 116/565] [skip ci] Generate changelog to version 7.13.5 --- CHANGELOG.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1005469e1..6fd54fc19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,21 @@ # Changelog -## 7.13.2 +## 7.13.5 + +- [8f5f888](https://github.com/AxaFrance/oidc-client/commit/8f5f888fe34d739ded51f611e194d77a2e788830) - build(npm): bump eslint-plugin-regexp from 1.15.0 to 2.1.2 (#1233), 2023-12-07 by *dependabot[bot]* + + +## v7.13.4 + +- [33a9c83](https://github.com/AxaFrance/oidc-client/commit/33a9c8349f23d98960fb4c60f49d7fd19572cca5) - build(npm): bump react-router-dom from 6.14.2 to 6.20.1 (#1234), 2023-12-07 by *dependabot[bot]* + + +## v7.13.3 + +- [43eac59](https://github.com/AxaFrance/oidc-client/commit/43eac59f1598ab6a5b07dc52deed95297c73f875) - build(npm): bump vite-plugin-dts from 3.4.0 to 3.6.4 (#1227), 2023-12-07 by *dependabot[bot]* + + +## v7.13.2 - [430a06b](https://github.com/AxaFrance/oidc-client/commit/430a06b27b2f7164bc1557a2e55e547b5af3d8d7) - build(npm): bump vite from 4.4.7 to 4.4.12 (#1231), 2023-12-07 by *dependabot[bot]* @@ -315,20 +330,3 @@ - [d337b8b](https://github.com/AxaFrance/oidc-client/commit/d337b8b574936b81a4a6de9d533076a9da3a848b) - chore(ci): add way to publish alpha, beta, release (beta) (#1099), 2023-07-20 by *Guillaume Chervet* -## v6.24.27 - -- [e68b26b](https://github.com/AxaFrance/oidc-client/commit/e68b26be8ab30eef9aa46e5e4dd029fa5b3818c3) - test (beta), 2023-07-21 by *Guillaume Chervet* -- [4e78bbb](https://github.com/AxaFrance/oidc-client/commit/4e78bbbc4fb6f6728e97ee7a0f517bf8eac72998) - Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* -- [8b7eb9b](https://github.com/AxaFrance/oidc-client/commit/8b7eb9bfc29f242132e1cff4952a2342dd610b34) - fix(ci): Update npm-publish.yml (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.26 - -- [cee3198](https://github.com/AxaFrance/oidc-client/commit/cee3198d3ffde50a71e52a5654907b7f4ac013d9) - fix(ci): lastcomiit (alpha), 2023-07-20 by *Guillaume Chervet* - - -## v6.24.25 - -- [f449785](https://github.com/AxaFrance/oidc-client/commit/f44978588f1697fe38fea68accbca0408ad6f6c6) - fix(ci): version badly injected, 2023-07-20 by *Guillaume Chervet* - - From da77bb912b61e5aad93c53e84ce4fbea2a503fb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 06:53:51 +0100 Subject: [PATCH 117/565] build(npm): bump typescript from 5.1.6 to 5.3.3 (#1232) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.6 to 5.3.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.1.6...v5.3.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/oidc-client-demo/package.json | 2 +- examples/react-oidc-demo/package.json | 2 +- package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 140 +++++++++--------- 7 files changed, 73 insertions(+), 79 deletions(-) diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 958ac268b..3aaa8d91d 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -7,7 +7,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", - "typescript": "^5.1.6", + "typescript": "^5.3.3", "web-vitals": "^3.4.0" }, "scripts": { diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index be35496e4..d3b1a37ec 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -35,7 +35,7 @@ "cross-env": "^7.0.3", "jsdom": "22.1.0", "msw": "2.0.0", - "typescript": "5.1.6", + "typescript": "5.3.3", "vite": "^4.4.12", "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" diff --git a/package.json b/package.json index e39db69b1..2b8fc1bcf 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "prettier": "3.1.0", "tslib": "^2.6.2", "tsx": "4.6.1", - "typescript": "5.3.2", + "typescript": "5.3.3", "vitest": "0.34.6" }, "engines": { diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index f984dd921..54c50c7b5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -39,7 +39,7 @@ "cpy-cli": "^5.0.0", "rimraf": "5.0.1", "msw": "2.0.0", - "typescript": "5.1.6", + "typescript": "5.3.3", "vite": "^4.4.12", "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6edb207a4..085583a11 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -31,7 +31,7 @@ "cpy": "^10.1.0", "cpy-cli": "^5.0.0", "rimraf": "5.0.1", - "typescript": "5.1.6", + "typescript": "5.3.3", "vite": "^4.4.12", "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6d1b4404b..762a18585 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -62,7 +62,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "5.0.1", - "typescript": "5.1.6", + "typescript": "5.3.3", "vite": "^4.4.12", "vite-plugin-dts": "^3.6.4", "vitest": "^0.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e06ceb75f..6abcfae5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: 6.13.1 - version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2) + version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.3) '@typescript-eslint/parser': specifier: 6.13.1 - version: 6.13.1(eslint@8.54.0)(typescript@5.3.2) + version: 6.13.1(eslint@8.54.0)(typescript@5.3.3) eslint: specifier: ^8.54.0 version: 8.54.0 @@ -52,7 +52,7 @@ importers: version: 10.0.0(eslint@8.54.0) eslint-plugin-testing-library: specifier: ^5.11.0 - version: 5.11.1(eslint@8.54.0)(typescript@5.3.2) + version: 5.11.1(eslint@8.54.0)(typescript@5.3.3) prettier: specifier: 3.1.0 version: 3.1.0 @@ -63,8 +63,8 @@ importers: specifier: 4.6.1 version: 4.6.1 typescript: - specifier: 5.3.2 - version: 5.3.2 + specifier: 5.3.3 + version: 5.3.3 vitest: specifier: 0.34.6 version: 0.34.6 @@ -99,8 +99,8 @@ importers: specifier: ^27.5.2 version: 27.5.2 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.3.3 + version: 5.3.3 web-vitals: specifier: ^3.4.0 version: 3.4.0 @@ -162,16 +162,16 @@ importers: version: 22.1.0 msw: specifier: 2.0.0 - version: 2.0.0(typescript@5.1.6) + version: 2.0.0(typescript@5.3.3) typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.3 + version: 5.3.3 vite: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.1.6)(vite@4.4.12) + version: 3.6.4(typescript@5.3.3)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -207,14 +207,14 @@ importers: specifier: 5.0.1 version: 5.0.1 typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.3 + version: 5.3.3 vite: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.1.6)(vite@4.4.12) + version: 3.6.4(typescript@5.3.3)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -232,19 +232,19 @@ importers: version: 5.0.0 msw: specifier: 2.0.0 - version: 2.0.0(typescript@5.1.6) + version: 2.0.0(typescript@5.3.3) rimraf: specifier: 5.0.1 version: 5.0.1 typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.3 + version: 5.3.3 vite: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.1.6)(vite@4.4.12) + version: 3.6.4(typescript@5.3.3)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -293,7 +293,7 @@ importers: version: 22.1.0 msw: specifier: 2.0.0 - version: 2.0.0(typescript@5.1.6) + version: 2.0.0(typescript@5.3.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -304,14 +304,14 @@ importers: specifier: 5.0.1 version: 5.0.1 typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.3 + version: 5.3.3 vite: specifier: ^4.4.12 version: 4.4.12(@types/node@20.10.1) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.1.6)(vite@4.4.12) + version: 3.6.4(typescript@5.3.3)(vite@4.4.12) vitest: specifier: ^0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -1344,7 +1344,7 @@ packages: dependencies: '@types/jest': 27.5.2 - /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1356,10 +1356,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 eslint: 8.54.0 @@ -1367,13 +1367,13 @@ packages: ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1385,11 +1385,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.13.1 '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 eslint: 8.54.0 - typescript: 5.3.2 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -1410,7 +1410,7 @@ packages: '@typescript-eslint/visitor-keys': 6.13.1 dev: true - /@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1420,12 +1420,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) - '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.54.0 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -1440,7 +1440,7 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.2): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1455,13 +1455,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.2): + /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.3): resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1476,13 +1476,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1493,7 +1493,7 @@ packages: '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) eslint: 8.54.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -1502,7 +1502,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1513,7 +1513,7 @@ packages: '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 6.13.1 '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: @@ -1701,7 +1701,7 @@ packages: '@vue/shared': 3.3.4 dev: true - /@vue/language-core@1.8.25(typescript@5.1.6): + /@vue/language-core@1.8.25(typescript@5.3.3): resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} peerDependencies: typescript: '*' @@ -1717,7 +1717,7 @@ packages: minimatch: 9.0.3 muggle-string: 0.3.1 path-browserify: 1.0.1 - typescript: 5.1.6 + typescript: 5.3.3 vue-template-compiler: 2.7.14 dev: true @@ -2806,7 +2806,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.54.0 eslint-import-resolver-node: 0.3.9 @@ -2836,7 +2836,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -2989,13 +2989,13 @@ packages: eslint: 8.54.0 dev: true - /eslint-plugin-testing-library@5.11.1(eslint@8.54.0)(typescript@5.3.2): + /eslint-plugin-testing-library@5.11.1(eslint@8.54.0)(typescript@5.3.3): resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.3.3) eslint: 8.54.0 transitivePeerDependencies: - supports-color @@ -4350,7 +4350,7 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@2.0.0(typescript@5.1.6): + /msw@2.0.0(typescript@5.3.3): resolution: {integrity: sha512-lw9UHuzNCWoODHaThGeLLIIuzEBUQkj3fJXQnChHifMKbB2UmF2msHd4d/lnyqjAyD0XWoibdviW9wlstFPpkA==} engines: {node: '>=18'} hasBin: true @@ -4383,7 +4383,7 @@ packages: path-to-regexp: 6.2.1 strict-event-emitter: 0.5.1 type-fest: 2.19.0 - typescript: 5.1.6 + typescript: 5.3.3 yargs: 17.7.2 transitivePeerDependencies: - encoding @@ -5638,13 +5638,13 @@ packages: engines: {node: '>=14.16'} dev: true - /ts-api-utils@1.0.3(typescript@5.3.2): + /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.2 + typescript: 5.3.3 dev: true /tsconfig-paths@3.14.2: @@ -5663,14 +5663,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.3.2): + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.2 + typescript: 5.3.3 dev: true /tsx@4.6.1: @@ -5760,17 +5760,11 @@ packages: hasBin: true dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} dev: true @@ -5896,7 +5890,7 @@ packages: - terser dev: true - /vite-plugin-dts@3.6.4(typescript@5.1.6)(vite@4.4.12): + /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@4.4.12): resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5908,12 +5902,12 @@ packages: dependencies: '@microsoft/api-extractor': 7.38.5 '@rollup/pluginutils': 5.1.0 - '@vue/language-core': 1.8.25(typescript@5.1.6) + '@vue/language-core': 1.8.25(typescript@5.3.3) debug: 4.3.4 kolorist: 1.8.0 - typescript: 5.1.6 + typescript: 5.3.3 vite: 4.4.12(@types/node@20.10.1) - vue-tsc: 1.8.25(typescript@5.1.6) + vue-tsc: 1.8.25(typescript@5.3.3) transitivePeerDependencies: - '@types/node' - rollup @@ -6130,16 +6124,16 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.25(typescript@5.1.6): + /vue-tsc@1.8.25(typescript@5.3.3): resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} hasBin: true peerDependencies: typescript: '*' dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.25(typescript@5.1.6) + '@vue/language-core': 1.8.25(typescript@5.3.3) semver: 7.5.4 - typescript: 5.1.6 + typescript: 5.3.3 dev: true /w3c-xmlserializer@4.0.0: From caf70a65f1cd99a23e6d94ec6e96f69e7ad87b05 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:56:24 +0000 Subject: [PATCH 118/565] [skip ci] Update to version 7.13.6 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 54c50c7b5..9a1850e23 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.5", + "version": "7.13.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 717e0679a..7bc0bfbae 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.5'; +export default '7.13.6'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 085583a11..2d38bf678 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.5", + "version": "7.13.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 717e0679a..7bc0bfbae 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.5'; +export default '7.13.6'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 762a18585..39163e991 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.5", + "version": "7.13.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From dd8fab4af63c62c65621c3767a4c44fc4d9239ce Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Dec 2023 05:56:26 +0000 Subject: [PATCH 119/565] [skip ci] Generate changelog to version 7.13.6 --- CHANGELOG.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fd54fc19..047d9a174 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.5 +## 7.13.6 + +- [da77bb9](https://github.com/AxaFrance/oidc-client/commit/da77bb912b61e5aad93c53e84ce4fbea2a503fb2) - build(npm): bump typescript from 5.1.6 to 5.3.3 (#1232), 2023-12-07 by *dependabot[bot]* + + +## v7.13.5 - [8f5f888](https://github.com/AxaFrance/oidc-client/commit/8f5f888fe34d739ded51f611e194d77a2e788830) - build(npm): bump eslint-plugin-regexp from 1.15.0 to 2.1.2 (#1233), 2023-12-07 by *dependabot[bot]* @@ -323,10 +328,3 @@ - [e02bc6e](https://github.com/AxaFrance/oidc-client/commit/e02bc6e77114f585e00f7d9d888db1d0a537be88) - chore(ci): fix numversion (alpha), 2023-07-22 by *Guillaume Chervet* -## v6.25.0 - -- [7ba2509](https://github.com/AxaFrance/oidc-client/commit/7ba2509271acefb6ff744fb07a464fd7f9c42064) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* -- [4be9aed](https://github.com/AxaFrance/oidc-client/commit/4be9aedde3a81f11aac5f8dfdef4914ce2c0483b) - feat(workspace): Add workspaces to specify build order dependencies in packages. (#1004), 2023-07-22 by *Jason Finch* -- [d337b8b](https://github.com/AxaFrance/oidc-client/commit/d337b8b574936b81a4a6de9d533076a9da3a848b) - chore(ci): add way to publish alpha, beta, release (beta) (#1099), 2023-07-20 by *Guillaume Chervet* - - From 64a8df3281f95159a60e5f9ec61db315a8d20c7d Mon Sep 17 00:00:00 2001 From: abhilashlr Date: Sat, 9 Dec 2023 15:12:12 +0530 Subject: [PATCH 120/565] fix(oidc-client): make locks work only ifAvailable (#1237)(alpha) Co-authored-by: abhilashlr --- packages/oidc-client/src/renewTokens.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 993d6cdb9..c7e3e6d8f 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -34,7 +34,8 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef if(configuration.storage === window.sessionStorage && !serviceWorker) { tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); } else { - tokens = await navigator.locks.request(lockResourcesName, async (lock) => { + tokens = await navigator.locks.request(lockResourcesName, { ifAvailable: true }, async (lock) => { + oidc.publishEvent('Lock executed', lock); return await syncTokens(oidc, refreshToken, forceRefresh, extras); }); } From 9f1f7f684a6b344f59221caf3e3a14faef73a6bc Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 12 Dec 2023 21:17:29 +0100 Subject: [PATCH 121/565] fix(oidc): session storage for next (#1240) (alpha) --- packages/oidc-client/src/oidc.ts | 1 - packages/oidc-client/src/renewTokens.ts | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 9922dd8d2..eb55d301b 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -112,7 +112,6 @@ export class Oidc { logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], service_worker_update_require_callback, service_worker_activate: configuration.service_worker_activate ?? activateServiceWorker, - storage: configuration.storage ?? sessionStorage, }; this.getFetch = getFetch ?? getFetchDefault; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index c7e3e6d8f..4d367eaf8 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -31,17 +31,20 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef let tokens = null; const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); - if(configuration.storage === window.sessionStorage && !serviceWorker) { + if(configuration?.storage === window?.sessionStorage && !serviceWorker) { tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); } else { tokens = await navigator.locks.request(lockResourcesName, { ifAvailable: true }, async (lock) => { - oidc.publishEvent('Lock executed', lock); + if(!lock){ + return tokens; + } return await syncTokens(oidc, refreshToken, forceRefresh, extras); }); } if(!tokens){ return null; } + if (oidc.timeoutId) { oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, extras); } From 23c87152e55c8d7f1c51a33032d48c751b15c4c5 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 15 Dec 2023 12:03:23 +0100 Subject: [PATCH 122/565] fix(ci): clean changelog generation --- bin/generate-changelog.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/generate-changelog.sh b/bin/generate-changelog.sh index 0c6151267..25084aaaf 100755 --- a/bin/generate-changelog.sh +++ b/bin/generate-changelog.sh @@ -2,6 +2,7 @@ num_tags=60 excluded_author="GitHub" +project_url="https://github.com/AxaFrance/oidc-client/commit" # Get all tag names in reverse order tags=(`git tag -l --sort=-creatordate | head -$num_tags`) @@ -39,7 +40,7 @@ do if [ "$author" != "$excluded_author" ]; then # Get commit log in the desired format. # You can modify the 'format' as per your need. Please refer 'PRETTY FORMATS' section of git-log man page - log=$(git log -1 --pretty=format:"[%h](https://github.com/AxaFrance/oidc-client/commit/%H) - %s, %ad by *%an*" --date=short $hash) + log=$(git log -1 --pretty=format:"[%h]($project_url/%H) - %s, %ad by *%an*" --date=short $hash) # Write formatted log to CHANGELOG.md file echo "- $log" >> $outfile From 6667eabc8c5cb0ff5874b6583b2223721bd18525 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 15 Dec 2023 18:01:20 +0100 Subject: [PATCH 123/565] fix(oidc): temporary fix on lock need to be continued but require refactor (release) --- packages/oidc-client/src/renewTokens.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 4d367eaf8..a24f0896d 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -34,13 +34,18 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef if(configuration?.storage === window?.sessionStorage && !serviceWorker) { tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); } else { - tokens = await navigator.locks.request(lockResourcesName, { ifAvailable: true }, async (lock) => { - if(!lock){ - return tokens; - } - return await syncTokens(oidc, refreshToken, forceRefresh, extras); + const controller = new AbortController(); + const timeout = Math.max(configuration.token_request_timeout??0, configuration.silent_login_timeout??0, 20000); + const timeoutId = timer.setTimeout(() => { + controller.abort(); + }, timeout); + tokens = await navigator.locks.request(lockResourcesName, { signal: controller.signal }, async () => { + const tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); + timer.clearTimeout(timeoutId); + return tokens; }); } + if(!tokens){ return null; } @@ -48,6 +53,7 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef if (oidc.timeoutId) { oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, extras); } + return oidc.tokens; } From 24a1c0b0d9358c3ae58949adecce5eb3bad631ab Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 Dec 2023 17:05:26 +0000 Subject: [PATCH 124/565] [skip ci] Update to version 7.13.7 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 9a1850e23..31239d7d3 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.6", + "version": "7.13.7", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7bc0bfbae..74063ba54 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.6'; +export default '7.13.7'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 2d38bf678..a1c071f4c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.6", + "version": "7.13.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7bc0bfbae..74063ba54 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.6'; +export default '7.13.7'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 39163e991..ce42f47c9 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.6", + "version": "7.13.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 257f389f57901d1bf8723c7ebacc254f98057e52 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 Dec 2023 17:05:27 +0000 Subject: [PATCH 125/565] [skip ci] Generate changelog to version 7.13.7 --- CHANGELOG.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 047d9a174..8ec1818c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog -## 7.13.6 +## 7.13.7 + +- [6667eab](https://github.com/AxaFrance/oidc-client/commit/6667eabc8c5cb0ff5874b6583b2223721bd18525) - fix(oidc): temporary fix on lock need to be continued but require refactor (release), 2023-12-15 by *Guillaume Chervet* +- [23c8715](https://github.com/AxaFrance/oidc-client/commit/23c87152e55c8d7f1c51a33032d48c751b15c4c5) - fix(ci): clean changelog generation, 2023-12-15 by *Guillaume Chervet* +- [9f1f7f6](https://github.com/AxaFrance/oidc-client/commit/9f1f7f684a6b344f59221caf3e3a14faef73a6bc) - fix(oidc): session storage for next (#1240) (alpha), 2023-12-12 by *Guillaume Chervet* +- [64a8df3](https://github.com/AxaFrance/oidc-client/commit/64a8df3281f95159a60e5f9ec61db315a8d20c7d) - fix(oidc-client): make locks work only ifAvailable (#1237)(alpha), 2023-12-09 by *abhilashlr* + + +## v7.13.6 - [da77bb9](https://github.com/AxaFrance/oidc-client/commit/da77bb912b61e5aad93c53e84ce4fbea2a503fb2) - build(npm): bump typescript from 5.1.6 to 5.3.3 (#1232), 2023-12-07 by *dependabot[bot]* @@ -322,9 +330,3 @@ - [4ccbef0](https://github.com/AxaFrance/oidc-client/commit/4ccbef0417543bf2a7395788315298b873327e7a) - chore(ci): add serviceworker (alpha), 2023-07-22 by *Guillaume Chervet* -## v6.25.1 - -- [cf3e31a](https://github.com/AxaFrance/oidc-client/commit/cf3e31af027d60626f1bff9a7c0951db115d11c3) - fix(react): update lock file (alpha), 2023-07-22 by *Guillaume Chervet* -- [e02bc6e](https://github.com/AxaFrance/oidc-client/commit/e02bc6e77114f585e00f7d9d888db1d0a537be88) - chore(ci): fix numversion (alpha), 2023-07-22 by *Guillaume Chervet* - - From b0cf4ad52df9c16c130cce791b05ceea7c4370c4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 18 Dec 2023 13:05:26 +0100 Subject: [PATCH 126/565] fix(oidc): temp renew token fix (#1245) (release) * fix(oidc): temp renew token fix * update * update * update * update --- packages/oidc-client/src/events.ts | 1 + packages/oidc-client/src/renewTokens.ts | 41 ++++++++++++++++--------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/packages/oidc-client/src/events.ts b/packages/oidc-client/src/events.ts index ac2690113..5cb31c05e 100644 --- a/packages/oidc-client/src/events.ts +++ b/packages/oidc-client/src/events.ts @@ -23,6 +23,7 @@ export const eventNames = { silentLoginAsync_end: 'silentLoginAsync_end', silentLoginAsync_error: 'silentLoginAsync_error', syncTokensAsync_begin: 'syncTokensAsync_begin', + syncTokensAsync_lock_not_available: 'syncTokensAsync_lock_not_available', syncTokensAsync_end: 'syncTokensAsync_end', syncTokensAsync_error: 'syncTokensAsync_error', }; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index a24f0896d..dbcec1497 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -1,9 +1,9 @@ -import { initSession } from './initSession.js'; -import { initWorkerAsync } from './initWorker.js'; +import {initSession} from './initSession.js'; +import {initWorkerAsync} from './initWorker.js'; import Oidc from './oidc.js'; -import { computeTimeLeft } from './parseTokens.js'; +import {computeTimeLeft} from './parseTokens.js'; import timer from './timer.js'; -import { StringMap } from './types.js'; +import {StringMap} from './types.js'; async function syncTokens(oidc, refreshToken, forceRefresh: boolean, extras: StringMap) { const updateTokens = (tokens) => { @@ -24,26 +24,38 @@ async function syncTokens(oidc, refreshToken, forceRefresh: boolean, extras: Str return tokens; } +async function loadLatestTokensAsync(oidc, configuration) { + const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); + if (serviceWorker) { + const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); + const {tokens} = await serviceWorker.initAsync(oidcServerConfiguration, 'tryKeepExistingSessionAsync', configuration); + return tokens; + } else { + const session = initSession(oidc.configurationName, configuration.storage ?? sessionStorage); + const {tokens} = await session.initAsync(); + return tokens; + } +} + export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRefresh = false, extras:StringMap = null) { const configuration = oidc.configuration; const lockResourcesName = `${configuration.client_id}_${oidc.configurationName}_${configuration.authority}`; - let tokens = null; + let tokens: null; const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); + if(configuration?.storage === window?.sessionStorage && !serviceWorker) { tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); } else { - const controller = new AbortController(); - const timeout = Math.max(configuration.token_request_timeout??0, configuration.silent_login_timeout??0, 20000); - const timeoutId = timer.setTimeout(() => { - controller.abort(); - }, timeout); - tokens = await navigator.locks.request(lockResourcesName, { signal: controller.signal }, async () => { - const tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); - timer.clearTimeout(timeoutId); - return tokens; + tokens = await navigator.locks.request(lockResourcesName, { ifAvailable: true }, async (lock) => { + if(!lock){ + oidc.publishEvent(Oidc.eventNames.syncTokensAsync_lock_not_available, { lock: 'lock not available' }); + return await loadLatestTokensAsync(oidc, configuration); + } + return await syncTokens(oidc, refreshToken, forceRefresh, extras); }); + } if(!tokens){ @@ -51,6 +63,7 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef } if (oidc.timeoutId) { + // @ts-ignore oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, extras); } From 3978988504dd07cbbd9b55e08ac04891b9570e3f Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 18 Dec 2023 12:08:04 +0000 Subject: [PATCH 127/565] [skip ci] Update to version 7.13.8 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 31239d7d3..fb31331b1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.7", + "version": "7.13.8", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 74063ba54..9663c86f4 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.7'; +export default '7.13.8'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a1c071f4c..e64458a8d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.7", + "version": "7.13.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 74063ba54..9663c86f4 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.7'; +export default '7.13.8'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ce42f47c9..92c394202 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.7", + "version": "7.13.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7a9dab1603bf4cc1eefabc40c0d2400d689413f7 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 18 Dec 2023 12:08:05 +0000 Subject: [PATCH 128/565] [skip ci] Generate changelog to version 7.13.8 --- CHANGELOG.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ec1818c3..62929c436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.7 +## 7.13.8 + +- [b0cf4ad](https://github.com/AxaFrance/oidc-client/commit/b0cf4ad52df9c16c130cce791b05ceea7c4370c4) - fix(oidc): temp renew token fix (#1245) (release), 2023-12-18 by *Guillaume Chervet* + + +## v7.13.7 - [6667eab](https://github.com/AxaFrance/oidc-client/commit/6667eabc8c5cb0ff5874b6583b2223721bd18525) - fix(oidc): temporary fix on lock need to be continued but require refactor (release), 2023-12-15 by *Guillaume Chervet* - [23c8715](https://github.com/AxaFrance/oidc-client/commit/23c87152e55c8d7f1c51a33032d48c751b15c4c5) - fix(ci): clean changelog generation, 2023-12-15 by *Guillaume Chervet* @@ -318,15 +323,3 @@ - [aea4aea](https://github.com/AxaFrance/oidc-client/commit/aea4aea5fda1ef7c7ee6e43f8fc8efb2a0797a58) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* -## v6.25.2 - -- [612cf26](https://github.com/AxaFrance/oidc-client/commit/612cf26c1fb087c20f7207ae4e6281c2fe9d6a46) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* -- [5472e0a](https://github.com/AxaFrance/oidc-client/commit/5472e0a9e510ba14c38bd205be39b732e877353a) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* -- [945043c](https://github.com/AxaFrance/oidc-client/commit/945043c39376611ba1e417e24d55607a5a4e861b) - Update package.json (alpha), 2023-07-22 by *Guillaume Chervet* -- [776f0c2](https://github.com/AxaFrance/oidc-client/commit/776f0c22446763d89cd10412c53c964f3dd2bb57) - fix sw package test (alpha), 2023-07-22 by *Guillaume Chervet* -- [b2ed839](https://github.com/AxaFrance/oidc-client/commit/b2ed8393b061d4da8bbb67003f7940aaa7b845d3) - fix package sw remove private (alpha), 2023-07-22 by *Guillaume Chervet* -- [d3531a6](https://github.com/AxaFrance/oidc-client/commit/d3531a68b78d48e6150f71d22deba738a15391f3) - fix conflict (alpha), 2023-07-22 by *Guillaume Chervet* -- [8c3e0c9](https://github.com/AxaFrance/oidc-client/commit/8c3e0c99c2507d7a6e198db517fd120cb06f6ac7) - chore(ci): fix duplicated id (alpha), 2023-07-22 by *Guillaume Chervet* -- [4ccbef0](https://github.com/AxaFrance/oidc-client/commit/4ccbef0417543bf2a7395788315298b873327e7a) - chore(ci): add serviceworker (alpha), 2023-07-22 by *Guillaume Chervet* - - From 819962bae1d7c1e7fd997ede7bb42cce27ba76f3 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 19 Dec 2023 10:36:38 +0100 Subject: [PATCH 129/565] fix(oidc): renew with simple storage (#1246) (release) --- packages/oidc-client/src/renewTokens.ts | 6 ++++-- packages/oidc-client/src/requests.ts | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index dbcec1497..8d80ebb5b 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -1,7 +1,7 @@ import {initSession} from './initSession.js'; import {initWorkerAsync} from './initWorker.js'; import Oidc from './oidc.js'; -import {computeTimeLeft} from './parseTokens.js'; +import {computeTimeLeft, setTokens} from './parseTokens.js'; import timer from './timer.js'; import {StringMap} from './types.js'; @@ -32,7 +32,9 @@ async function loadLatestTokensAsync(oidc, configuration) { return tokens; } else { const session = initSession(oidc.configurationName, configuration.storage ?? sessionStorage); - const {tokens} = await session.initAsync(); + let {tokens} = await session.initAsync(); + // @ts-ignore + tokens = setTokens(tokens, oidc.tokens, configuration.token_renew_mode); return tokens; } } diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 345660ace..176a25c63 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -3,7 +3,6 @@ import { deriveChallengeAsync, generateRandom } from './crypto.js'; import { OidcAuthorizationServiceConfiguration } from './oidc.js'; import { parseOriginalTokens } from './parseTokens.js'; import { Fetch, StringMap } from './types.js'; -import EC, {JWK, JWT} from './jwt'; import {ILOidcLocation} from "./location"; const oneHourSecond = 60 * 60; From a12d9a9eff7dcf0989a20a5c4e8c9458cab2db53 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 19 Dec 2023 09:39:19 +0000 Subject: [PATCH 130/565] [skip ci] Update to version 7.13.9 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index fb31331b1..33ea29fec 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.8", + "version": "7.13.9", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 9663c86f4..4a09502d2 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.8'; +export default '7.13.9'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e64458a8d..671355214 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.8", + "version": "7.13.9", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 9663c86f4..4a09502d2 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.8'; +export default '7.13.9'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 92c394202..3e650d31c 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.8", + "version": "7.13.9", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 8884243a9ed0a896fc5a1cfb3f94f272bae01a87 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 19 Dec 2023 09:39:21 +0000 Subject: [PATCH 131/565] [skip ci] Generate changelog to version 7.13.9 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62929c436..79560017d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.8 +## 7.13.9 + +- [819962b](https://github.com/AxaFrance/oidc-client/commit/819962bae1d7c1e7fd997ede7bb42cce27ba76f3) - fix(oidc): renew with simple storage (#1246) (release), 2023-12-19 by *Guillaume Chervet* + + +## v7.13.8 - [b0cf4ad](https://github.com/AxaFrance/oidc-client/commit/b0cf4ad52df9c16c130cce791b05ceea7c4370c4) - fix(oidc): temp renew token fix (#1245) (release), 2023-12-18 by *Guillaume Chervet* @@ -318,8 +323,3 @@ - [e04fb4b](https://github.com/AxaFrance/oidc-client/commit/e04fb4b465178e4fe1d1b8e80c41516979e9702f) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* -## v6.25.3 - -- [aea4aea](https://github.com/AxaFrance/oidc-client/commit/aea4aea5fda1ef7c7ee6e43f8fc8efb2a0797a58) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* - - From 4b1a9a26eba51e24dd1c9c9fd0087ef0b3b1ce8b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 20 Dec 2023 09:53:05 +0100 Subject: [PATCH 132/565] fix(oidc): crash when regex on userAgent empty result iOS (#1248) (release) --- packages/oidc-client/src/initWorkerOption.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client/src/initWorkerOption.ts b/packages/oidc-client/src/initWorkerOption.ts index 87df15b17..dc1ddabed 100644 --- a/packages/oidc-client/src/initWorkerOption.ts +++ b/packages/oidc-client/src/initWorkerOption.ts @@ -68,7 +68,9 @@ export const getOperatingSystem = (navigator) => { case 'iOS': { const osVersionArray = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); - osVersion = osVersionArray[1] + '.' + osVersionArray[2] + '.' + (parseInt(osVersionArray[3]) | 0); + if(osVersionArray !=null && osVersionArray.length > 2) { + osVersion = osVersionArray[1] + '.' + osVersionArray[2] + '.' + (parseInt(osVersionArray[3]) | 0); + } break; } } @@ -126,8 +128,6 @@ export const activateServiceWorker : ServiceWorkerActivate = () : boolean =>{ } const operatingSystem = getOperatingSystem(navigator); - if (excludeOs(operatingSystem)) { - return false; - } - return true; + return !excludeOs(operatingSystem); + } \ No newline at end of file From 3811b7ef1adbf7633563e8be30c5359761d70a5e Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 20 Dec 2023 08:55:40 +0000 Subject: [PATCH 133/565] [skip ci] Update to version 7.13.10 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 33ea29fec..c6bec2243 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.9", + "version": "7.13.10", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 4a09502d2..3682bcbc0 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.9'; +export default '7.13.10'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 671355214..07a9589e3 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.9", + "version": "7.13.10", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 4a09502d2..3682bcbc0 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.9'; +export default '7.13.10'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 3e650d31c..908356c42 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.9", + "version": "7.13.10", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From fd0058bdee9a0171b635e396014713dfbb8b8e29 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 20 Dec 2023 08:55:41 +0000 Subject: [PATCH 134/565] [skip ci] Generate changelog to version 7.13.10 --- CHANGELOG.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79560017d..c449c7a05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.9 +## 7.13.10 + +- [4b1a9a2](https://github.com/AxaFrance/oidc-client/commit/4b1a9a26eba51e24dd1c9c9fd0087ef0b3b1ce8b) - fix(oidc): crash when regex on userAgent empty result iOS (#1248) (release), 2023-12-20 by *Guillaume Chervet* + + +## v7.13.9 - [819962b](https://github.com/AxaFrance/oidc-client/commit/819962bae1d7c1e7fd997ede7bb42cce27ba76f3) - fix(oidc): renew with simple storage (#1246) (release), 2023-12-19 by *Guillaume Chervet* @@ -314,12 +319,3 @@ - [8786e85](https://github.com/AxaFrance/oidc-client/commit/8786e85190dbc23de4311381b1c59f08673b0436) - fix(ci): github release (release), 2023-07-24 by *Guillaume Chervet* -## v6.25.4 - -- [9139393](https://github.com/AxaFrance/oidc-client/commit/9139393069142b05708f73a64ee81afdfaf0104f) - fix(oidc): Service Worker improper token revocation when logging out and showAccessToken=true (#1104) (release), 2023-07-24 by *kosciolek* -- [ccc7c42](https://github.com/AxaFrance/oidc-client/commit/ccc7c429cde1da743993d16db17ef343f374f00b) - fix(ci): website and packages psotinstall error when pnpm from root (#1108), 2023-07-24 by *Guillaume Chervet* -- [d0ede07](https://github.com/AxaFrance/oidc-client/commit/d0ede07c1cd1aaf8526917df299d7a308eb7ea9d) - ci(version): Add a period between version alpha|beta and run_number (#1107) (alpha), 2023-07-24 by *Jason Finch* -- [254b9f9](https://github.com/AxaFrance/oidc-client/commit/254b9f945bff154e127782522244378a3a224f94) - refactor(post-install): Alter post-install to not have a dependency on 'cpy' (#1106), 2023-07-24 by *Jason Finch* -- [e04fb4b](https://github.com/AxaFrance/oidc-client/commit/e04fb4b465178e4fe1d1b8e80c41516979e9702f) - chore(ci): invert client and react (alpha), 2023-07-22 by *Guillaume Chervet* - - From 529cabfbe7ee602325ba0f70844c969176371746 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 20 Dec 2023 10:20:24 +0100 Subject: [PATCH 135/565] fix(oidc): DPOP type jit instead of jti (#1249) (release) --- packages/oidc-client/src/jwt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index 01376ea66..c4a2c4286 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -229,7 +229,7 @@ export const generateJwtDemonstratingProofOfPossessionAsync = (jwk, method = 'PO const claims = { // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept - jit: btoa(guid()), + jti: btoa(guid()), htm: method, htu: url, iat: Math.round(Date.now() / 1000), From 57dad4b19fa50eb5ad8d44c393c37fc598954ad0 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 20 Dec 2023 09:23:04 +0000 Subject: [PATCH 136/565] [skip ci] Update to version 7.13.11 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index c6bec2243..3efd16117 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.10", + "version": "7.13.11", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 3682bcbc0..87cdf24f4 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.10'; +export default '7.13.11'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 07a9589e3..890874f6c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.10", + "version": "7.13.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 3682bcbc0..87cdf24f4 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.10'; +export default '7.13.11'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 908356c42..d14eb5f3b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.10", + "version": "7.13.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3f1d2d7c71d3588ab225f564ad4bd753d21203a8 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 20 Dec 2023 09:23:05 +0000 Subject: [PATCH 137/565] [skip ci] Generate changelog to version 7.13.11 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c449c7a05..004a94bc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.10 +## 7.13.11 + +- [529cabf](https://github.com/AxaFrance/oidc-client/commit/529cabfbe7ee602325ba0f70844c969176371746) - fix(oidc): DPOP type jit instead of jti (#1249) (release), 2023-12-20 by *Guillaume Chervet* + + +## v7.13.10 - [4b1a9a2](https://github.com/AxaFrance/oidc-client/commit/4b1a9a26eba51e24dd1c9c9fd0087ef0b3b1ce8b) - fix(oidc): crash when regex on userAgent empty result iOS (#1248) (release), 2023-12-20 by *Guillaume Chervet* @@ -314,8 +319,3 @@ - [288ce99](https://github.com/AxaFrance/oidc-client/commit/288ce9937e6e1cb8c1b7c7f6909ebef8a48f12e5) - fix(react): ajust peerDependencies (release), 2023-07-24 by *Guillaume Chervet* -## v6.25.5 - -- [8786e85](https://github.com/AxaFrance/oidc-client/commit/8786e85190dbc23de4311381b1c59f08673b0436) - fix(ci): github release (release), 2023-07-24 by *Guillaume Chervet* - - From 9ef56f17793e1bfbd668d6f001125a8f773c2370 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 28 Dec 2023 14:55:45 +0100 Subject: [PATCH 138/565] fix(oidc): Handling of errors returned from authorize endpoint (#1250) (release) --- packages/oidc-client/src/login.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index ba3a37f15..471149e50 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -110,13 +110,17 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { } const params = getParseQueryStringFromLocation(href); + + if(params.error || params.error_description) { + throw new Error(`Error from OIDC server: ${params.error} - ${params.error_description}`); + } if (params.iss && params.iss !== oidcServerConfiguration.issuer) { console.error(); - throw new Error(`issuer not valid (expected: ${oidcServerConfiguration.issuer}, received: ${params.iss})`); + throw new Error(`Issuer not valid (expected: ${oidcServerConfiguration.issuer}, received: ${params.iss})`); } if (params.state && params.state !== state) { - throw new Error(`state not valid (expected: ${state}, received: ${params.state})`); + throw new Error(`State not valid (expected: ${state}, received: ${params.state})`); } const data = { From ba324ce7b6a122cad7c2aeaccbbf74c0b3c00233 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 28 Dec 2023 13:58:15 +0000 Subject: [PATCH 139/565] [skip ci] Update to version 7.13.12 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 3efd16117..951e737df 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.11", + "version": "7.13.12", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 87cdf24f4..714ef4ad6 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.11'; +export default '7.13.12'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 890874f6c..95bdec42c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.11", + "version": "7.13.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 87cdf24f4..714ef4ad6 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.11'; +export default '7.13.12'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index d14eb5f3b..55b022c63 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.11", + "version": "7.13.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 05cb598dca3b4ea9515774de256d5b8b0d87a2e1 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 28 Dec 2023 13:58:16 +0000 Subject: [PATCH 140/565] [skip ci] Generate changelog to version 7.13.12 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 004a94bc7..09132c1b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.11 +## 7.13.12 + +- [9ef56f1](https://github.com/AxaFrance/oidc-client/commit/9ef56f17793e1bfbd668d6f001125a8f773c2370) - fix(oidc): Handling of errors returned from authorize endpoint (#1250) (release), 2023-12-28 by *Guillaume Chervet* + + +## v7.13.11 - [529cabf](https://github.com/AxaFrance/oidc-client/commit/529cabfbe7ee602325ba0f70844c969176371746) - fix(oidc): DPOP type jit instead of jti (#1249) (release), 2023-12-20 by *Guillaume Chervet* @@ -314,8 +319,3 @@ - [762ca42](https://github.com/AxaFrance/oidc-client/commit/762ca423a2efe946d4213a3c482638a386a5b555) - ci(lint): Move eslint config to root. Add GH workflow to run lint. (#1109), 2023-07-27 by *Jason Finch* -## v6.25.6 - -- [288ce99](https://github.com/AxaFrance/oidc-client/commit/288ce9937e6e1cb8c1b7c7f6909ebef8a48f12e5) - fix(react): ajust peerDependencies (release), 2023-07-24 by *Guillaume Chervet* - - From d009de8091ac256d1384466df9b3fe7de75a5629 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 28 Dec 2023 15:11:56 +0100 Subject: [PATCH 141/565] chore(ci): Update npm-publish.yml --- .github/workflows/npm-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 8f7fd0c4e..f90b150ff 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -71,7 +71,7 @@ jobs: id: which_tag run: | if [[ ${{ github.ref }} == refs/pull* ]]; then - last_commit_message=$(curl -s "https://api.github.com/repos/AxaFrance/oidc-client/pulls/${{ github.event.number }}/commits" | jq -r '.[-1].commit.message') + last_commit_message=$(curl -s "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${{ github.event.number }}/commits" | jq -r '.[-1].commit.message') else last_commit_message=$(git log --format=%B -n 1) fi From 1faaab4ecb86144ed6f3c1ed68b938804854bd36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 10:58:36 +0100 Subject: [PATCH 142/565] build(npm): bump next from 14.0.3 to 14.0.4 (#1255) Bumps [next](https://github.com/vercel/next.js) from 14.0.3 to 14.0.4. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v14.0.3...v14.0.4) --- updated-dependencies: - dependency-name: next dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 67 +++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6abcfae5f..885caab78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.0.3(react-dom@18.2.0)(react@18.2.0) + version: 14.0.4(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -956,12 +956,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.0.3: - resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} + /@next/env@14.0.4: + resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} dev: false - /@next/swc-darwin-arm64@14.0.3: - resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} + /@next/swc-darwin-arm64@14.0.4: + resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -969,8 +969,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.3: - resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} + /@next/swc-darwin-x64@14.0.4: + resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -978,8 +978,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.3: - resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} + /@next/swc-linux-arm64-gnu@14.0.4: + resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -987,8 +987,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.3: - resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} + /@next/swc-linux-arm64-musl@14.0.4: + resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -996,8 +996,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.3: - resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} + /@next/swc-linux-x64-gnu@14.0.4: + resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1005,8 +1005,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.3: - resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} + /@next/swc-linux-x64-musl@14.0.4: + resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1014,8 +1014,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.3: - resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} + /@next/swc-win32-arm64-msvc@14.0.4: + resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1023,8 +1023,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.3: - resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} + /@next/swc-win32-ia32-msvc@14.0.4: + resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1032,8 +1032,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.3: - resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} + /@next/swc-win32-x64-msvc@14.0.4: + resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4410,8 +4410,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.0.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} + /next@14.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -4425,25 +4425,26 @@ packages: sass: optional: true dependencies: - '@next/env': 14.0.3 + '@next/env': 14.0.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001565 + graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.3 - '@next/swc-darwin-x64': 14.0.3 - '@next/swc-linux-arm64-gnu': 14.0.3 - '@next/swc-linux-arm64-musl': 14.0.3 - '@next/swc-linux-x64-gnu': 14.0.3 - '@next/swc-linux-x64-musl': 14.0.3 - '@next/swc-win32-arm64-msvc': 14.0.3 - '@next/swc-win32-ia32-msvc': 14.0.3 - '@next/swc-win32-x64-msvc': 14.0.3 + '@next/swc-darwin-arm64': 14.0.4 + '@next/swc-darwin-x64': 14.0.4 + '@next/swc-linux-arm64-gnu': 14.0.4 + '@next/swc-linux-arm64-musl': 14.0.4 + '@next/swc-linux-x64-gnu': 14.0.4 + '@next/swc-linux-x64-musl': 14.0.4 + '@next/swc-win32-arm64-msvc': 14.0.4 + '@next/swc-win32-ia32-msvc': 14.0.4 + '@next/swc-win32-x64-msvc': 14.0.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros From 3a1883c343c55637aa1ce5d118cc2841c76d8752 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 10:58:54 +0100 Subject: [PATCH 143/565] build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.20.1 to 6.21.1. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.21.1/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/react-oidc-demo/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index d3b1a37ec..0c12ba741 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -21,7 +21,7 @@ "@axa-fr/react-oidc":"workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.20.1" + "react-router-dom": "^6.21.1" }, "devDependencies": { "@testing-library/jest-dom": "5.16.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 885caab78..086c4dcdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -127,8 +127,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-router-dom: - specifier: ^6.20.1 - version: 6.20.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.21.1 + version: 6.21.1(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': specifier: 5.16.5 @@ -1096,8 +1096,8 @@ packages: tslib: 2.6.2 dev: true - /@remix-run/router@1.13.1: - resolution: {integrity: sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==} + /@remix-run/router@1.14.1: + resolution: {integrity: sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==} engines: {node: '>=14.0.0'} dev: false @@ -4921,26 +4921,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.20.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==} + /react-router-dom@6.21.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QCNrtjtDPwHDO+AO21MJd7yIcr41UetYt5jzaB9Y1UYaPTCnVuJq6S748g1dE11OQlCFIQg+RtAA1SEZIyiBeA==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.13.1 + '@remix-run/router': 1.14.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.20.1(react@18.2.0) + react-router: 6.21.1(react@18.2.0) dev: false - /react-router@6.20.1(react@18.2.0): - resolution: {integrity: sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==} + /react-router@6.21.1(react@18.2.0): + resolution: {integrity: sha512-W0l13YlMTm1YrpVIOpjCADJqEUpz1vm+CMo47RuFX4Ftegwm6KOYsL5G3eiE52jnJpKvzm6uB/vTKTPKM8dmkA==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.13.1 + '@remix-run/router': 1.14.1 react: 18.2.0 dev: false From 6e63e9ea17514b1171e6659d39d5c68e2908951e Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 2 Jan 2024 10:01:34 +0000 Subject: [PATCH 144/565] [skip ci] Update to version 7.13.14 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 951e737df..aeab8c80c 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.12", + "version": "7.13.14", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 714ef4ad6..f5cbf98b6 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.12'; +export default '7.13.14'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 95bdec42c..1604d5671 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.12", + "version": "7.13.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 714ef4ad6..f5cbf98b6 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.12'; +export default '7.13.14'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 55b022c63..dbf74059b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.12", + "version": "7.13.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 117de93fa5b4caaee142796a0eabfe80104c6a23 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 2 Jan 2024 10:01:35 +0000 Subject: [PATCH 145/565] [skip ci] Generate changelog to version 7.13.14 --- CHANGELOG.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09132c1b9..5776d64c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ # Changelog -## 7.13.12 +## 7.13.14 + +- [3a1883c](https://github.com/AxaFrance/oidc-client/commit/3a1883c343c55637aa1ce5d118cc2841c76d8752) - build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252), 2024-01-02 by *dependabot[bot]* + + +## v7.13.13 + +- [1faaab4](https://github.com/AxaFrance/oidc-client/commit/1faaab4ecb86144ed6f3c1ed68b938804854bd36) - build(npm): bump next from 14.0.3 to 14.0.4 (#1255), 2024-01-02 by *dependabot[bot]* +- [d009de8](https://github.com/AxaFrance/oidc-client/commit/d009de8091ac256d1384466df9b3fe7de75a5629) - chore(ci): Update npm-publish.yml, 2023-12-28 by *Guillaume Chervet* + + +## v7.13.12 - [9ef56f1](https://github.com/AxaFrance/oidc-client/commit/9ef56f17793e1bfbd668d6f001125a8f773c2370) - fix(oidc): Handling of errors returned from authorize endpoint (#1250) (release), 2023-12-28 by *Guillaume Chervet* @@ -308,14 +319,3 @@ - [d329ce0](https://github.com/AxaFrance/oidc-client/commit/d329ce0cb013f4877cb401c6ccef316077ce9d09) - fix(ci): add set to replace workspace* (release), 2023-07-28 by *Guillaume Chervet* -## v6.26.1 - - - -## v6.26.0 - -- [7eac9e5](https://github.com/AxaFrance/oidc-client/commit/7eac9e5c10175ae6850a72e21e11bac568a01720) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* -- [9f25be7](https://github.com/AxaFrance/oidc-client/commit/9f25be794ff6b08d8ca30cc5f27dff554136d163) - refactor(lint): Enable linting on examples, fix lint warnings. (#1111), 2023-07-27 by *Jason Finch* -- [762ca42](https://github.com/AxaFrance/oidc-client/commit/762ca423a2efe946d4213a3c482638a386a5b555) - ci(lint): Move eslint config to root. Add GH workflow to run lint. (#1109), 2023-07-27 by *Jason Finch* - - From c56cc842d8da427b2aa88eb71f7d63937ea3c363 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Jan 2024 21:22:55 +0100 Subject: [PATCH 146/565] fix(react-oidc): missing console.log in useOidcFetch (release) --- packages/react-oidc/src/FetchToken.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index ca59e3240..af94a512f 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -28,7 +28,6 @@ export const useOidcFetch = (fetch: Fetch = null, configurationName = defaultCon (input: RequestInfo | URL, init?: RequestInit) => { const getOidcWithConfigurationName = () => getOidc(configurationName); const newFetch = fetchWithToken(previousFetch, getOidcWithConfigurationName); - console.log('newFetch', input) return newFetch(input, init); }, [previousFetch, configurationName], From 6e56b70998f9f22ed78c56560feae47efbfc84e6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jan 2024 20:34:53 +0000 Subject: [PATCH 147/565] [skip ci] Update to version 7.13.15 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index aeab8c80c..061e2a422 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.14", + "version": "7.13.15", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f5cbf98b6..8e8511c92 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.14'; +export default '7.13.15'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 1604d5671..352dd109f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.14", + "version": "7.13.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f5cbf98b6..8e8511c92 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.14'; +export default '7.13.15'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index dbf74059b..551ee52da 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.14", + "version": "7.13.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From da88573ed9574f236b486eaf9b0302f9b387e503 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jan 2024 20:34:55 +0000 Subject: [PATCH 148/565] [skip ci] Generate changelog to version 7.13.15 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5776d64c3..b862a4111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.14 +## 7.13.15 + +- [c56cc84](https://github.com/AxaFrance/oidc-client/commit/c56cc842d8da427b2aa88eb71f7d63937ea3c363) - fix(react-oidc): missing console.log in useOidcFetch (release), 2024-01-16 by *Guillaume Chervet* + + +## v7.13.14 - [3a1883c](https://github.com/AxaFrance/oidc-client/commit/3a1883c343c55637aa1ce5d118cc2841c76d8752) - build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252), 2024-01-02 by *dependabot[bot]* @@ -314,8 +319,3 @@ - [04f4900](https://github.com/AxaFrance/oidc-client/commit/04f4900d672e954278e6835bc31c62e4bf8660de) - try fix (release), 2023-07-28 by *Guillaume Chervet* -## v6.26.2 - -- [d329ce0](https://github.com/AxaFrance/oidc-client/commit/d329ce0cb013f4877cb401c6ccef316077ce9d09) - fix(ci): add set to replace workspace* (release), 2023-07-28 by *Guillaume Chervet* - - From f2310bc917898b779a40edecf3dd73c21ec32b47 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 25 Jan 2024 21:00:13 +0100 Subject: [PATCH 149/565] fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269) --- .../src/utils/__tests__/tokens.spec.ts | 17 ++++++++++++++++- .../src/utils/tokens.ts | 6 +++--- packages/oidc-client/src/parseTokens.spec.ts | 16 +++++++++++++++- packages/oidc-client/src/parseTokens.ts | 6 +++--- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 41435f4b2..b8559154b 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it } from 'vitest'; import { OidcServerConfiguration } from '../../types'; -import { _hideTokens, extractTokenPayload, isTokensOidcValid, isTokensValid } from '..'; +import {_hideTokens, extractTokenPayload, isTokensOidcValid, isTokensValid, parseJwt} from '..'; import { OidcConfigBuilder, OidcServerConfigBuilder, TokenBuilder } from './testHelper'; describe('tokens', () => { @@ -31,6 +31,21 @@ describe('tokens', () => { }); describe('extractTokenPayload', () => { + + it('parseJwtShouldExtractData', async () => { + const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" + const result = parseJwt(claimsPart); + expect(result).toStrictEqual({ + "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", + "scope": "openid email profile", + "email_verified": true, + "name": "ƴǢÁìÇ 小名-ホルヘ", + "preferred_username": "testingcharacters@inventedmail.com", + "given_name": "ƴǢÁìÇ", + "family_name": "小名-ホルヘ" + }); + }); + it('can extract token payload', () => { const result = extractTokenPayload( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 80a9157db..190416262 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -10,9 +10,9 @@ import { } from '../types'; import { countLetter } from './strings'; -function parseJwt(token: string) { +export const parseJwt = (payload: string) => { return JSON.parse( - b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/')), + b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/')), ); } function b64DecodeUnicode(str: string) { @@ -51,7 +51,7 @@ const extractTokenPayload = (token?: string) => { return null; } if (countLetter(token, '.') === 2) { - return parseJwt(token); + return parseJwt(token.split('.')[1]); } else { return null; } diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 070bbeea6..e520d7b4a 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,6 +1,6 @@ import { describe, expect,it } from 'vitest'; -import {getValidTokenAsync, isTokensOidcValid, parseOriginalTokens} from "./parseTokens"; +import { getValidTokenAsync, isTokensOidcValid, parseJwt, parseOriginalTokens} from "./parseTokens"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -25,6 +25,20 @@ describe('ParseTokens test Suite', () => { }); }); + it('parseJwtShouldExtractData', async () => { + const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" + const result = parseJwt(claimsPart); + expect(result).toStrictEqual({ + "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", + "scope": "openid email profile", + "email_verified": true, + "name": "ƴǢÁìÇ 小名-ホルヘ", + "preferred_username": "testingcharacters@inventedmail.com", + "given_name": "ƴǢÁìÇ", + "family_name": "小名-ホルヘ" + }); + }); + const id_token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUwNWZkODljLTM4YzktNGI2Mi04ZjQ3LWI4MGQ0ZTNhYjYxNSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsInN1YiI6ImFkbWluIiwiYXVkIjoiM2FTbk5XUGxZQWQwOGVES3c1UUNpSWVMcWpIdHkxTTVzSGFzcDJDZWREcWYzbmJkZm8xUFo1cXhmbWoyaFhkUyIsImV4cCI6MTY5MDk4NzQ1NCwiYXV0aF90aW1lIjoxNjkwOTg2NTUxLCJpYXQiOjE2OTA5ODY1NTQsImFjciI6IjAiLCJhenAiOiIzYVNuTldQbFlBZDA4ZURLdzVRQ2lJZUxxakh0eTFNNXNIYXNwMkNlZERxZjNuYmRmbzFQWjVxeGZtajJoWGRTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGdyb3VwcyBvZmZsaW5lX2FjY2VzcyIsIm5iZiI6MTY5MDk4NjU1NCwianRpIjoiNjMiLCJub25jZSI6ImNpQkVVOTdaVmRWVSIsImdyb3VwcyI6WyJhZG1pbiJdLCJuYW1lIjoiQWRtaW5pc3RyYXRvciIsInVwZGF0ZWRfYXQiOjE2OTA5ODY1NDV9.2MUdtQR_QtzDY9BTMctG8C4uvg92DgMIUUoJed2cI7WTd5_VEPFW87esDQLw4snVdAJM1_Wf3wB88B2MXFDMCnMTNn0TMnzetRDiG3xlr2LL-geL5SNgwD0Y6RPK_aITjrC9uiQCTj3LPEENrBulNRZPURwaVon9WUVNuuBmMTKd7QKEuFN0zYDoRs0HnXo6WKnFy1rldLGh_JpA3PBUuXt4VMjfGQ7yYEuNn7MkFVDX6OnTffR8jTQp74hREvuRLFjYxfgfgu547X7yIcboOl81D0ZQlP-gfvBOeypZolRLScuqAA3fHBYvE0vCtOM6ObekfeeTDfms75csMLUuZtTR07x32xYC8vdoFsY0sRpMByTqlhsae9VX_rETJ7PIWEfruojzcj47WN9dG0K3pdPiJHEwZ1CKgZfU_cY0gtuAGaIcIjKL0txXCevaiIiIsrgSU_HTjNVybp4WHSAs3h6x0XLz4_91luCylsaoMQbwKOQNwAfr2L74jF6DOg-8DIPb-WClRQzaQtrkx_iv6FtqCB3ogFoZwi6xljdYUc2EHUmoAo-LXal-QAgUXGGzfFU2YOpxV3RyAbMGPm7PfkMVzDsDJwORJNhh38QQ6o88GgNnV28BT-d2G0n7okc0QC6o2IW0jpyCrI6v0hWOBUX2EqiJ5Wao-4LYZfCaRgU"; const refresh_token ="DEsqDca7nDGSgT6tJPkCwbPy98B8VOC4AA55lOPs03G3hqhZ8WH08REBcwTZg1s0jZyVoA3iCXzm4PPJ096gjV7ZKYyN8vnFKw6P6KLV3tUI6mWFaSROoh1LipThFrkS"; diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index b1e6f83df..0df18cb16 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -2,15 +2,15 @@ import {sleepAsync} from './initWorker.js'; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); -const parseJwt = (token) => JSON.parse(b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/'))); +export const parseJwt = (payload:string) => JSON.parse(b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/'))); -const extractTokenPayload = (token) => { +const extractTokenPayload = (token:string) => { try { if (!token) { return null; } if (countLetter(token, '.') === 2) { - return parseJwt(token); + return parseJwt(token.split('.')[1]); } else { return null; } From d7d2c149cff306679696c3cf47aeffae364a0fe5 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 25 Jan 2024 20:02:52 +0000 Subject: [PATCH 150/565] [skip ci] Update to version 7.13.16 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 061e2a422..5aa9cf552 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.15", + "version": "7.13.16", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 8e8511c92..52e8c9412 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.15'; +export default '7.13.16'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 352dd109f..55a894189 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.15", + "version": "7.13.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 8e8511c92..52e8c9412 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.15'; +export default '7.13.16'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 551ee52da..4beaeb130 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.15", + "version": "7.13.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From df754bd51e94bce277d7b5baaadc109042ad8c89 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 25 Jan 2024 20:02:53 +0000 Subject: [PATCH 151/565] [skip ci] Generate changelog to version 7.13.16 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b862a4111..5f2755cb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.15 +## 7.13.16 + +- [f2310bc](https://github.com/AxaFrance/oidc-client/commit/f2310bc917898b779a40edecf3dd73c21ec32b47) - fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269), 2024-01-25 by *Guillaume Chervet* + + +## v7.13.15 - [c56cc84](https://github.com/AxaFrance/oidc-client/commit/c56cc842d8da427b2aa88eb71f7d63937ea3c363) - fix(react-oidc): missing console.log in useOidcFetch (release), 2024-01-16 by *Guillaume Chervet* @@ -314,8 +319,3 @@ - [9c7a143](https://github.com/AxaFrance/oidc-client/commit/9c7a143797cffff1044c13787c6ceaf690fa4c87) - fix build (release), 2023-07-28 by *Guillaume Chervet* -## v6.26.3 - -- [04f4900](https://github.com/AxaFrance/oidc-client/commit/04f4900d672e954278e6835bc31c62e4bf8660de) - try fix (release), 2023-07-28 by *Guillaume Chervet* - - From b0510eb8d7170e8e142cb2d9bec01f41f610ed51 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 26 Jan 2024 12:53:54 +0100 Subject: [PATCH 152/565] feat(oidc): add DPOP configuration (#1259) (release) --- .../public/OidcTrustedDomains.js | 2 + examples/react-oidc-demo/src/FetchUser.tsx | 4 +- examples/react-oidc-demo/src/MultiAuth.tsx | 44 +++- packages/oidc-client/README.md | 31 +++ packages/oidc-client/src/checkSession.ts | 3 +- packages/oidc-client/src/initSession.ts | 2 +- packages/oidc-client/src/initWorker.ts | 2 +- packages/oidc-client/src/jwt.ts | 204 ++++++++++-------- packages/oidc-client/src/keepSession.ts | 78 +++++++ packages/oidc-client/src/login.ts | 7 +- packages/oidc-client/src/logout.ts | 1 + packages/oidc-client/src/oidc.ts | 166 +++----------- packages/oidc-client/src/parseTokens.ts | 2 +- packages/oidc-client/src/renewTokens.ts | 64 +++++- packages/oidc-client/src/requests.ts | 2 +- packages/oidc-client/src/types.ts | 9 + packages/oidc-client/src/user.ts | 3 +- packages/react-oidc/README.md | 36 +++- readme.md | 3 +- 19 files changed, 408 insertions(+), 255 deletions(-) create mode 100644 packages/oidc-client/src/keepSession.ts diff --git a/examples/react-oidc-demo/public/OidcTrustedDomains.js b/examples/react-oidc-demo/public/OidcTrustedDomains.js index 5bc49de89..416c4626a 100644 --- a/examples/react-oidc-demo/public/OidcTrustedDomains.js +++ b/examples/react-oidc-demo/public/OidcTrustedDomains.js @@ -21,4 +21,6 @@ trustedDomains.config_separate_oidc_access_token_domains = { oidcDomains: ["https://demo.duendesoftware.com"], accessTokenDomains: ["https://myapi"] }; + +trustedDomains.config_with_dpop = { domains: ["https://demo.duendesoftware.com"], showAccessToken: true }; //# sourceMappingURL=OidcTrustedDomains.js.map \ No newline at end of file diff --git a/examples/react-oidc-demo/src/FetchUser.tsx b/examples/react-oidc-demo/src/FetchUser.tsx index b4178363e..cc4795aa5 100644 --- a/examples/react-oidc-demo/src/FetchUser.tsx +++ b/examples/react-oidc-demo/src/FetchUser.tsx @@ -46,7 +46,7 @@ const UserInfoWithFetchHoc = withOidcFetch(fetch)(DisplayUserInfo); export const FetchUserHoc = () => ; -export const FetchUserHook = () => { - const { fetch } = useOidcFetch(); +export const FetchUserHook = (props:any) => { + const { fetch } = useOidcFetch(window.fetch, props.configurationName); return ; }; diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 38ee6663f..77e83b461 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -8,6 +8,7 @@ import { CallBackSuccess } from './override/Callback.component'; import Loading from './override/Loading.component'; import ServiceWorkerNotSupported from './override/ServiceWorkerNotSupported.component'; import SessionLost from './override/SessionLost.component'; +import {FetchUserHook} from "./FetchUser"; const fetchWithLogs = (fetch: Fetch) => async (...params: Parameters) => { const [url, options, ...rest] = params; @@ -45,6 +46,7 @@ const MultiAuth = ({ configurationName, handleConfigurationChange }) => { + {!isAuthenticated && } {isAuthenticatedDefault && } @@ -118,6 +120,27 @@ export const MultiAuthContainer = () => { redirect_uri: callBack, silent_redirect_uri, }, + config_with_dpop: { + ...configurationIdentityServer, + redirect_uri: callBack, + silent_redirect_uri, + demonstrating_proof_of_possession: true, + /*demonstrating_proof_of_possession_configuration: { + importKeyAlgorithm: { + name: "RSASSA-PKCS1-v1_5", + hash: { name: "SHA-256" }, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512" + }, + signAlgorithm: { name: "RSASSA-PKCS1-v1_5" }, + generateKeyAlgorithm: { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 2048, //can be 1024, 2048, or 4096 + publicExponent: new Uint8Array([0x01, 0x00, 0x01]), + hash: { name: "SHA-256" }, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512" + }, + digestAlgorithm: { name: "SHA-256" }, + jwtHeaderAlgorithm: "RS256", + },*/ + } }; const handleConfigurationChange = (event) => { const configurationName = event.target.value; @@ -176,15 +199,18 @@ const DisplayAccessToken = ({ configurationName }) => { return

you are not authentified

; } return ( -
-
-
Access Token
-

Please consider to configure the ServiceWorker in order to protect your application from XSRF attacks. "access_token" and "refresh_token" will never be accessible from your client side javascript.

- {

Access Token: {JSON.stringify(accessToken)}

} - {accessTokenPayload != null &&

Access Token Payload: {JSON.stringify(accessTokenPayload)}

} -
Id Token
- {idTokenPayload != null &&

Access Token Payload: {JSON.stringify(idTokenPayload)}

} + <> +
+
+
Access Token
+

Please consider to configure the ServiceWorker in order to protect your application from XSRF attacks. "access_token" and "refresh_token" will never be accessible from your client side javascript.

+ {

Access Token: {JSON.stringify(accessToken)}

} + {accessTokenPayload != null &&

Access Token Payload: {JSON.stringify(accessTokenPayload)}

} +
Id Token
+ {idTokenPayload != null &&

Access Token Payload: {JSON.stringify(idTokenPayload)}

} +
-
+ + ); }; diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index b958d2bc0..2b9828817 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -205,8 +205,37 @@ const configuration = { monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] + location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access + demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow }; + + +interface DemonstratingProofOfPossessionConfiguration { + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, + digestAlgorithm: AlgorithmIdentifier, + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, + jwtHeaderAlgorithm: string +}; + +// default value of demonstrating_proof_of_possession_configuration +const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' +}; + + ``` ## API @@ -374,6 +403,8 @@ More information about OIDC - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with openid connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) +- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) +- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) ## Hash route diff --git a/packages/oidc-client/src/checkSession.ts b/packages/oidc-client/src/checkSession.ts index 66124d9e9..e291ef2c1 100644 --- a/packages/oidc-client/src/checkSession.ts +++ b/packages/oidc-client/src/checkSession.ts @@ -1,9 +1,10 @@ import { CheckSessionIFrame } from './checkSessionIFrame.js'; import { _silentLoginAsync, SilentLoginResponse } from './silentLogin.js'; import { OidcConfiguration } from './types.js'; +import Oidc from "./oidc"; // eslint-disable-next-line @typescript-eslint/ban-types -export const startCheckSessionAsync = (oidc:any, oidcDatabase:any, configuration :OidcConfiguration) => (checkSessionIFrameUri, clientId, sessionState, isSilentSignin = false) => { +export const startCheckSessionAsync = (oidc:Oidc, oidcDatabase:any, configuration :OidcConfiguration) => (checkSessionIFrameUri, clientId, sessionState, isSilentSignin = false) => { const silentLoginAsync = (extras, state = undefined, scope = undefined):Promise => { return _silentLoginAsync(oidc.configurationName, configuration, oidc.publishEvent.bind(oidc))(extras, state, scope); }; diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index f582108b0..3d79b69b3 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -29,7 +29,7 @@ export const initSession = (configurationName, storage = sessionStorage) => { storage[`oidc.nonce.${configurationName}`] = nonce.nonce; }; - const setDemonstratingProofOfPossessionJwkAsync = (jwk) => { + const setDemonstratingProofOfPossessionJwkAsync = (jwk:JsonWebKey) => { storage[`oidc.jwk.${configurationName}`] = JSON.stringify(jwk); }; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 959bc0a75..8a5d7d9ab 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -171,7 +171,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { return result.demonstratingProofOfPossessionNonce; }; - const setDemonstratingProofOfPossessionJwkAsync = async (demonstratingProofOfPossessionJwk:string) => { + const setDemonstratingProofOfPossessionJwkAsync = async (demonstratingProofOfPossessionJwk:JsonWebKey) => { const demonstratingProofOfPossessionJwkJson = JSON.stringify(demonstratingProofOfPossessionJwk); sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionJwk', data: { demonstratingProofOfPossessionJwkJson }, configurationName }); }; diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index c4a2c4286..2abe55a2b 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -4,6 +4,8 @@ // // because... JavaScript, Strings, and Buffers // @ts-ignore +import {DemonstratingProofOfPossessionConfiguration} from "./types"; + function strToUint8(str) { return new TextEncoder().encode(str); } @@ -56,19 +58,42 @@ function strToUrlBase64(str) { return binToUrlBase64(utf8ToBinaryString(str)); } -export var JWT = {}; +export const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' +} + + // @ts-ignore -JWT.sign = (jwk, headers, claims, jwtHeaderType= 'dpop+jwt') => { +const sign = async (jwk, headers, claims, demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration, jwtHeaderType= 'dpop+jwt') => { // Make a shallow copy of the key // (to set ext if it wasn't already set) jwk = Object.assign({}, jwk); // The headers should probably be empty headers.typ = jwtHeaderType; - headers.alg = 'ES256'; - if (!headers.kid) { - // alternate: see thumbprint function below - headers.jwk = { kty: jwk.kty, crv: jwk.crv, x: jwk.x, y: jwk.y }; + headers.alg = demonstratingProofOfPossessionConfiguration.jwtHeaderAlgorithm; + switch (headers.alg) { + case 'ES256': //if (!headers.kid) { + // alternate: see thumbprint function below + headers.jwk = {kty: jwk.kty, crv: jwk.crv, x: jwk.x, y: jwk.y}; + //} + break; + case 'RS256': + headers.jwk = {kty: jwk.kty, n: jwk.n, e: jwk.e, kid: headers.kid}; + break; + default: + throw new Error('Unknown or not implemented JWS algorithm'); } const jws = { @@ -81,11 +106,7 @@ JWT.sign = (jwk, headers, claims, jwtHeaderType= 'dpop+jwt') => { }; // To import as EC (ECDSA, P-256, SHA-256, ES256) - const keyType = { - name: 'ECDSA', - namedCurve: 'P-256', - hash: {name: 'ES256'} - }; + const keyType = demonstratingProofOfPossessionConfiguration.importKeyAlgorithm; // To make re-exportable as JSON (or DER/PEM) const exportable = true; @@ -95,80 +116,110 @@ JWT.sign = (jwk, headers, claims, jwtHeaderType= 'dpop+jwt') => { // Actually do the import, which comes out as an abstract key type // @ts-ignore - return window.crypto.subtle - // @ts-ignore - .importKey('jwk', jwk, keyType, exportable, privileges) - .then(function(privateKey) { - // Convert UTF-8 to Uint8Array ArrayBuffer - // @ts-ignore - const data = strToUint8(jws.protected + '.' + jws.payload); - - // The signature and hash should match the bit-entropy of the key - // https://tools.ietf.org/html/rfc7518#section-3 - const signatureType = {name: 'ECDSA', hash: {name: 'SHA-256'}}; - - return window.crypto.subtle.sign(signatureType, privateKey, data).then(function(signature) { - // returns an ArrayBuffer containing a JOSE (not X509) signature, - // which must be converted to Uint8 to be useful - // @ts-ignore - jws.signature = uint8ToUrlBase64(new Uint8Array(signature)); - - // JWT is just a "compressed", "protected" JWS - // @ts-ignore - return jws.protected + '.' + jws.payload + '.' + jws.signature; - }); - }); + const privateKey = await window.crypto.subtle.importKey('jwk', jwk, keyType, exportable, privileges); + // Convert UTF-8 to Uint8Array ArrayBuffer + // @ts-ignore + const data = strToUint8(`${jws.protected}.${jws.payload}`); + + // The signature and hash should match the bit-entropy of the key + // https://tools.ietf.org/html/rfc7518#section-3 + const signatureType = demonstratingProofOfPossessionConfiguration.signAlgorithm; + + const signature = await window.crypto.subtle.sign(signatureType, privateKey, data); + // returns an ArrayBuffer containing a JOSE (not X509) signature, + // which must be converted to Uint8 to be useful + // @ts-ignore + jws.signature = uint8ToUrlBase64(new Uint8Array(signature)); + // JWT is just a "compressed", "protected" JWS + // @ts-ignore + return `${jws.protected}.${jws.payload}.${jws.signature}`; }; +export var JWT = {sign}; + -const EC = {}; // @ts-ignore -EC.generate = function() { - const keyType = { - name: 'ECDSA', - namedCurve: 'P-256' - }; +const generate = async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { + const keyType = generateKeyAlgorithm; const exportable = true; const privileges = ['sign', 'verify']; // @ts-ignore - return window.crypto.subtle.generateKey(keyType, exportable, privileges).then(function(key) { - // returns an abstract and opaque WebCrypto object, - // which in most cases you'll want to export as JSON to be able to save - return window.crypto.subtle.exportKey('jwk', key.privateKey); - }); + const key = await window.crypto.subtle.generateKey(keyType, exportable, privileges); + // returns an abstract and opaque WebCrypto object, + // which in most cases you'll want to export as JSON to be able to save + return await window.crypto.subtle.exportKey('jwk', key.privateKey); }; // Create a Public Key from a Private Key // // chops off the private parts // @ts-ignore -EC.neuter = function(jwk) { +const neuter = jwk => { const copy = Object.assign({}, jwk); delete copy.d; copy.key_ops = ['verify']; return copy; }; -export var JWK = {}; +const EC = { + generate, + neuter +}; // @ts-ignore -JWK.thumbprint = function(jwk) { +const thumbprint = async (jwk, digestAlgorithm: AlgorithmIdentifier) => { + let sortedPub; // lexigraphically sorted, no spaces - const sortedPub = '{"crv":"CRV","kty":"EC","x":"X","y":"Y"}' - .replace('CRV', jwk.crv) - .replace('X', jwk.x) - .replace('Y', jwk.y); - + switch (jwk.kty) { + case 'EC': + sortedPub = '{"crv":"CRV","kty":"EC","x":"X","y":"Y"}' + .replace('CRV', jwk.crv) + .replace('X', jwk.x) + .replace('Y', jwk.y); + break; + case 'RSA': + sortedPub = '{"e":"E","kty":"RSA","n":"N"}' + .replace('E', jwk.e) + .replace('N', jwk.n); + break; + default: + throw new Error('Unknown or not implemented JWK type'); + } // The hash should match the size of the key, // but we're only dealing with P-256 - return window.crypto.subtle - .digest({ name: 'SHA-256' }, strToUint8(sortedPub)) - .then(function(hash) { - return uint8ToUrlBase64(new Uint8Array(hash)); - }); -}; + const hash = await window.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); + return uint8ToUrlBase64(new Uint8Array(hash)); +} + +export var JWK = {thumbprint}; + +export const generateJwkAsync = async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { + // @ts-ignore + const jwk = await EC.generate(generateKeyAlgorithm); + console.info('Private Key:', JSON.stringify(jwk)); + // @ts-ignore + console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); + return jwk; +} +export const generateJwtDemonstratingProofOfPossessionAsync = (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk, method = 'POST', url: string, extrasClaims={}) => { -const guid = function () { + const claims = { + // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept + jti: btoa(guid()), + htm: method, + htu: url, + iat: Math.round(Date.now() / 1000), + ...extrasClaims, + }; + // @ts-ignore + const kid = await JWK.thumbprint(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); + // @ts-ignore + const jwt = await JWT.sign(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) + // console.info('JWT:', jwt); + return jwt; +} + +const guid = () => { // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or // pseudo-random numbers. // The algorithm is as follows: @@ -213,36 +264,3 @@ const guid = function () { return guidResponse; }; - - -export const generateJwkAsync = () => { - // @ts-ignore - return EC.generate().then(function(jwk) { - // console.info('Private Key:', JSON.stringify(jwk)); - // @ts-ignore - // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); - return jwk; - }); -} - -export const generateJwtDemonstratingProofOfPossessionAsync = (jwk, method = 'POST', url: string, extrasClaims={}) => { - - const claims = { - // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept - jti: btoa(guid()), - htm: method, - htu: url, - iat: Math.round(Date.now() / 1000), - ...extrasClaims, - }; - // @ts-ignore - return JWK.thumbprint(jwk).then(function(kid) { - // @ts-ignore - return JWT.sign(jwk, { /*kid: kid*/ }, claims).then(function(jwt) { - // console.info('JWT:', jwt); - return jwt; - }); - }); -} - -export default EC; \ No newline at end of file diff --git a/packages/oidc-client/src/keepSession.ts b/packages/oidc-client/src/keepSession.ts new file mode 100644 index 000000000..018733877 --- /dev/null +++ b/packages/oidc-client/src/keepSession.ts @@ -0,0 +1,78 @@ +import {initWorkerAsync} from "./initWorker"; +import {autoRenewTokens} from "./renewTokens"; +import {initSession} from "./initSession"; +import {setTokens} from "./parseTokens"; +import {eventNames} from "./events"; +import Oidc from "./oidc"; + +export const tryKeepSessionAsync = async (oidc: Oidc) =>{ + + let serviceWorker; + if (oidc.tokens != null) { + return false; + } + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_begin, {}); + try { + const configuration = oidc.configuration; + const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); + serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); + if (serviceWorker) { + const { tokens } = await serviceWorker.initAsync(oidcServerConfiguration, 'tryKeepExistingSessionAsync', configuration); + if (tokens) { + serviceWorker.startKeepAliveServiceWorker(); + // @ts-ignore + oidc.tokens = tokens; + const getLoginParams = serviceWorker.getLoginParams(oidc.configurationName); + // @ts-ignore + oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.refreshToken, oidc.tokens.expiresAt, getLoginParams.extras); + const sessionState = await serviceWorker.getSessionStateAsync(); + // @ts-ignore + await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { + success: true, + message: 'tokens inside ServiceWorker are valid', + }); + return true; + } + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { + success: false, + message: 'no exiting session found', + }); + } else { + if (configuration.service_worker_relative_url) { + oidc.publishEvent(eventNames.service_worker_not_supported_by_browser, { + message: 'service worker is not supported by this browser', + }); + } + const session = initSession(oidc.configurationName, configuration.storage ?? sessionStorage); + const { tokens } = await session.initAsync(); + if (tokens) { + // @ts-ignore + oidc.tokens = setTokens(tokens, null, configuration.token_renew_mode); + const getLoginParams = session.getLoginParams(); + // @ts-ignore + oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, getLoginParams.extras); + const sessionState = await session.getSessionStateAsync(); + // @ts-ignore + await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { + success: true, + message: 'tokens inside storage are valid', + }); + return true; + } + } + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { + success: false, + message: serviceWorker ? 'service worker sessions not retrieved' : 'session storage sessions not retrieved', + }); + return false; + } catch (exception) { + console.error(exception); + if (serviceWorker) { + await serviceWorker.clearAsync(); + } + oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_error, 'tokens inside ServiceWorker are invalid'); + return false; + } +} \ No newline at end of file diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 471149e50..473c14055 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -11,6 +11,7 @@ import {getParseQueryStringFromLocation} from './route-utils.js'; import {OidcConfiguration, StringMap} from './types.js'; import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; import {ILOidcLocation} from "./location"; +import Oidc from "./oidc"; // eslint-disable-next-line @typescript-eslint/ban-types export const defaultLoginAsync = (configurationName:string, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function, oidcLocation: ILOidcLocation) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { @@ -75,7 +76,7 @@ export const defaultLoginAsync = (configurationName:string, configuration:OidcCo return loginLocalAsync(); }; -export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { +export const loginCallbackAsync = (oidc:Oidc) => async (isSilentSignin = false) => { try { oidc.publishEvent(eventNames.loginCallbackAsync_begin, {}); const configuration = oidc.configuration; @@ -148,14 +149,14 @@ export const loginCallbackAsync = (oidc) => async (isSilentSignin = false) => { const url = oidcServerConfiguration.tokenEndpoint; const headersExtras = {}; if(configuration.demonstrating_proof_of_possession) { - const jwk = await generateJwkAsync(); + const jwk = await generateJwkAsync(configuration.demonstrating_proof_of_possession_configuration.generateKeyAlgorithm); if (serviceWorker) { await serviceWorker.setDemonstratingProofOfPossessionJwkAsync(jwk); } else { const session = initSession(oidc.configurationName, configuration.storage); await session.setDemonstratingProofOfPossessionJwkAsync(jwk); } - headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(jwk, 'POST', url); + headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(configuration.demonstrating_proof_of_possession_configuration)(jwk, 'POST', url); } const tokenResponse = await performFirstTokenRequestAsync(storage)(url, diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 782984f06..33116c865 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -4,6 +4,7 @@ import { performRevocationRequestAsync, TOKEN_TYPE } from './requests.js'; import timer from './timer.js'; import { StringMap } from './types.js'; import {ILOidcLocation} from "./location"; +import Oidc from "./oidc"; export const oidcLogoutTokens = { access_token: 'access_token', diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index eb55d301b..bbd925d0b 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -5,8 +5,13 @@ import {initSession} from './initSession.js'; import {defaultServiceWorkerUpdateRequireCallback, initWorkerAsync, sleepAsync} from './initWorker.js'; import {defaultLoginAsync, loginCallbackAsync} from './login.js'; import {destroyAsync, logoutAsync} from './logout.js'; -import {computeTimeLeft, isTokensOidcValid, setTokens, TokenRenewMode, Tokens,} from './parseTokens.js'; -import {autoRenewTokens, renewTokensAndStartTimerAsync} from './renewTokens.js'; +import {isTokensOidcValid, TokenRenewMode, Tokens,} from './parseTokens.js'; +import { + autoRenewTokens, + renewTokensAndStartTimerAsync, + synchroniseTokensStatus, + syncTokensInfoAsync +} from './renewTokens.js'; import {fetchFromIssuer, performTokenRequestAsync} from './requests.js'; import {getParseQueryStringFromLocation} from './route-utils.js'; import defaultSilentLoginAsync, {_silentLoginAsync} from './silentLogin.js'; @@ -14,9 +19,13 @@ import timer from './timer.js'; import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap} from './types.js'; import {userInfoAsync} from './user.js'; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; -import {generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import { + defaultDemonstratingProofOfPossessionConfiguration, + generateJwtDemonstratingProofOfPossessionAsync +} from "./jwt"; import {ILOidcLocation, OidcLocation} from "./location"; import {activateServiceWorker} from "./initWorkerOption"; +import {tryKeepSessionAsync} from "./keepSession"; @@ -83,11 +92,11 @@ export class Oidc { public userInfo: null; public tokens?: Tokens; public events: Array; - private timeoutId: NodeJS.Timeout; + public timeoutId: NodeJS.Timeout | number; public configurationName: string; - private checkSessionIFrame: CheckSessionIFrame; + public checkSessionIFrame: CheckSessionIFrame; private getFetch: () => Fetch; - private location: ILOidcLocation; + public location: ILOidcLocation; constructor(configuration:OidcConfiguration, configurationName = 'default', getFetch : () => Fetch, location: ILOidcLocation = new OidcLocation()) { let silent_login_uri = configuration.silent_login_uri; if (configuration.silent_redirect_uri && !configuration.silent_login_uri) { @@ -112,6 +121,7 @@ export class Oidc { logout_tokens_to_invalidate: configuration.logout_tokens_to_invalidate ?? ['access_token', 'refresh_token'], service_worker_update_require_callback, service_worker_activate: configuration.service_worker_activate ?? activateServiceWorker, + demonstrating_proof_of_possession_configuration: configuration.demonstrating_proof_of_possession_configuration ?? defaultDemonstratingProofOfPossessionConfiguration, }; this.getFetch = getFetch ?? getFetchDefault; @@ -225,78 +235,8 @@ Please checkout that you are using OIDC hook inside a { - let serviceWorker; - if (this.tokens != null) { - return false; - } - this.publishEvent(eventNames.tryKeepExistingSessionAsync_begin, {}); - try { - const configuration = this.configuration; - const oidcServerConfiguration = await this.initAsync(configuration.authority, configuration.authority_configuration); - serviceWorker = await initWorkerAsync(configuration, this.configurationName); - if (serviceWorker) { - const { tokens } = await serviceWorker.initAsync(oidcServerConfiguration, 'tryKeepExistingSessionAsync', configuration); - if (tokens) { - serviceWorker.startKeepAliveServiceWorker(); - // @ts-ignore - this.tokens = tokens; - const getLoginParams = serviceWorker.getLoginParams(this.configurationName); - // @ts-ignore - this.timeoutId = autoRenewTokens(this, this.tokens.refreshToken, this.tokens.expiresAt, getLoginParams.extras); - const sessionState = await serviceWorker.getSessionStateAsync(); - // @ts-ignore - await this.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); - this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { - success: true, - message: 'tokens inside ServiceWorker are valid', - }); - return true; - } - this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { - success: false, - message: 'no exiting session found', - }); - } else { - if (configuration.service_worker_relative_url) { - this.publishEvent(eventNames.service_worker_not_supported_by_browser, { - message: 'service worker is not supported by this browser', - }); - } - const session = initSession(this.configurationName, configuration.storage ?? sessionStorage); - const { tokens } = await session.initAsync(); - if (tokens) { - // @ts-ignore - this.tokens = setTokens(tokens, null, configuration.token_renew_mode); - const getLoginParams = session.getLoginParams(); - // @ts-ignore - this.timeoutId = autoRenewTokens(this, tokens.refreshToken, this.tokens.expiresAt, getLoginParams.extras); - const sessionState = await session.getSessionStateAsync(); - // @ts-ignore - await this.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); - this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { - success: true, - message: 'tokens inside storage are valid', - }); - return true; - } - } - this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { - success: false, - message: serviceWorker ? 'service worker sessions not retrieved' : 'session storage sessions not retrieved', - }); - return false; - } catch (exception) { - console.error(exception); - if (serviceWorker) { - await serviceWorker.clearAsync(); - } - this.publishEvent(eventNames.tryKeepExistingSessionAsync_error, 'tokens inside ServiceWorker are invalid'); - return false; - } - }; - - this.tryKeepExistingSessionPromise = funcAsync(); + + this.tryKeepExistingSessionPromise = tryKeepSessionAsync(this); return this.tryKeepExistingSessionPromise.then((result) => { this.tryKeepExistingSessionPromise = null; return result; @@ -349,8 +289,11 @@ Please checkout that you are using OIDC hook inside a 0) ? 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' : 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_INVALID'; - const nonce = await serviceWorker.getNonceAsync(); - return { tokens, status, nonce }; - } - nonce = await serviceWorker.getNonceAsync(); - } else { - const session = initSession(configurationName, configuration.storage ?? sessionStorage); - const { tokens, status } = await session.initAsync(); - if (!tokens) { - return { tokens: null, status: 'LOGOUT_FROM_ANOTHER_TAB', nonce: nullNonce }; - } else if (status === 'SESSIONS_LOST') { - return { tokens: null, status: 'SESSIONS_LOST', nonce: nullNonce }; - } else if (tokens.issuedAt !== currentTokens.issuedAt) { - const timeLeft = computeTimeLeft(configuration.refresh_time_before_tokens_expiration_in_second, tokens.expiresAt); - const status = (timeLeft > 0) ? 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' : 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_INVALID'; - const nonce = await session.getNonceAsync(); - return { tokens, status, nonce }; - } - nonce = await session.getNonceAsync(); - } - - const timeLeft = computeTimeLeft(configuration.refresh_time_before_tokens_expiration_in_second, currentTokens.expiresAt); - const status = (timeLeft > 0) ? 'TOKENS_VALID' : 'TOKENS_INVALID'; - if (forceRefresh) { - return { tokens: currentTokens, status: 'FORCE_REFRESH', nonce }; - } - return { tokens: currentTokens, status, nonce }; + return await generateJwtDemonstratingProofOfPossessionAsync(configuration.demonstrating_proof_of_possession_configuration)(jwk, method, url, claimsExtras); } loginCallbackWithAutoTokensRenewPromise:Promise = null; diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index 0df18cb16..d79f35846 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -20,7 +20,7 @@ const extractTokenPayload = (token:string) => { return null; }; -const countLetter = (str, find) => { +const countLetter = (str : string, find) => { return (str.split(find)).length - 1; }; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 8d80ebb5b..db7fd883b 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -3,9 +3,9 @@ import {initWorkerAsync} from './initWorker.js'; import Oidc from './oidc.js'; import {computeTimeLeft, setTokens} from './parseTokens.js'; import timer from './timer.js'; -import {StringMap} from './types.js'; +import {OidcConfiguration, StringMap} from './types.js'; -async function syncTokens(oidc, refreshToken, forceRefresh: boolean, extras: StringMap) { +async function syncTokens(oidc:Oidc, refreshToken, forceRefresh: boolean, extras: StringMap) { const updateTokens = (tokens) => { oidc.tokens = tokens; }; @@ -72,7 +72,7 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef return oidc.tokens; } -export const autoRenewTokens = (oidc, refreshToken, expiresAt, extras:StringMap = null) => { +export const autoRenewTokens = (oidc:Oidc, refreshToken, expiresAt, extras:StringMap = null) => { const refreshTimeBeforeTokensExpirationInSecond = oidc.configuration.refresh_time_before_tokens_expiration_in_second; return timer.setTimeout(async () => { const timeLeft = computeTimeLeft(refreshTimeBeforeTokensExpirationInSecond, expiresAt); @@ -81,3 +81,61 @@ export const autoRenewTokens = (oidc, refreshToken, expiresAt, extras:StringMap await renewTokensAndStartTimerAsync(oidc, refreshToken, false, extras); }, 1000); }; + +export const synchroniseTokensStatus ={ + 'SESSION_LOST': 'SESSION_LOST', + 'NOT_CONNECTED':'NOT_CONNECTED', + 'TOKENS_VALID':'TOKENS_VALID', + 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID': 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID', + 'LOGOUT_FROM_ANOTHER_TAB': 'LOGOUT_FROM_ANOTHER_TAB', + 'REQUIRE_SYNC_TOKENS': 'REQUIRE_SYNC_TOKENS' +}; + +export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConfiguration, configurationName: string, currentTokens, forceRefresh = false) => { + // Service Worker can be killed by the browser (when it wants,for example after 10 seconds of inactivity, so we retreieve the session if it happen) + // const configuration = this.configuration; + const nullNonce = { nonce: null }; + if (!currentTokens) { + return { tokens: null, status: 'NOT_CONNECTED', nonce: nullNonce }; + } + let nonce = nullNonce; + const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); + const serviceWorker = await initWorkerAsync(configuration, configurationName); + if (serviceWorker) { + const { status, tokens } = await serviceWorker.initAsync(oidcServerConfiguration, 'syncTokensAsync', configuration); + if (status === 'LOGGED_OUT') { + return { tokens: null, status: 'LOGOUT_FROM_ANOTHER_TAB', nonce: nullNonce }; + } else if (status === 'SESSIONS_LOST') { + return { tokens: null, status: 'SESSIONS_LOST', nonce: nullNonce }; + } else if (!status || !tokens) { + return { tokens: null, status: 'REQUIRE_SYNC_TOKENS', nonce: nullNonce }; + } else if (tokens.issuedAt !== currentTokens.issuedAt) { + const timeLeft = computeTimeLeft(configuration.refresh_time_before_tokens_expiration_in_second, tokens.expiresAt); + const status = (timeLeft > 0) ? 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' : 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_INVALID'; + const nonce = await serviceWorker.getNonceAsync(); + return { tokens, status, nonce }; + } + nonce = await serviceWorker.getNonceAsync(); + } else { + const session = initSession(configurationName, configuration.storage ?? sessionStorage); + const { tokens, status } = await session.initAsync(); + if (!tokens) { + return { tokens: null, status: 'LOGOUT_FROM_ANOTHER_TAB', nonce: nullNonce }; + } else if (status === 'SESSIONS_LOST') { + return { tokens: null, status: 'SESSIONS_LOST', nonce: nullNonce }; + } else if (tokens.issuedAt !== currentTokens.issuedAt) { + const timeLeft = computeTimeLeft(configuration.refresh_time_before_tokens_expiration_in_second, tokens.expiresAt); + const status = (timeLeft > 0) ? 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' : 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_INVALID'; + const nonce = await session.getNonceAsync(); + return { tokens, status, nonce }; + } + nonce = await session.getNonceAsync(); + } + + const timeLeft = computeTimeLeft(configuration.refresh_time_before_tokens_expiration_in_second, currentTokens.expiresAt); + const status = (timeLeft > 0) ? 'TOKENS_VALID' : 'TOKENS_INVALID'; + if (forceRefresh) { + return { tokens: currentTokens, status: 'FORCE_REFRESH', nonce }; + } + return { tokens: currentTokens, status, nonce }; +} \ No newline at end of file diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 176a25c63..98d1272ae 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -27,7 +27,7 @@ export const fetchFromIssuer = (fetch) => async (openIdIssuerUrl: string, timeCa return new OidcAuthorizationServiceConfiguration(result); }; -const internalFetch = (fetch) => async (url, headers = {}, timeoutMs = 10000, numberRetry = 0) : Promise => { +const internalFetch = (fetch) => async (url:string, headers = {}, timeoutMs = 10000, numberRetry = 0) : Promise => { let response; try { const controller = new AbortController(); diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index 54180c818..c823c772e 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -33,8 +33,17 @@ export type OidcConfiguration = { token_renew_mode?: string; logout_tokens_to_invalidate?:Array; demonstrating_proof_of_possession?:boolean; + demonstrating_proof_of_possession_configuration?: DemonstratingProofOfPossessionConfiguration; }; +export interface DemonstratingProofOfPossessionConfiguration { + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, + digestAlgorithm: AlgorithmIdentifier, + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, + jwtHeaderAlgorithm: string +} + export interface StringMap { [key: string]: string; } diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index 5068c6435..b523bab30 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -1,7 +1,8 @@ import { sleepAsync } from './initWorker.js'; import { isTokensValid } from './parseTokens.js'; +import Oidc from "./oidc"; -export const userInfoAsync = (oidc) => async (noCache = false) => { +export const userInfoAsync = (oidc:Oidc) => async (noCache = false) => { if (oidc.userInfo != null && !noCache) { return oidc.userInfo; } diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 8abaddeb2..00c30601b 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -202,11 +202,41 @@ const configuration = { onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface - }.isRequired, + demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access + demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow + }, }; +demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow +}; + + +interface DemonstratingProofOfPossessionConfiguration { + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, + digestAlgorithm: AlgorithmIdentifier, + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, + jwtHeaderAlgorithm: string +}; + +// default value of demonstrating_proof_of_possession_configuration +const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' +}; + + ``` ## How to consume @@ -590,6 +620,8 @@ More information about OIDC - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with openid connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) +- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) +- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) ## NextJS diff --git a/readme.md b/readme.md index 7efd04620..f257e5d4d 100644 --- a/readme.md +++ b/readme.md @@ -160,7 +160,8 @@ More information about OIDC : - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) - +- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) +- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) ## FAQ - Frequented Asked Question [`FAQ`](./FAQ.md) From df2da6e813394590ea162b7590b1fea7b7c181b7 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 26 Jan 2024 11:56:45 +0000 Subject: [PATCH 153/565] [skip ci] Update to version 7.14.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5aa9cf552..88cf3a420 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.16", + "version": "7.14.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 52e8c9412..1ebfb116d 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.16'; +export default '7.14.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 55a894189..58cd15358 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.16", + "version": "7.14.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 52e8c9412..1ebfb116d 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.16'; +export default '7.14.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 4beaeb130..5fc612622 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.16", + "version": "7.14.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From d4ed29cf0d9562cb221bab11d00eb5860fed8eab Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 26 Jan 2024 11:56:46 +0000 Subject: [PATCH 154/565] [skip ci] Generate changelog to version 7.14.0 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f2755cb5..7932fc6b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.16 +## 7.14.0 + +- [b0510eb](https://github.com/AxaFrance/oidc-client/commit/b0510eb8d7170e8e142cb2d9bec01f41f610ed51) - feat(oidc): add DPOP configuration (#1259) (release), 2024-01-26 by *Guillaume Chervet* + + +## v7.13.16 - [f2310bc](https://github.com/AxaFrance/oidc-client/commit/f2310bc917898b779a40edecf3dd73c21ec32b47) - fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269), 2024-01-25 by *Guillaume Chervet* @@ -314,8 +319,3 @@ - [48d9db2](https://github.com/AxaFrance/oidc-client/commit/48d9db2f2cffbe74a6fd32b5771f5df0b8314b7f) - test release, 2023-07-28 by *Guillaume Chervet* -## v6.26.4 - -- [9c7a143](https://github.com/AxaFrance/oidc-client/commit/9c7a143797cffff1044c13787c6ceaf690fa4c87) - fix build (release), 2023-07-28 by *Guillaume Chervet* - - From 15eb2592d9582cb43798a5d7fc988b3c349e5b43 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 26 Jan 2024 20:18:38 +0100 Subject: [PATCH 155/565] doc(oidc): Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7efd04620..038c38352 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,8 @@ More information about OIDC : - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) +- [English: youtube react-oidc introduction](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) +- [French: youtube react-oidc introduction](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) ## FAQ From 14ccbeb83f1d7e790b496e571d424f615a39b43f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 28 Jan 2024 15:01:44 +0100 Subject: [PATCH 156/565] fix(oidc): demo and remove console.log --- examples/react-oidc-demo/src/FetchUser.tsx | 2 +- examples/react-oidc-demo/src/MultiAuth.tsx | 7 ++++--- packages/oidc-client/src/jwt.ts | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/react-oidc-demo/src/FetchUser.tsx b/examples/react-oidc-demo/src/FetchUser.tsx index cc4795aa5..e9c5206fb 100644 --- a/examples/react-oidc-demo/src/FetchUser.tsx +++ b/examples/react-oidc-demo/src/FetchUser.tsx @@ -48,5 +48,5 @@ export const FetchUserHoc = () => { const { fetch } = useOidcFetch(window.fetch, props.configurationName); - return ; + return ; }; diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 77e83b461..3da6b0d46 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -17,6 +17,7 @@ const fetchWithLogs = (fetch: Fetch) => async (...params: Parameters) => }; const MultiAuth = ({ configurationName, handleConfigurationChange }) => { + console.log('MultiAuth', configurationName); const { login, logout, isAuthenticated } = useOidc(configurationName); const { isAuthenticated: isAuthenticatedDefault } = useOidc('default'); const [fname, setFname] = useState(''); @@ -80,8 +81,8 @@ export const MultiAuthContainer = () => { const [isSessionLost, setIsSessionLost] = useState(false); const [configurationName, setConfigurationName] = useState(sessionStorage.configurationName); const [events, dispatch] = useReducer(reducer, []); - const callBack = window.location.origin + '/multi-auth/authentification/callback2'; - const silent_redirect_uri = window.location.origin + '/multi-auth/authentification/silent-callback2'; + const callBack = window.location.origin + '/multi-auth/authentification/callback'; + const silent_redirect_uri = window.location.origin + '/multi-auth/authentification/silent-callback'; const configurations = { config_classic: { ...configurationIdentityServer, @@ -155,7 +156,7 @@ export const MultiAuthContainer = () => { // console.log(`oidc:${configurationName}:${eventName}`, data); dispatch({ type: 'event', data: { name: `oidc:${configurationName}:${eventName}`, data } }); }; - + console.log('MultiAuthContainer', configurationName); return ( <> { // @ts-ignore const jwk = await EC.generate(generateKeyAlgorithm); - console.info('Private Key:', JSON.stringify(jwk)); + // console.info('Private Key:', JSON.stringify(jwk)); // @ts-ignore - console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); + // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); return jwk; } From 0fe53a6b870c13c71330806a045896ea1e0a57e2 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 28 Jan 2024 15:04:21 +0100 Subject: [PATCH 157/565] fix(oidc): remove console.log (release) --- .gitignore | 1 + readme.md | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 10d5cede9..204bffd0b 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ examples/**/build/ **/public/*.d.ts /public/* +/Folder.DotSettings.user diff --git a/readme.md b/readme.md index f257e5d4d..038c38352 100644 --- a/readme.md +++ b/readme.md @@ -160,8 +160,9 @@ More information about OIDC : - [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) - [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) -- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) +- [English: youtube react-oidc introduction](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) +- [French: youtube react-oidc introduction](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) + ## FAQ - Frequented Asked Question [`FAQ`](./FAQ.md) From 2647f69401573082ae7458b0b128e7c4db0230b6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 28 Jan 2024 14:08:43 +0000 Subject: [PATCH 158/565] [skip ci] Update to version 7.14.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 88cf3a420..392aa687c 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.14.0", + "version": "7.14.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 1ebfb116d..73a1d26d3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.14.0'; +export default '7.14.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 58cd15358..bfae84a8a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.14.0", + "version": "7.14.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 1ebfb116d..73a1d26d3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.14.0'; +export default '7.14.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 5fc612622..ded6cc0ff 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.14.0", + "version": "7.14.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7749c5dd27554841cf3d44165e26fad7bc2388ea Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 28 Jan 2024 14:08:44 +0000 Subject: [PATCH 159/565] [skip ci] Generate changelog to version 7.14.1 --- CHANGELOG.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7932fc6b8..91f60afd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog -## 7.14.0 +## 7.14.1 + +- [0fe53a6](https://github.com/AxaFrance/oidc-client/commit/0fe53a6b870c13c71330806a045896ea1e0a57e2) - fix(oidc): remove console.log (release), 2024-01-28 by *Guillaume Chervet* +- [b23d6a7](https://github.com/AxaFrance/oidc-client/commit/b23d6a7e1fc04ce43f489ac8977de9fe5affff73) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-01-28 by *Guillaume Chervet* +- [14ccbeb](https://github.com/AxaFrance/oidc-client/commit/14ccbeb83f1d7e790b496e571d424f615a39b43f) - fix(oidc): demo and remove console.log, 2024-01-28 by *Guillaume Chervet* +- [15eb259](https://github.com/AxaFrance/oidc-client/commit/15eb2592d9582cb43798a5d7fc988b3c349e5b43) - doc(oidc): Update README.md, 2024-01-26 by *Guillaume Chervet* + + +## v7.14.0 - [b0510eb](https://github.com/AxaFrance/oidc-client/commit/b0510eb8d7170e8e142cb2d9bec01f41f610ed51) - feat(oidc): add DPOP configuration (#1259) (release), 2024-01-26 by *Guillaume Chervet* @@ -314,8 +322,3 @@ - [dab3662](https://github.com/AxaFrance/oidc-client/commit/dab36629bdebed5a3f085d606f313c7a12644e77) - fix build (release), 2023-07-28 by *Guillaume Chervet* -## v6.26.5 - -- [48d9db2](https://github.com/AxaFrance/oidc-client/commit/48d9db2f2cffbe74a6fd32b5771f5df0b8314b7f) - test release, 2023-07-28 by *Guillaume Chervet* - - From 1676881f1db53cff6652ee7fe9658a437682231f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 29 Jan 2024 19:30:03 +0100 Subject: [PATCH 160/565] feat(oidc): idToken can be null on a refresh (release) (#1271) --- .../src/utils/__tests__/testHelper.ts | 7 ++ .../src/utils/__tests__/tokens.spec.ts | 28 +++++++ .../src/utils/tokens.ts | 20 +++-- packages/oidc-client/src/parseTokens.spec.ts | 78 ++++++++++++++++++- packages/oidc-client/src/parseTokens.ts | 15 +++- 5 files changed, 139 insertions(+), 9 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 0e29f7476..39ce16af3 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -188,6 +188,13 @@ class OidcConfigBuilder { return this; } + public withOidcConfiguration( + oidcConfiguration: OidcConfiguration, + ): OidcConfigBuilder { + this.oidcConfig.oidcConfiguration = oidcConfiguration; + return this; + } + public build() { return this.oidcConfig; } diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index b8559154b..0cfcb6053 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -104,5 +104,33 @@ describe('tokens', () => { expect(secureTokens.access_token).toBe(expectedAccessToken); expect(typeof secureTokens.expiresAt).toBe("number"); }); + + it('should reuse old id_token', () => { + const token = new TokenBuilder().withNonExpiredToken().build(); + // @ts-ignore + delete token.id_token; + // @ts-ignore + delete token.idTokenPayload; + const oidcConfiguration = new OidcConfigBuilder() + .withOidcConfiguration({token_renew_mode: "access_token_invalid"}) + .withOidcServerConfiguration({issuer: "", + authorizationEndpoint:"", + revocationEndpoint:"", + tokenEndpoint:"", + userInfoEndpoint:"" }) + .withTokens(new TokenBuilder() + .withNonExpiredToken() + .withIdToken("old_id_token") + .withIdTokenPayload({ + iss: oidcServerConfig.issuer, + exp: 0, + iat: 0, + nonce: null, + }) + .build()).build(); + const secureTokens = _hideTokens(token, oidcConfiguration, 'test'); + expect(secureTokens.id_token).toBe("old_id_token"); + + }); }); }); diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 190416262..8d34f2637 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -133,9 +133,19 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu } tokens.accessTokenPayload = accessTokenPayload; + // When id_token is not rotated we reuse old id_token + const oldTokens = currentDatabaseElement.tokens; + let id_token: string | null; + if (oldTokens != null && 'id_token' in oldTokens && !('id_token' in tokens)) { + id_token = oldTokens.id_token; + } else { + id_token = tokens.id_token; + } + tokens.id_token = id_token; + let _idTokenPayload = null; - if (tokens.id_token) { - _idTokenPayload = extractTokenPayload(tokens.id_token); + if (id_token) { + _idTokenPayload = extractTokenPayload(id_token); tokens.idTokenPayload = { ..._idTokenPayload }; if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) { const keyNonce = @@ -193,11 +203,11 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu // When refresh_token is not rotated we reuse ald refresh_token if ( - currentDatabaseElement.tokens != null && - 'refresh_token' in currentDatabaseElement.tokens && + oldTokens != null && + 'refresh_token' in oldTokens && !('refresh_token' in tokens) ) { - const refreshToken = currentDatabaseElement.tokens.refresh_token; + const refreshToken = oldTokens.refresh_token; currentDatabaseElement.tokens = { ...tokens, diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index e520d7b4a..4d2c2e169 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,6 +1,13 @@ import { describe, expect,it } from 'vitest'; -import { getValidTokenAsync, isTokensOidcValid, parseJwt, parseOriginalTokens} from "./parseTokens"; +import { + getValidTokenAsync, + isTokensOidcValid, + parseJwt, + parseOriginalTokens, + setTokens, + TokenRenewMode +} from "./parseTokens"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -94,5 +101,74 @@ describe('ParseTokens test Suite', () => { expect(isValid).toEqual(expectIsValidToken); }); }); + + + const testTokens = { + "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkMyNTJGOUNBQjc3Q0MxNTQwNTBFMTg1NTk5MjJCMTJGIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2RlbW8uZHVlbmRlc29mdHdhcmUuY29tIiwibmJmIjoxNzA2NTQwMjU4LCJpYXQiOjE3MDY1NDAyNTgsImV4cCI6MTcwNjU0MDU1OCwiYXVkIjoiaW50ZXJhY3RpdmUucHVibGljLnNob3J0IiwiYW1yIjpbInB3ZCJdLCJub25jZSI6IlA5dEo5eGxHZE05NiIsImF0X2hhc2giOiJOWnZhR0dZYlhoelRNWlVxUjlNYk5nIiwic2lkIjoiMzQ1QUJDODhFNkU1MEFGMTI3M0VENDE1QTdGRDZBMjMiLCJzdWIiOiIyIiwiYXV0aF90aW1lIjoxNzA2NTMxNjY1LCJpZHAiOiJsb2NhbCJ9.MVtXrCkshJFBplbOw7az3fdWB1Ewqixb2fuHXpx7KbGWUY6qgT9ijlldeD-ZV7JGA958AKqmGwfNjovAJE89pQsCFKkNft6fRO8eM9qKif6eRUqMMPiQrawARpuJOs1NvJ-SyeRs_jSNLwPVzI8NlZyFWHoyQ4DZnFoQLSQMy5UaHaCtWhC_FrWMFLQvbE3RuMlnJGzrsoMewFyVAZctMCTE1MOI3Akvhe1IGc1hmxzwNg3OkxwzHLinsDlDw8UVn8vX5iNI18GFuyTuJlawOq5OHHJH3LdKQD_RbwRF-9BFjKRZfWzGpdpxTD2lIPf1Irc3U_R6xCNuXYUwzrHp6Q", + "access_token": "ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_default", + "expires_in": 75, + "token_type": "Bearer", + "refresh_token": "REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_default", + "scope": "openid profile email api offline_access", + "issued_at": 1706540256.465, + "accessTokenPayload": { + "iss": "https://demo.duendesoftware.com", + "nbf": 1706540258, + "iat": 1706540258, + "exp": 1706540333, + "aud": "api", + "scope": [ + "openid", + "profile", + "email", + "api", + "offline_access" + ], + "amr": [ + "pwd" + ], + "client_id": "interactive.public.short", + "sub": "2", + "auth_time": 1706531665, + "idp": "local", + "name": "Bob Smith", + "email": "BobSmith@email.com", + "sid": "345ABC88E6E50AF1273ED415A7FD6A23", + "jti": "E3CF3853D77AC90ABC774266CD381C43" + }, + "idTokenPayload": { + "iss": "https://demo.duendesoftware.com", + "nbf": 1706540258, + "iat": 1706540258, + "exp": 1706540558, + "aud": "interactive.public.short", + "amr": [ + "pwd" + ], + "nonce": "NONCE_SECURED_BY_OIDC_SERVICE_WORKER_default", + "at_hash": "NZvaGGYbXhzTMZUqR9MbNg", + "sid": "345ABC88E6E50AF1273ED415A7FD6A23", + "sub": "2", + "auth_time": 1706531665, + "idp": "local" + }, + "expiresAt": 1706540333 + } + + describe.each([ + [testTokens, null, TokenRenewMode.access_token_invalid, () => {}], + [testTokens, {testTokens, idTokenPayload: undefined, id_token: undefined}, TokenRenewMode.access_token_invalid, (newTokens:any) => { + expect(newTokens.idTokenPayload).toBeDefined(); + expect(newTokens.id_token).toBeDefined(); + }], + ])('setTokens', (tokens, oldTokens, tokenRenewMode, validationFunction) => { + it('should setTokens return updatedTokens' , async () => { + const oidc = { + idTokenPayload, + }; + const newTokens = setTokens(tokens, oldTokens, tokenRenewMode); + validationFunction(newTokens) + }); + }); }); diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index d79f35846..0d745320d 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -74,7 +74,16 @@ export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Toke } else { accessTokenPayload = extractTokenPayload(tokens.accessToken); } - const _idTokenPayload = tokens.idTokenPayload ? tokens.idTokenPayload : extractTokenPayload(tokens.idToken); + + // When id_token is not rotated we reuse old id_token + let idToken: string; + if (oldTokens != null && 'idToken' in oldTokens && !('idToken' in tokens)) { + idToken = oldTokens.idToken; + } else { + idToken = tokens.idToken; + } + + const _idTokenPayload = tokens.idTokenPayload ? tokens.idTokenPayload : extractTokenPayload(idToken); const idTokenExpireAt = (_idTokenPayload && _idTokenPayload.exp) ? _idTokenPayload.exp : Number.MAX_VALUE; const accessTokenExpiresAt = (accessTokenPayload && accessTokenPayload.exp) ? accessTokenPayload.exp : tokens.issuedAt + expireIn; @@ -96,8 +105,8 @@ export const setTokens = (tokens, oldTokens = null, tokenRenewMode: string):Toke } } - const newTokens = { ...tokens, idTokenPayload: _idTokenPayload, accessTokenPayload, expiresAt }; - // When refresh_token is not rotated we reuse ald refresh_token + const newTokens = { ...tokens, idTokenPayload: _idTokenPayload, accessTokenPayload, expiresAt, idToken }; + // When refresh_token is not rotated we reuse old refresh_token if (oldTokens != null && 'refreshToken' in oldTokens && !('refreshToken' in tokens)) { const refreshToken = oldTokens.refreshToken; return { ...newTokens, refreshToken }; From 5094e36c1435684c5863e8d27eca59093aaec7b7 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 30 Jan 2024 23:00:36 +0100 Subject: [PATCH 161/565] fix(service-worker): unit test broken (release) --- examples/react-oidc-demo/index.html | 2 +- .../src/utils/__tests__/tokens.spec.ts | 4 ++-- .../oidc-client-service-worker/src/utils/tokens.ts | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/react-oidc-demo/index.html b/examples/react-oidc-demo/index.html index 0bb0aea6f..00be91c24 100644 --- a/examples/react-oidc-demo/index.html +++ b/examples/react-oidc-demo/index.html @@ -13,6 +13,6 @@
- + diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 0cfcb6053..d4853fd9d 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -128,8 +128,8 @@ describe('tokens', () => { nonce: null, }) .build()).build(); - const secureTokens = _hideTokens(token, oidcConfiguration, 'test'); - expect(secureTokens.id_token).toBe("old_id_token"); + _hideTokens(token, oidcConfiguration, 'test'); + expect(token.id_token).toBe("old_id_token"); }); }); diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 8d34f2637..90c8ff693 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -71,7 +71,7 @@ const isTokensOidcValid = ( if (tokens.idTokenPayload) { const idTokenPayload = tokens.idTokenPayload; // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim. - if (oidcServerConfiguration.issuer !== idTokenPayload.iss) { + if (idTokenPayload && oidcServerConfiguration.issuer !== idTokenPayload.iss) { return { isValid: false, reason: `Issuer does not match (oidcServerConfiguration issuer) ${oidcServerConfiguration.issuer} !== (idTokenPayload issuer) ${idTokenPayload.iss}` }; } // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client. @@ -80,19 +80,19 @@ const isTokensOidcValid = ( // 9: The current time MUST be before the time represented by the exp Claim. const currentTimeUnixSecond = new Date().getTime() / 1000; - if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) { + if (idTokenPayload && idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) { return { isValid: false, reason: `Token expired at (idTokenPayload exp) ${idTokenPayload.exp} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific. const timeInSevenDays = 60 * 60 * 24 * 7; if ( - idTokenPayload.iat && + idTokenPayload && idTokenPayload.iat && idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond ) { return { isValid: false, reason: `Token is used from too long time (idTokenPayload iat + timeInSevenDays) ${idTokenPayload.iat + timeInSevenDays} < (currentTimeUnixSecond) ${currentTimeUnixSecond}` }; } // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific. - if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) { + if (idTokenPayload && nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) { return { isValid: false, reason: `Nonce does not match (nonce) ${nonce} !== (idTokenPayload nonce) ${idTokenPayload.nonce}` }; } } @@ -146,8 +146,8 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu let _idTokenPayload = null; if (id_token) { _idTokenPayload = extractTokenPayload(id_token); - tokens.idTokenPayload = { ..._idTokenPayload }; - if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) { + tokens.idTokenPayload = _idTokenPayload !=null ? { ..._idTokenPayload }: null; + if (_idTokenPayload && _idTokenPayload.nonce && currentDatabaseElement.nonce != null) { const keyNonce = TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName; _idTokenPayload.nonce = keyNonce; From c806e6670b82c97ad7ecadc08ac75e55d6762a6a Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 30 Jan 2024 22:13:27 +0000 Subject: [PATCH 162/565] [skip ci] Update to version 7.15.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 392aa687c..828bce43d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.14.1", + "version": "7.15.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 73a1d26d3..58bfb381c 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.14.1'; +export default '7.15.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index bfae84a8a..df3bad654 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.14.1", + "version": "7.15.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 73a1d26d3..58bfb381c 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.14.1'; +export default '7.15.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ded6cc0ff..e927c405e 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.14.1", + "version": "7.15.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From ffc597b65d91f76510dcfa682323154983f38333 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 30 Jan 2024 22:13:28 +0000 Subject: [PATCH 163/565] [skip ci] Generate changelog to version 7.15.1 --- CHANGELOG.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f60afd4..ea6fffb63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ # Changelog -## 7.14.1 +## 7.15.1 + +- [5094e36](https://github.com/AxaFrance/oidc-client/commit/5094e36c1435684c5863e8d27eca59093aaec7b7) - fix(service-worker): unit test broken (release), 2024-01-30 by *Guillaume Chervet* + + +## v7.15.0 + +- [1676881](https://github.com/AxaFrance/oidc-client/commit/1676881f1db53cff6652ee7fe9658a437682231f) - feat(oidc): idToken can be null on a refresh (release) (#1271), 2024-01-29 by *Guillaume Chervet* + + +## v7.14.1 - [0fe53a6](https://github.com/AxaFrance/oidc-client/commit/0fe53a6b870c13c71330806a045896ea1e0a57e2) - fix(oidc): remove console.log (release), 2024-01-28 by *Guillaume Chervet* - [b23d6a7](https://github.com/AxaFrance/oidc-client/commit/b23d6a7e1fc04ce43f489ac8977de9fe5affff73) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-01-28 by *Guillaume Chervet* @@ -310,15 +320,3 @@ - [cd97895](https://github.com/AxaFrance/oidc-client/commit/cd9789520090b27ea905401be6d03fd87f817f76) - fix(oidc): expire_in in string instead of number (#1118) (release), 2023-08-03 by *Guillaume Chervet* -## v7.0.0 - -- [9567873](https://github.com/AxaFrance/oidc-client/commit/95678734c0495f80628f99ad3aa284a3014f8bbc) - feat(oidc): rename repository oidc-client (#1115) (release), 2023-08-01 by *Guillaume Chervet* -- [ff61e5d](https://github.com/AxaFrance/oidc-client/commit/ff61e5d5e3387888ce18ec8e99fde0044009f481) - fix(demo): google new link and add navigate button, 2023-07-31 by *Guillaume Chervet* -- [0d8bc06](https://github.com/AxaFrance/oidc-client/commit/0d8bc0626be0d5d14edca83dacb7367f57d4bb6d) - feat(oidc): rename vanilla-oidc to oidc-client (#1112) (release), 2023-07-28 by *Guillaume Chervet* - - -## v6.26.6 - -- [dab3662](https://github.com/AxaFrance/oidc-client/commit/dab36629bdebed5a3f085d606f313c7a12644e77) - fix build (release), 2023-07-28 by *Guillaume Chervet* - - From 0a15e60f0e5c167a0418a972c6726eec72add447 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 1 Feb 2024 10:38:05 +0100 Subject: [PATCH 164/565] refactor(renew): clean an debug (alpha) (#1273) --- examples/react-oidc-demo/index.html | 2 +- examples/react-oidc-demo/src/MultiAuth.tsx | 5 ++--- packages/oidc-client/src/keepSession.ts | 4 ++-- packages/oidc-client/src/oidc.ts | 18 ++++++++-------- packages/oidc-client/src/renewTokens.ts | 25 ++++++++++++---------- packages/oidc-client/src/silentLogin.ts | 2 +- 6 files changed, 29 insertions(+), 27 deletions(-) diff --git a/examples/react-oidc-demo/index.html b/examples/react-oidc-demo/index.html index 00be91c24..0bb0aea6f 100644 --- a/examples/react-oidc-demo/index.html +++ b/examples/react-oidc-demo/index.html @@ -13,6 +13,6 @@
- + diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 3da6b0d46..66eff1d7f 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -16,8 +16,7 @@ const fetchWithLogs = (fetch: Fetch) => async (...params: Parameters) => return await fetch(url, options, ...rest); }; -const MultiAuth = ({ configurationName, handleConfigurationChange }) => { - console.log('MultiAuth', configurationName); +const MultiAuth = ({ configurationName, handleConfigurationChange }) => {; const { login, logout, isAuthenticated } = useOidc(configurationName); const { isAuthenticated: isAuthenticatedDefault } = useOidc('default'); const [fname, setFname] = useState(''); @@ -156,7 +155,7 @@ export const MultiAuthContainer = () => { // console.log(`oidc:${configurationName}:${eventName}`, data); dispatch({ type: 'event', data: { name: `oidc:${configurationName}:${eventName}`, data } }); }; - console.log('MultiAuthContainer', configurationName); + return ( <> { oidc.tokens = tokens; const getLoginParams = serviceWorker.getLoginParams(oidc.configurationName); // @ts-ignore - oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.refreshToken, oidc.tokens.expiresAt, getLoginParams.extras); + oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.expiresAt, getLoginParams.extras); const sessionState = await serviceWorker.getSessionStateAsync(); // @ts-ignore await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); @@ -51,7 +51,7 @@ export const tryKeepSessionAsync = async (oidc: Oidc) =>{ oidc.tokens = setTokens(tokens, null, configuration.token_renew_mode); const getLoginParams = session.getLoginParams(); // @ts-ignore - oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, getLoginParams.extras); + oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.expiresAt, getLoginParams.extras); const sessionState = await session.getSessionStateAsync(); // @ts-ignore await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index bbd925d0b..94f4df974 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -79,7 +79,7 @@ export type InternalLoginCallback = { const loginCallbackWithAutoTokensRenewAsync = async (oidc) : Promise => { const { parsedTokens, callbackPath } = await oidc.loginCallbackAsync(); - oidc.timeoutId = autoRenewTokens(oidc, parsedTokens.refreshToken, parsedTokens.expiresAt); + oidc.timeoutId = autoRenewTokens(oidc, parsedTokens.expiresAt); return { callbackPath }; }; @@ -292,7 +292,7 @@ Please checkout that you are using OIDC hook inside a 4) { @@ -374,11 +374,11 @@ Please checkout that you are using OIDC hook inside a { this.renewTokensPromise = null; return result; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index db7fd883b..64166370b 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -1,15 +1,15 @@ import {initSession} from './initSession.js'; import {initWorkerAsync} from './initWorker.js'; import Oidc from './oidc.js'; -import {computeTimeLeft, setTokens} from './parseTokens.js'; +import {computeTimeLeft, setTokens, Tokens} from './parseTokens.js'; import timer from './timer.js'; import {OidcConfiguration, StringMap} from './types.js'; -async function syncTokens(oidc:Oidc, refreshToken, forceRefresh: boolean, extras: StringMap) { +async function syncTokens(oidc:Oidc, forceRefresh: boolean, extras: StringMap) { const updateTokens = (tokens) => { oidc.tokens = tokens; }; - const {tokens, status} = await oidc.synchroniseTokensAsync(refreshToken, 0, forceRefresh, extras, updateTokens); + const {tokens, status} = await oidc.synchroniseTokensAsync(0, forceRefresh, extras, updateTokens); const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if (!serviceWorker) { @@ -24,7 +24,7 @@ async function syncTokens(oidc:Oidc, refreshToken, forceRefresh: boolean, extras return tokens; } -async function loadLatestTokensAsync(oidc, configuration) { +const loadLatestTokensAsync = async (oidc:Oidc, configuration:OidcConfiguration) :Promise => { const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); if (serviceWorker) { const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); @@ -39,7 +39,7 @@ async function loadLatestTokensAsync(oidc, configuration) { } } -export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRefresh = false, extras:StringMap = null) { +export async function renewTokensAndStartTimerAsync(oidc, forceRefresh = false, extras:StringMap = null) { const configuration = oidc.configuration; const lockResourcesName = `${configuration.client_id}_${oidc.configurationName}_${configuration.authority}`; @@ -48,14 +48,14 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if(configuration?.storage === window?.sessionStorage && !serviceWorker) { - tokens = await syncTokens(oidc, refreshToken, forceRefresh, extras); + tokens = await syncTokens(oidc, forceRefresh, extras); } else { tokens = await navigator.locks.request(lockResourcesName, { ifAvailable: true }, async (lock) => { if(!lock){ oidc.publishEvent(Oidc.eventNames.syncTokensAsync_lock_not_available, { lock: 'lock not available' }); return await loadLatestTokensAsync(oidc, configuration); } - return await syncTokens(oidc, refreshToken, forceRefresh, extras); + return await syncTokens(oidc, forceRefresh, extras); }); } @@ -66,19 +66,19 @@ export async function renewTokensAndStartTimerAsync(oidc, refreshToken, forceRef if (oidc.timeoutId) { // @ts-ignore - oidc.timeoutId = autoRenewTokens(oidc, tokens.refreshToken, oidc.tokens.expiresAt, extras); + oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.expiresAt, extras); } return oidc.tokens; } -export const autoRenewTokens = (oidc:Oidc, refreshToken, expiresAt, extras:StringMap = null) => { +export const autoRenewTokens = (oidc:Oidc, expiresAt, extras:StringMap = null) => { const refreshTimeBeforeTokensExpirationInSecond = oidc.configuration.refresh_time_before_tokens_expiration_in_second; return timer.setTimeout(async () => { const timeLeft = computeTimeLeft(refreshTimeBeforeTokensExpirationInSecond, expiresAt); const timeInfo = { timeLeft }; oidc.publishEvent(Oidc.eventNames.token_timer, timeInfo); - await renewTokensAndStartTimerAsync(oidc, refreshToken, false, extras); + await renewTokensAndStartTimerAsync(oidc, false, extras); }, 1000); }; @@ -118,7 +118,10 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf nonce = await serviceWorker.getNonceAsync(); } else { const session = initSession(configurationName, configuration.storage ?? sessionStorage); - const { tokens, status } = await session.initAsync(); + let { tokens, status } = await session.initAsync(); + if(tokens){ + tokens = setTokens(tokens, oidc.tokens, configuration.token_renew_mode); + } if (!tokens) { return { tokens: null, status: 'LOGOUT_FROM_ANOTHER_TAB', nonce: nullNonce }; } else if (status === 'SESSIONS_LOST') { diff --git a/packages/oidc-client/src/silentLogin.ts b/packages/oidc-client/src/silentLogin.ts index 70932a974..319125944 100644 --- a/packages/oidc-client/src/silentLogin.ts +++ b/packages/oidc-client/src/silentLogin.ts @@ -131,7 +131,7 @@ export const defaultSilentLoginAsync = (window, configurationName, configuration oidc.tokens = silentResult.tokens; publishEvent(eventNames.token_aquired, {}); // @ts-ignore - oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.refreshToken, oidc.tokens.expiresAt, extras); + oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.expiresAt, extras); return {}; } } catch (e) { From 31f295cb549bf55dfd5db1e1c71178363c7f2dae Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 2 Feb 2024 09:53:19 +0100 Subject: [PATCH 165/565] fix(logout): add event when same config name (alpha) --- packages/oidc-client/src/logout.ts | 9 ++++++--- packages/oidc-client/src/oidc.ts | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 33116c865..436a28dde 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -4,7 +4,7 @@ import { performRevocationRequestAsync, TOKEN_TYPE } from './requests.js'; import timer from './timer.js'; import { StringMap } from './types.js'; import {ILOidcLocation} from "./location"; -import Oidc from "./oidc"; +import {eventNames} from "./events"; export const oidcLogoutTokens = { access_token: 'access_token', @@ -67,15 +67,18 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi } // @ts-ignore const sub = oidc.tokens && oidc.tokens.idTokenPayload ? oidc.tokens.idTokenPayload.sub : null; - await oidc.destroyAsync('LOGGED_OUT'); + // eslint-disable-next-line @typescript-eslint/no-unused-vars for (const [key, itemOidc] of Object.entries(oidcDatabase)) { if (itemOidc !== oidc) { // @ts-ignore await oidc.logoutSameTabAsync(oidc.configuration.client_id, sub); + } else { + oidc.publishEvent(eventNames.logout_from_same_tab, {} ); } } - + await oidc.destroyAsync('LOGGED_OUT'); + if (oidcServerConfiguration.endSessionEndpoint) { if (!extras) { extras = { diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 94f4df974..21add6cbc 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -526,16 +526,16 @@ Please checkout that you are using OIDC hook inside a Date: Sat, 3 Feb 2024 14:57:38 +0100 Subject: [PATCH 166/565] fix(oidc): json not valid add warning message (release) (#1258) --- packages/oidc-client/src/initSession.ts | 6 ++++++ packages/oidc-client/src/oidc.ts | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index 3d79b69b3..f4a6e57e5 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -64,6 +64,12 @@ export const initSession = (configurationName, storage = sessionStorage) => { }; const getLoginParams = () => { const dataString = storage[`oidc.login.${configurationName}`]; + + if(!dataString){ + console.warn(`storage[oidc.login.${configurationName}] is empty`); + return null; + } + if (!getLoginParamsCache[configurationName]) { getLoginParamsCache[configurationName] = JSON.parse(dataString); } diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 21add6cbc..c4143d5c4 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -234,8 +234,7 @@ Please checkout that you are using OIDC hook inside a { if (this.tryKeepExistingSessionPromise !== null) { return this.tryKeepExistingSessionPromise; - } - + } this.tryKeepExistingSessionPromise = tryKeepSessionAsync(this); return this.tryKeepExistingSessionPromise.then((result) => { this.tryKeepExistingSessionPromise = null; @@ -311,7 +310,7 @@ Please checkout that you are using OIDC hook inside a { + const silentLoginAsync = (extras: StringMap, state:string=null, scope:string = null) => { return _silentLoginAsync(this.configurationName, this.configuration, this.publishEvent.bind(this))(extras, state, scope); }; const localsilentLoginAsync = async () => { @@ -328,7 +327,7 @@ Please checkout that you are using OIDC hook inside a Date: Sat, 3 Feb 2024 14:00:15 +0000 Subject: [PATCH 167/565] [skip ci] Update to version 7.15.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 828bce43d..5735099f2 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.15.1", + "version": "7.15.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 58bfb381c..73a320933 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.15.1'; +export default '7.15.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index df3bad654..d1aee691e 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.15.1", + "version": "7.15.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 58bfb381c..73a320933 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.15.1'; +export default '7.15.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e927c405e..5db7136ca 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.15.1", + "version": "7.15.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 31c2545c49c08dabc63cbe1d7d0fd28f83905fa5 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 3 Feb 2024 14:00:16 +0000 Subject: [PATCH 168/565] [skip ci] Generate changelog to version 7.15.2 --- CHANGELOG.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea6fffb63..b5e7f865b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Changelog -## 7.15.1 +## 7.15.2 + +- [940ffac](https://github.com/AxaFrance/oidc-client/commit/940ffac724894460af13e4e4a0de5e691e487c74) - fix(oidc): json not valid add warning message (release) (#1258), 2024-02-03 by *Guillaume Chervet* +- [31f295c](https://github.com/AxaFrance/oidc-client/commit/31f295cb549bf55dfd5db1e1c71178363c7f2dae) - fix(logout): add event when same config name (alpha), 2024-02-02 by *Guillaume Chervet* +- [0a15e60](https://github.com/AxaFrance/oidc-client/commit/0a15e60f0e5c167a0418a972c6726eec72add447) - refactor(renew): clean an debug (alpha) (#1273), 2024-02-01 by *Guillaume Chervet* + + +## v7.15.1 - [5094e36](https://github.com/AxaFrance/oidc-client/commit/5094e36c1435684c5863e8d27eca59093aaec7b7) - fix(service-worker): unit test broken (release), 2024-01-30 by *Guillaume Chervet* @@ -315,8 +322,3 @@ - [ae8a601](https://github.com/AxaFrance/oidc-client/commit/ae8a60130b4dacfe7a73f6e2262ca1238a07a509) - feat(oidc): update service worker from version (#1121) (release), 2023-08-04 by *Guillaume Chervet* -## v7.0.1 - -- [cd97895](https://github.com/AxaFrance/oidc-client/commit/cd9789520090b27ea905401be6d03fd87f817f76) - fix(oidc): expire_in in string instead of number (#1118) (release), 2023-08-03 by *Guillaume Chervet* - - From 7a5d32cf650870a5b1c2910ceb0a3e6db4cec0b7 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 3 Feb 2024 15:18:48 +0100 Subject: [PATCH 169/565] fix(oidc): storage empty update message (release) --- packages/oidc-client/src/initSession.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index f4a6e57e5..e01b591ae 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -66,7 +66,7 @@ export const initSession = (configurationName, storage = sessionStorage) => { const dataString = storage[`oidc.login.${configurationName}`]; if(!dataString){ - console.warn(`storage[oidc.login.${configurationName}] is empty`); + console.warn(`storage[oidc.login.${configurationName}] is empty, you should have an bad OIDC or code configuration somewhere.`); return null; } From 0741d97d9b0c096f9c1ee056a4776d70b39111a1 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 3 Feb 2024 14:22:42 +0000 Subject: [PATCH 170/565] [skip ci] Update to version 7.15.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5735099f2..19b4d5db1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.15.2", + "version": "7.15.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 73a320933..6d1aa22bb 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.15.2'; +export default '7.15.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index d1aee691e..3371d15b1 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.15.2", + "version": "7.15.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 73a320933..6d1aa22bb 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.15.2'; +export default '7.15.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 5db7136ca..7311cc148 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.15.2", + "version": "7.15.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 2ccad163355d2d01dee89031dc878e3d1a084678 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 3 Feb 2024 14:22:44 +0000 Subject: [PATCH 171/565] [skip ci] Generate changelog to version 7.15.3 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5e7f865b..d04c2cf2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.15.2 +## 7.15.3 + +- [7a5d32c](https://github.com/AxaFrance/oidc-client/commit/7a5d32cf650870a5b1c2910ceb0a3e6db4cec0b7) - fix(oidc): storage empty update message (release), 2024-02-03 by *Guillaume Chervet* + + +## v7.15.2 - [940ffac](https://github.com/AxaFrance/oidc-client/commit/940ffac724894460af13e4e4a0de5e691e487c74) - fix(oidc): json not valid add warning message (release) (#1258), 2024-02-03 by *Guillaume Chervet* - [31f295c](https://github.com/AxaFrance/oidc-client/commit/31f295cb549bf55dfd5db1e1c71178363c7f2dae) - fix(logout): add event when same config name (alpha), 2024-02-02 by *Guillaume Chervet* @@ -317,8 +322,3 @@ - [60ea58b](https://github.com/AxaFrance/oidc-client/commit/60ea58b266c4173e3a92b8637d9abd09cca0ea1a) - feat(oidc-service-worker): copy become manual (#1120) (release), 2023-08-04 by *Guillaume Chervet* -## v7.1.0 - -- [ae8a601](https://github.com/AxaFrance/oidc-client/commit/ae8a60130b4dacfe7a73f6e2262ca1238a07a509) - feat(oidc): update service worker from version (#1121) (release), 2023-08-04 by *Guillaume Chervet* - - From f2d74fba6d2e48e6d478aa69d261fe9cceb69bfa Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 3 Feb 2024 22:30:44 +0100 Subject: [PATCH 172/565] fix(oidc): eternal lock when refresh_token invalid and multiple tabs (#1281) (release) * fix(oidc): eternal lock when refresh_token invalid and multiple tabs * fix (alpha) * fix crash (alpha) * cleaner error iframe (alpha) whith ugly code * to be continued (alpha) * fix (alpha) * fix (beta) --- packages/oidc-client/src/checkSession.ts | 3 + packages/oidc-client/src/oidc.ts | 181 ++-------------------- packages/oidc-client/src/renewTokens.ts | 186 ++++++++++++++++++++++- packages/oidc-client/src/requests.ts | 7 +- packages/oidc-client/src/silentLogin.ts | 11 +- 5 files changed, 213 insertions(+), 175 deletions(-) diff --git a/packages/oidc-client/src/checkSession.ts b/packages/oidc-client/src/checkSession.ts index e291ef2c1..c313c8c99 100644 --- a/packages/oidc-client/src/checkSession.ts +++ b/packages/oidc-client/src/checkSession.ts @@ -24,6 +24,9 @@ export const startCheckSessionAsync = (oidc:Oidc, oidcDatabase:any, configuratio id_token_hint: idToken, scope: configuration.scope || 'openid', }).then((silentSigninResponse) => { + if(silentSigninResponse.error) { + throw new Error(silentSigninResponse.error); + } const iFrameIdTokenPayload = silentSigninResponse.tokens.idTokenPayload; if (idTokenPayload.sub === iFrameIdTokenPayload.sub) { const sessionState = silentSigninResponse.sessionState; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index c4143d5c4..0c82eeaaa 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -95,7 +95,7 @@ export class Oidc { public timeoutId: NodeJS.Timeout | number; public configurationName: string; public checkSessionIFrame: CheckSessionIFrame; - private getFetch: () => Fetch; + public getFetch: () => Fetch; public location: ILOidcLocation; constructor(configuration:OidcConfiguration, configurationName = 'default', getFetch : () => Fetch, location: ILOidcLocation = new OidcLocation()) { let silent_login_uri = configuration.silent_login_uri; @@ -130,7 +130,6 @@ export class Oidc { this.userInfo = null; this.events = []; this.timeoutId = null; - this.synchroniseTokensAsync.bind(this); this.loginCallbackWithAutoTokensRenewAsync.bind(this); this.initAsync.bind(this); this.loginCallbackAsync.bind(this); @@ -183,11 +182,16 @@ Please checkout that you are using OIDC hook inside a 0) { - await sleepAsync({milliseconds: 1000}); - numberTryOnline--; - this.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is offline try ${numberTryOnline}` }); - } - const isDocumentHidden = document.hidden; - const nextIndex = isDocumentHidden ? index : index + 1; - if (!extras) { - extras = {}; - } - const configuration = this.configuration; - - const silentLoginAsync = (extras: StringMap, state:string=null, scope:string = null) => { - return _silentLoginAsync(this.configurationName, this.configuration, this.publishEvent.bind(this))(extras, state, scope); - }; - const localsilentLoginAsync = async () => { - try { - let loginParams; - const serviceWorker = await initWorkerAsync(configuration, this.configurationName); - if (serviceWorker) { - loginParams = serviceWorker.getLoginParams(); - } else { - const session = initSession(this.configurationName, configuration.storage); - loginParams = session.getLoginParams(); - } - const silent_token_response = await silentLoginAsync({ - ...loginParams.extras, - ...extras, - prompt: 'none', - }); - if (silent_token_response) { - updateTokens(silent_token_response.tokens); - this.publishEvent(Oidc.eventNames.token_renewed, {}); - return { tokens: silent_token_response.tokens, status: 'LOGGED' }; - } - } catch (exceptionSilent: any) { - console.error(exceptionSilent); - this.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exceptionSilent', exception: exceptionSilent.message }); - if (exceptionSilent && exceptionSilent.message && exceptionSilent.message.startsWith('oidc')) { - updateTokens(null); - this.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent' }); - return { tokens: null, status: 'SESSION_LOST' }; - } - } - this.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent return' }); - return await this.synchroniseTokensAsync(nextIndex, forceRefresh, extras, updateTokens); - }; - - if (index > 4) { - updateTokens(null); - this.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); - return { tokens: null, status: 'SESSION_LOST' }; - } - try { - const { status, tokens, nonce } = await syncTokensInfoAsync(this)(configuration, this.configurationName, this.tokens, forceRefresh); - switch (status) { - case synchroniseTokensStatus.SESSION_LOST: - updateTokens(null); - this.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token session lost' }); - return { tokens: null, status: 'SESSION_LOST' }; - case synchroniseTokensStatus.NOT_CONNECTED: - updateTokens(null); - return { tokens: null, status: null }; - case synchroniseTokensStatus.TOKENS_VALID: - updateTokens(tokens); - return { tokens, status: 'LOGGED_IN' }; - case synchroniseTokensStatus.TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID: - updateTokens(tokens); - this.publishEvent(Oidc.eventNames.token_renewed, { reason: 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' }); - return { tokens, status: 'LOGGED_IN' }; - case synchroniseTokensStatus.LOGOUT_FROM_ANOTHER_TAB: - updateTokens(null); - this.publishEvent(eventNames.logout_from_another_tab, { status: 'session syncTokensAsync' }); - return { tokens: null, status: 'LOGGED_OUT' }; - case synchroniseTokensStatus.REQUIRE_SYNC_TOKENS: - this.publishEvent(eventNames.refreshTokensAsync_begin, { refreshToken: tokens.refreshToken, status, tryNumber: index }); - return await localsilentLoginAsync(); - default: { - this.publishEvent(eventNames.refreshTokensAsync_begin, { refreshToken: tokens.refreshToken, status, tryNumber: index }); - if (!tokens.refreshToken) { - return await localsilentLoginAsync(); - } - - const clientId = configuration.client_id; - const redirectUri = configuration.redirect_uri; - const authority = configuration.authority; - const tokenExtras = configuration.token_request_extras ? configuration.token_request_extras : {}; - const finalExtras = { ...tokenExtras }; - - for (const [key, value] of Object.entries(extras)) { - if (key.endsWith(':token_request')) { - finalExtras[key.replace(':token_request', '')] = value; - } - } - const localFunctionAsync = async () => { - const details = { - client_id: clientId, - redirect_uri: redirectUri, - grant_type: 'refresh_token', - refresh_token: tokens.refreshToken, - }; - const oidcServerConfiguration = await this.initAsync(authority, configuration.authority_configuration); - const timeoutMs = document.hidden ? 10000 : 30000 * 10; - const url = oidcServerConfiguration.tokenEndpoint; - const headersExtras = {}; - if(configuration.demonstrating_proof_of_possession) { - headersExtras['DPoP'] = await this.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, 'POST'); - } - const tokenResponse = await performTokenRequestAsync(this.getFetch())(url, - details, - finalExtras, - tokens, - headersExtras, - configuration.token_renew_mode, - timeoutMs); - - if (tokenResponse.success) { - const { isValid, reason } = isTokensOidcValid(tokenResponse.data, nonce.nonce, oidcServerConfiguration); - if (!isValid) { - updateTokens(null); - this.publishEvent(eventNames.refreshTokensAsync_error, { message: `refresh token return not valid tokens, reason: ${reason}` }); - return { tokens: null, status: 'SESSION_LOST' }; - } - updateTokens(tokenResponse.data); - if(tokenResponse.demonstratingProofOfPossessionNonce) { - const serviceWorker = await initWorkerAsync(configuration, this.configurationName); - if(serviceWorker){ - await serviceWorker.setDemonstratingProofOfPossessionNonce(tokenResponse.demonstratingProofOfPossessionNonce); - } else { - const session = initSession(this.configurationName, configuration.storage); - await session.setDemonstratingProofOfPossessionNonce(tokenResponse.demonstratingProofOfPossessionNonce); - } - } - this.publishEvent(eventNames.refreshTokensAsync_end, { success: tokenResponse.success }); - this.publishEvent(Oidc.eventNames.token_renewed, { reason: 'REFRESH_TOKEN' }); - return { tokens: tokenResponse.data, status: 'LOGGED_IN' }; - } else { - this.publishEvent(eventNames.refreshTokensAsync_silent_error, { - message: 'bad request', - tokenResponse, - }); - return await this.synchroniseTokensAsync(nextIndex, forceRefresh, extras, updateTokens); - } - }; - return await localFunctionAsync(); - } - } - } catch (exception: any) { - console.error(exception); - this.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exception', exception: exception.message }); - return this.synchroniseTokensAsync(nextIndex, forceRefresh, extras, updateTokens); - } - } async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string): Promise { diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 64166370b..79ae5c133 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -1,15 +1,18 @@ import {initSession} from './initSession.js'; -import {initWorkerAsync} from './initWorker.js'; +import {initWorkerAsync, sleepAsync} from './initWorker.js'; import Oidc from './oidc.js'; -import {computeTimeLeft, setTokens, Tokens} from './parseTokens.js'; +import {computeTimeLeft, isTokensOidcValid, setTokens, Tokens} from './parseTokens.js'; import timer from './timer.js'; import {OidcConfiguration, StringMap} from './types.js'; +import {_silentLoginAsync} from "./silentLogin"; +import {performTokenRequestAsync} from "./requests"; +import {eventNames} from "./events"; async function syncTokens(oidc:Oidc, forceRefresh: boolean, extras: StringMap) { const updateTokens = (tokens) => { oidc.tokens = tokens; }; - const {tokens, status} = await oidc.synchroniseTokensAsync(0, forceRefresh, extras, updateTokens); + const {tokens, status} = await synchroniseTokensAsync(oidc)(0, forceRefresh, extras, updateTokens); const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if (!serviceWorker) { @@ -141,4 +144,181 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf return { tokens: currentTokens, status: 'FORCE_REFRESH', nonce }; } return { tokens: currentTokens, status, nonce }; +} + + + + +const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = false, extras:StringMap = null, updateTokens) =>{ + + while (!navigator.onLine && document.hidden) { + await sleepAsync({milliseconds: 1000}); + oidc.publishEvent(eventNames.refreshTokensAsync, { message: 'wait because navigator is offline and hidden' }); + } + let numberTryOnline = 6; + while (!navigator.onLine && numberTryOnline > 0) { + await sleepAsync({milliseconds: 1000}); + numberTryOnline--; + oidc.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is offline try ${numberTryOnline}` }); + } + const isDocumentHidden = document.hidden; + const nextIndex = index + 1; + if (!extras) { + extras = {}; + } + const configuration = oidc.configuration; + + const silentLoginAsync = (extras: StringMap, state:string=null, scope:string = null) => { + return _silentLoginAsync(oidc.configurationName, oidc.configuration, oidc.publishEvent.bind(oidc))(extras, state, scope); + }; + const localsilentLoginAsync = async () => { + try { + let loginParams; + const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); + if (serviceWorker) { + loginParams = serviceWorker.getLoginParams(); + } else { + const session = initSession(oidc.configurationName, configuration.storage); + loginParams = session.getLoginParams(); + } + const silent_token_response = await silentLoginAsync({ + ...loginParams.extras, + ...extras, + prompt: 'none', + }); + if (silent_token_response) { + if(silent_token_response.error) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent' }); + return { tokens: null, status: 'SESSION_LOST' }; + } + + updateTokens(silent_token_response.tokens); + oidc.publishEvent(Oidc.eventNames.token_renewed, {}); + return { tokens: silent_token_response.tokens, status: 'LOGGED' }; + } + + } catch (exceptionSilent: any) { + console.error(exceptionSilent); + oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exceptionSilent', exception: exceptionSilent.message }); + return await synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens); + } + }; + + if (index > 4) { + if(isDocumentHidden){ + //oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); + return { tokens: oidc.tokens, status: 'GIVE_UP' }; + } else{ + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); + return { tokens: null, status: 'SESSION_LOST' }; + } + } + try { + const { status, tokens, nonce } = await syncTokensInfoAsync(oidc)(configuration, oidc.configurationName, oidc.tokens, forceRefresh); + switch (status) { + case synchroniseTokensStatus.SESSION_LOST: + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token session lost' }); + return { tokens: null, status: 'SESSION_LOST' }; + case synchroniseTokensStatus.NOT_CONNECTED: + updateTokens(null); + return { tokens: null, status: null }; + case synchroniseTokensStatus.TOKENS_VALID: + updateTokens(tokens); + return { tokens, status: 'LOGGED_IN' }; + case synchroniseTokensStatus.TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID: + updateTokens(tokens); + oidc.publishEvent(Oidc.eventNames.token_renewed, { reason: 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID' }); + return { tokens, status: 'LOGGED_IN' }; + case synchroniseTokensStatus.LOGOUT_FROM_ANOTHER_TAB: + updateTokens(null); + oidc.publishEvent(eventNames.logout_from_another_tab, { status: 'session syncTokensAsync' }); + return { tokens: null, status: 'LOGGED_OUT' }; + case synchroniseTokensStatus.REQUIRE_SYNC_TOKENS: + oidc.publishEvent(eventNames.refreshTokensAsync_begin, { tryNumber: index }); + return await localsilentLoginAsync(); + default: { + oidc.publishEvent(eventNames.refreshTokensAsync_begin, { refreshToken: tokens.refreshToken, status, tryNumber: index }); + if (!tokens.refreshToken) { + return await localsilentLoginAsync(); + } + + const clientId = configuration.client_id; + const redirectUri = configuration.redirect_uri; + const authority = configuration.authority; + const tokenExtras = configuration.token_request_extras ? configuration.token_request_extras : {}; + const finalExtras = { ...tokenExtras }; + + for (const [key, value] of Object.entries(extras)) { + if (key.endsWith(':token_request')) { + finalExtras[key.replace(':token_request', '')] = value; + } + } + const localFunctionAsync = async () => { + const details = { + client_id: clientId, + redirect_uri: redirectUri, + grant_type: 'refresh_token', + refresh_token: tokens.refreshToken, + }; + const oidcServerConfiguration = await oidc.initAsync(authority, configuration.authority_configuration); + const timeoutMs = document.hidden ? 10000 : 30000 * 10; + const url = oidcServerConfiguration.tokenEndpoint; + const headersExtras = {}; + if(configuration.demonstrating_proof_of_possession) { + headersExtras['DPoP'] = await oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, 'POST'); + } + const tokenResponse = await performTokenRequestAsync(oidc.getFetch())(url, + details, + finalExtras, + tokens, + headersExtras, + configuration.token_renew_mode, + timeoutMs); + + if (tokenResponse.success) { + const { isValid, reason } = isTokensOidcValid(tokenResponse.data, nonce.nonce, oidcServerConfiguration); + if (!isValid) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: `refresh token return not valid tokens, reason: ${reason}` }); + return { tokens: null, status: 'SESSION_LOST' }; + } + updateTokens(tokenResponse.data); + if(tokenResponse.demonstratingProofOfPossessionNonce) { + const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); + if(serviceWorker){ + await serviceWorker.setDemonstratingProofOfPossessionNonce(tokenResponse.demonstratingProofOfPossessionNonce); + } else { + const session = initSession(oidc.configurationName, configuration.storage); + await session.setDemonstratingProofOfPossessionNonce(tokenResponse.demonstratingProofOfPossessionNonce); + } + } + oidc.publishEvent(eventNames.refreshTokensAsync_end, { success: tokenResponse.success }); + oidc.publishEvent(Oidc.eventNames.token_renewed, { reason: 'REFRESH_TOKEN' }); + return { tokens: tokenResponse.data, status: 'LOGGED_IN' }; + } else { + oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { + message: 'bad request', + tokenResponse, + }); + + if (tokenResponse.status >= 400 && tokenResponse.status < 500) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: `session lost: ${tokenResponse.status}` }); + return { tokens: null, status: 'SESSION_LOST' }; + } + + return await synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens); + } + }; + return await localFunctionAsync(); + } + } + } catch (exception: any) { + console.error(exception); + oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exception', exception: exception.message }); + return synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens); + } } \ No newline at end of file diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 98d1272ae..9f4ab259a 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -122,7 +122,11 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, body: formBodyString, }, timeoutMs); if (response.status !== 200) { - return { success: false, status: response.status, demonstratingProofOfPossessionNonce:null }; + return { + success: false, + status: response.status, + demonstratingProofOfPossessionNonce:null + }; } const tokens = await response.json(); @@ -132,6 +136,7 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, } return { success: true, + status: response.status, data: parseOriginalTokens(tokens, oldTokens, tokenRenewMode), demonstratingProofOfPossessionNonce: demonstratingProofOfPossessionNonce, }; diff --git a/packages/oidc-client/src/silentLogin.ts b/packages/oidc-client/src/silentLogin.ts index 319125944..3e1b5a51d 100644 --- a/packages/oidc-client/src/silentLogin.ts +++ b/packages/oidc-client/src/silentLogin.ts @@ -6,6 +6,7 @@ import { OidcConfiguration, StringMap } from './types.js'; export type SilentLoginResponse = { tokens:Tokens; sessionState:string; + error:string; }; // eslint-disable-next-line @typescript-eslint/ban-types @@ -60,6 +61,7 @@ export const _silentLoginAsync = (configurationName:string, configuration:OidcCo ) { const key = `${configurationName}_oidc_tokens:`; const key_error = `${configurationName}_oidc_error:`; + const key_exception = `${configurationName}_oidc_exception:`; const data = e.data; if (data && typeof (data) === 'string') { if (!isResolved) { @@ -74,8 +76,15 @@ export const _silentLoginAsync = (configurationName:string, configuration:OidcCo publishEvent(eventNames.silentLoginAsync_error, result); iframe.remove(); isResolved = true; - reject(new Error('oidc_' + result.error)); + resolve({error: 'oidc_' + result.error, tokens: null, sessionState: null}); + } else if (data.startsWith(key_exception)) { + const result = JSON.parse(e.data.replace(key_exception, '')); + publishEvent(eventNames.silentLoginAsync_error, result); + iframe.remove(); + isResolved = true; + reject(new Error(result.error)); } + } } } From b6d0612ed00687ec1b0332cc11a536c6b221e860 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 3 Feb 2024 21:33:29 +0000 Subject: [PATCH 173/565] [skip ci] Update to version 7.15.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 19b4d5db1..c7a73aedc 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.15.3", + "version": "7.15.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 6d1aa22bb..7796b3fe0 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.15.3'; +export default '7.15.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3371d15b1..e2497663a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.15.3", + "version": "7.15.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 6d1aa22bb..7796b3fe0 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.15.3'; +export default '7.15.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 7311cc148..5b8c967e7 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.15.3", + "version": "7.15.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 44b58511bb7f966bb3470b1a2592ddc1623cbd79 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 3 Feb 2024 21:33:30 +0000 Subject: [PATCH 174/565] [skip ci] Generate changelog to version 7.15.4 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d04c2cf2c..df151687c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.15.3 +## 7.15.4 + +- [f2d74fb](https://github.com/AxaFrance/oidc-client/commit/f2d74fba6d2e48e6d478aa69d261fe9cceb69bfa) - fix(oidc): eternal lock when refresh_token invalid and multiple tabs (#1281) (release), 2024-02-03 by *Guillaume Chervet* + + +## v7.15.3 - [7a5d32c](https://github.com/AxaFrance/oidc-client/commit/7a5d32cf650870a5b1c2910ceb0a3e6db4cec0b7) - fix(oidc): storage empty update message (release), 2024-02-03 by *Guillaume Chervet* @@ -317,8 +322,3 @@ - [faa0da2](https://github.com/AxaFrance/oidc-client/commit/faa0da2235239a0b12e82a070b3f6e2c30572bfa) - fix(readme): some path was broken, 2023-08-04 by *Guillaume Chervet* -## v7.2.0 - -- [60ea58b](https://github.com/AxaFrance/oidc-client/commit/60ea58b266c4173e3a92b8637d9abd09cca0ea1a) - feat(oidc-service-worker): copy become manual (#1120) (release), 2023-08-04 by *Guillaume Chervet* - - From d79af9aba023faf78e9816c4d681413618bdd843 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 9 Feb 2024 06:53:33 +0100 Subject: [PATCH 175/565] refactor(all): updates dev libraries (release) (#1284) * refactor(all): updates dev libraries * update (alpha) * update (alpha) * update * ttest * test * upf * test (alpha) * update (alpha) * update --- examples/oidc-client-demo/package.json | 12 +- examples/react-oidc-demo/package.json | 18 +- package.json | 24 +- .../oidc-client-service-worker/package.json | 13 +- .../oidc-client-service-worker/vite.config.js | 5 - packages/oidc-client/package.json | 18 +- .../oidc-client/public/OidcServiceWorker.js | 567 --- packages/oidc-client/src/logout.spec.ts | 2 +- packages/oidc-client/tests/setup.js | 18 +- packages/oidc-client/vite.config.ts | 17 - packages/react-oidc/package.json | 22 +- packages/react-oidc/tests/setup.js | 8 +- pnpm-lock.yaml | 3150 +++++++---------- 13 files changed, 1395 insertions(+), 2479 deletions(-) delete mode 100644 packages/oidc-client/public/OidcServiceWorker.js diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 3aaa8d91d..4655811b9 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -4,11 +4,11 @@ "private": true, "dependencies": { "@axa-fr/oidc-client": "workspace:~", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", + "@testing-library/jest-dom": "6.4.2", + "@testing-library/user-event": "14.5.2", + "@types/jest": "29.5.12", "typescript": "^5.3.3", - "web-vitals": "^3.4.0" + "web-vitals": "3.5.2" }, "scripts": { "start": "vite", @@ -30,8 +30,8 @@ ] }, "devDependencies": { - "@types/node": "^20.10.1", + "@types/node": "20.11.16", "cross-env": "^7.0.3", - "vite": "^4.4.12" + "vite": " 5.0.12" } } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 0c12ba741..5c34c3e21 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -24,21 +24,19 @@ "react-router-dom": "^6.21.1" }, "devDependencies": { - "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "14.1.2", - "@testing-library/user-event": "14.4.3", - "@types/react": "^18.2.39", - "@vitejs/plugin-react": "4.0.3", - "@vitest/coverage-c8": "^0.33.0", + "@testing-library/jest-dom": "6.4.2", + "@testing-library/react": "14.2.1", + "@testing-library/user-event": "14.5.2", + "@types/react": "18.2.54", + "@vitejs/plugin-react": "4.2.1", "bootstrap": "^4.6.2", "copyfiles": "2.4.1", "cross-env": "^7.0.3", - "jsdom": "22.1.0", - "msw": "2.0.0", + "jsdom": " 24.0.0", "typescript": "5.3.3", - "vite": "^4.4.12", + "vite": "5.0.12", "vite-plugin-dts": "^3.6.4", - "vitest": "^0.33.0" + "vitest": "1.2.2" }, "license": "MIT", "publishConfig": { diff --git a/package.json b/package.json index 2b8fc1bcf..887e64718 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,26 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.13.1", - "@typescript-eslint/parser": "6.13.1", - "eslint": "^8.54.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "eslint-plugin-import": "2.29.0", + "@typescript-eslint/eslint-plugin": "6.21.0", + "@typescript-eslint/parser": "6.21.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "9.1.0", + "eslint-define-config": "2.1.0", + "eslint-plugin-import": "2.29.1", "eslint-plugin-jsx-a11y": "6.8.0", - "eslint-plugin-n": "16.3.1", + "eslint-plugin-n": "16.6.2", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-prettier": "5.0.1", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-regexp": "^2.1.2", + "eslint-plugin-regexp": "^2.2.0", "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-testing-library": "^5.11.0", - "prettier": "3.1.0", + "eslint-plugin-testing-library": "6.2.0", + "prettier": "3.2.5", "tslib": "^2.6.2", - "tsx": "4.6.1", + "tsx": "4.7.0", "typescript": "5.3.3", - "vitest": "0.34.6" + "vitest": "1.2.2" }, "engines": { "node": "16.* || >= 18.0.0" diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index c7a73aedc..f30456754 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,15 +34,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-c8": "^0.33.0", - "cpy": "^10.1.0", + "@vitest/coverage-v8": "1.2.2", + "cpy": "11.0.0", "cpy-cli": "^5.0.0", - "rimraf": "5.0.1", - "msw": "2.0.0", + "rimraf": "5.0.5", "typescript": "5.3.3", - "vite": "^4.4.12", - "vite-plugin-dts": "^3.6.4", - "vitest": "^0.33.0" + "vite": "5.0.12", + "vite-plugin-dts": "^3.7.2", + "vitest": "1.2.2" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client-service-worker/vite.config.js b/packages/oidc-client-service-worker/vite.config.js index 13467b083..93db0b0ff 100644 --- a/packages/oidc-client-service-worker/vite.config.js +++ b/packages/oidc-client-service-worker/vite.config.js @@ -6,11 +6,6 @@ export default defineConfig({ plugins: [dts({ insertTypesEntry: true, })], - test: { - coverage: { - provider: 'c8' - } - }, build: { minify: false, //default esbuild sourcemap: true, diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e2497663a..23907a3bb 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -23,18 +23,18 @@ "@axa-fr/oidc-client-service-worker": "workspace:*" }, "devDependencies": { - "@testing-library/dom": "^9.3.3", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "14.1.2", - "@vitest/coverage-v8": "^0.33.0", + "@testing-library/dom": "9.3.4", + "@testing-library/jest-dom": "6.4.2", + "@testing-library/react": "14.2.1", + "@vitest/coverage-v8": "1.2.2", "base64-js": "^1.5.1", - "cpy": "^10.1.0", + "cpy": "11.0.0", "cpy-cli": "^5.0.0", - "rimraf": "5.0.1", + "rimraf": "5.0.5", "typescript": "5.3.3", - "vite": "^4.4.12", - "vite-plugin-dts": "^3.6.4", - "vitest": "^0.33.0" + "vite": "5.0.12", + "vite-plugin-dts": "3.7.2", + "vitest": "1.2.2" }, "keywords": [ "oidc", diff --git a/packages/oidc-client/public/OidcServiceWorker.js b/packages/oidc-client/public/OidcServiceWorker.js deleted file mode 100644 index 2d2a54661..000000000 --- a/packages/oidc-client/public/OidcServiceWorker.js +++ /dev/null @@ -1,567 +0,0 @@ -const scriptFilename = "OidcTrustedDomains.js"; -const acceptAnyDomainToken = "*"; -const TOKEN = { - REFRESH_TOKEN: "REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER", - ACCESS_TOKEN: "ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER", - NONCE_TOKEN: "NONCE_SECURED_BY_OIDC_SERVICE_WORKER", - CODE_VERIFIER: "CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER" -}; -const TokenRenewMode = { - access_token_or_id_token_invalid: "access_token_or_id_token_invalid", - access_token_invalid: "access_token_invalid", - id_token_invalid: "id_token_invalid" -}; -const openidWellknownUrlEndWith = "/.well-known/openid-configuration"; -const version = "7.1.0"; -function checkDomain(domains, endpoint) { - if (!endpoint) { - return; - } - const domain = domains.find((domain2) => { - var _a; - let testable; - if (typeof domain2 === "string") { - testable = new RegExp(`^${domain2}`); - } else { - testable = domain2; - } - return (_a = testable.test) == null ? void 0 : _a.call(testable, endpoint); - }); - if (!domain) { - throw new Error( - "Domain " + endpoint + " is not trusted, please add domain in " + scriptFilename - ); - } -} -const getDomains = (trustedDomain, type) => { - if (Array.isArray(trustedDomain)) { - return trustedDomain; - } - return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? []; -}; -const getCurrentDatabaseDomain = (database2, url, trustedDomains2) => { - var _a; - if (url.endsWith(openidWellknownUrlEndWith)) { - return null; - } - for (const [key, currentDatabase] of Object.entries(database2)) { - const oidcServerConfiguration = currentDatabase.oidcServerConfiguration; - if (!oidcServerConfiguration) { - continue; - } - if (oidcServerConfiguration.tokenEndpoint && url === oidcServerConfiguration.tokenEndpoint) { - continue; - } - if (oidcServerConfiguration.revocationEndpoint && url === oidcServerConfiguration.revocationEndpoint) { - continue; - } - const trustedDomain = trustedDomains2 == null ? [] : trustedDomains2[key]; - const domains = getDomains(trustedDomain, "accessToken"); - const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint ? [oidcServerConfiguration.userInfoEndpoint, ...domains] : [...domains]; - let hasToSendToken = false; - if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) { - hasToSendToken = true; - } else { - for (let i = 0; i < domainsToSendTokens.length; i++) { - let domain = domainsToSendTokens[i]; - if (typeof domain === "string") { - domain = new RegExp(`^${domain}`); - } - if ((_a = domain.test) == null ? void 0 : _a.call(domain, url)) { - hasToSendToken = true; - break; - } - } - } - if (hasToSendToken) { - if (!currentDatabase.tokens) { - return null; - } - return currentDatabase; - } - } - return null; -}; -function serializeHeaders(headers) { - const headersObj = {}; - for (const key of headers.keys()) { - if (headers.has(key)) { - headersObj[key] = headers.get(key); - } - } - return headersObj; -} -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); -function countLetter(str, find) { - return str.split(find).length - 1; -} -function parseJwt(token) { - return JSON.parse( - b64DecodeUnicode(token.split(".")[1].replace("-", "+").replace("_", "/")) - ); -} -function b64DecodeUnicode(str) { - return decodeURIComponent( - Array.prototype.map.call( - atob(str), - (c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2) - ).join("") - ); -} -function computeTimeLeft(refreshTimeBeforeTokensExpirationInSecond, expiresAt) { - const currentTimeUnixSecond = (/* @__PURE__ */ new Date()).getTime() / 1e3; - return Math.round( - expiresAt - refreshTimeBeforeTokensExpirationInSecond - currentTimeUnixSecond - ); -} -function isTokensValid(tokens) { - if (!tokens) { - return false; - } - return computeTimeLeft(0, tokens.expiresAt) > 0; -} -const extractTokenPayload = (token) => { - try { - if (!token) { - return null; - } - if (countLetter(token, ".") === 2) { - return parseJwt(token); - } else { - return null; - } - } catch (e) { - console.warn(e); - } - return null; -}; -const isTokensOidcValid = (tokens, nonce, oidcServerConfiguration) => { - if (tokens.idTokenPayload) { - const idTokenPayload = tokens.idTokenPayload; - if (oidcServerConfiguration.issuer !== idTokenPayload.iss) { - return { isValid: false, reason: "Issuer does not match" }; - } - const currentTimeUnixSecond = (/* @__PURE__ */ new Date()).getTime() / 1e3; - if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) { - return { isValid: false, reason: "Token expired" }; - } - const timeInSevenDays = 60 * 60 * 24 * 7; - if (idTokenPayload.iat && idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond) { - return { isValid: false, reason: "Token is used from too long time" }; - } - if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) { - return { isValid: false, reason: "Nonce does not match" }; - } - } - return { isValid: true, reason: "" }; -}; -function _hideTokens(tokens, currentDatabaseElement, configurationName) { - if (!tokens.issued_at) { - const currentTimeUnixSecond = (/* @__PURE__ */ new Date()).getTime() / 1e3; - tokens.issued_at = currentTimeUnixSecond; - } else if (typeof tokens.issued_at == "string") { - tokens.issued_at = parseInt(tokens.issued_at, 10); - } - const accessTokenPayload = extractTokenPayload(tokens.access_token); - const secureTokens = { - ...tokens, - accessTokenPayload - }; - if (currentDatabaseElement.hideAccessToken) { - secureTokens.access_token = TOKEN.ACCESS_TOKEN + "_" + configurationName; - } - tokens.accessTokenPayload = accessTokenPayload; - let _idTokenPayload = null; - if (tokens.id_token) { - _idTokenPayload = extractTokenPayload(tokens.id_token); - tokens.idTokenPayload = { ..._idTokenPayload }; - if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) { - const keyNonce = TOKEN.NONCE_TOKEN + "_" + currentDatabaseElement.configurationName; - _idTokenPayload.nonce = keyNonce; - } - secureTokens.idTokenPayload = _idTokenPayload; - } - if (tokens.refresh_token) { - secureTokens.refresh_token = TOKEN.REFRESH_TOKEN + "_" + configurationName; - } - const expireIn = typeof tokens.expires_in == "string" ? parseInt(tokens.expires_in, 10) : tokens.expires_in; - const idTokenExpiresAt = _idTokenPayload && _idTokenPayload.exp ? _idTokenPayload.exp : Number.MAX_VALUE; - const accessTokenExpiresAt = accessTokenPayload && accessTokenPayload.exp ? accessTokenPayload.exp : tokens.issued_at + expireIn; - let expiresAt; - const tokenRenewMode = currentDatabaseElement.oidcConfiguration.token_renew_mode; - if (tokenRenewMode === TokenRenewMode.access_token_invalid) { - expiresAt = accessTokenExpiresAt; - } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) { - expiresAt = idTokenExpiresAt; - } else { - expiresAt = idTokenExpiresAt < accessTokenExpiresAt ? idTokenExpiresAt : accessTokenExpiresAt; - } - secureTokens.expiresAt = expiresAt; - tokens.expiresAt = expiresAt; - const nonce = currentDatabaseElement.nonce ? currentDatabaseElement.nonce.nonce : null; - const { isValid, reason } = isTokensOidcValid( - tokens, - nonce, - currentDatabaseElement.oidcServerConfiguration - ); - if (!isValid) { - throw Error(`Tokens are not OpenID valid, reason: ${reason}`); - } - if (currentDatabaseElement.tokens != null && "refresh_token" in currentDatabaseElement.tokens && !("refresh_token" in tokens)) { - const refreshToken = currentDatabaseElement.tokens.refresh_token; - currentDatabaseElement.tokens = { - ...tokens, - refresh_token: refreshToken - }; - } else { - currentDatabaseElement.tokens = tokens; - } - currentDatabaseElement.status = "LOGGED_IN"; - return secureTokens; -} -function hideTokens(currentDatabaseElement) { - const configurationName = currentDatabaseElement.configurationName; - return (response) => { - if (response.status !== 200) { - return response; - } - return response.json().then((tokens) => { - const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName); - const body = JSON.stringify(secureTokens); - return new Response(body, response); - }); - }; -} -function replaceCodeVerifier(codeVerifier, newCodeVerifier) { - const regex = /code_verifier=[A-Za-z0-9_-]+/i; - return codeVerifier.replace(regex, `code_verifier=${newCodeVerifier}`); -} -const _self = self; -_self.importScripts(scriptFilename); -const id = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3).toString(); -const keepAliveJsonFilename = "OidcKeepAliveServiceWorker.json"; -const handleInstall = (event) => { - console.log("[OidcServiceWorker] service worker installed " + id); - event.waitUntil(_self.skipWaiting()); -}; -const handleActivate = (event) => { - console.log("[OidcServiceWorker] service worker activated " + id); - event.waitUntil(_self.clients.claim()); -}; -let currentLoginCallbackConfigurationName = null; -const database = { - default: { - configurationName: "default", - tokens: null, - status: null, - state: null, - codeVerifier: null, - nonce: null, - oidcServerConfiguration: null, - hideAccessToken: true - } -}; -const getCurrentDatabasesTokenEndpoint = (database2, url) => { - const databases = []; - for (const [, value] of Object.entries(database2)) { - if (value.oidcServerConfiguration != null && url.startsWith(value.oidcServerConfiguration.tokenEndpoint)) { - databases.push(value); - } else if (value.oidcServerConfiguration != null && value.oidcServerConfiguration.revocationEndpoint && url.startsWith(value.oidcServerConfiguration.revocationEndpoint)) { - databases.push(value); - } - } - return databases; -}; -const keepAliveAsync = async (event) => { - const originalRequest = event.request; - const isFromVanilla = originalRequest.headers.has("oidc-vanilla"); - const init = { status: 200, statusText: "oidc-service-worker" }; - const response = new Response("{}", init); - if (!isFromVanilla) { - const originalRequestUrl = new URL(originalRequest.url); - const minSleepSeconds = Number(originalRequestUrl.searchParams.get("minSleepSeconds")) || 240; - for (let i = 0; i < minSleepSeconds; i++) { - await sleep(1e3 + Math.floor(Math.random() * 1e3)); - const cache = await caches.open("oidc_dummy_cache"); - await cache.put(event.request, response.clone()); - } - } - return response; -}; -const handleFetch = async (event) => { - const originalRequest = event.request; - const url = originalRequest.url; - if (originalRequest.url.includes(keepAliveJsonFilename)) { - event.respondWith(keepAliveAsync(event)); - return; - } - const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain( - database, - originalRequest.url, - trustedDomains - ); - if (currentDatabaseForRequestAccessToken && currentDatabaseForRequestAccessToken.tokens && currentDatabaseForRequestAccessToken.tokens.access_token) { - while (currentDatabaseForRequestAccessToken.tokens && !isTokensValid(currentDatabaseForRequestAccessToken.tokens)) { - await sleep(200); - } - const newRequest = originalRequest.mode === "navigate" ? new Request(originalRequest, { - headers: { - ...serializeHeaders(originalRequest.headers), - authorization: "Bearer " + currentDatabaseForRequestAccessToken.tokens.access_token - } - }) : new Request(originalRequest, { - headers: { - ...serializeHeaders(originalRequest.headers), - authorization: "Bearer " + currentDatabaseForRequestAccessToken.tokens.access_token - }, - mode: currentDatabaseForRequestAccessToken.oidcConfiguration.service_worker_convert_all_requests_to_cors ? "cors" : originalRequest.mode - }); - event.waitUntil(event.respondWith(fetch(newRequest))); - return; - } - if (event.request.method !== "POST") { - return; - } - let currentDatabase = null; - const currentDatabases = getCurrentDatabasesTokenEndpoint( - database, - originalRequest.url - ); - const numberDatabase = currentDatabases.length; - if (numberDatabase > 0) { - const maPromesse = new Promise((resolve, reject) => { - const clonedRequest = originalRequest.clone(); - const response = clonedRequest.text().then((actualBody) => { - if (actualBody.includes(TOKEN.REFRESH_TOKEN) || actualBody.includes(TOKEN.ACCESS_TOKEN)) { - let newBody = actualBody; - for (let i = 0; i < numberDatabase; i++) { - const currentDb = currentDatabases[i]; - if (currentDb && currentDb.tokens != null) { - const keyRefreshToken = TOKEN.REFRESH_TOKEN + "_" + currentDb.configurationName; - if (actualBody.includes(keyRefreshToken)) { - newBody = newBody.replace( - keyRefreshToken, - encodeURIComponent(currentDb.tokens.refresh_token) - ); - currentDatabase = currentDb; - break; - } - const keyAccessToken = TOKEN.ACCESS_TOKEN + "_" + currentDb.configurationName; - if (actualBody.includes(keyAccessToken)) { - newBody = newBody.replace( - keyAccessToken, - encodeURIComponent(currentDb.tokens.access_token) - ); - currentDatabase = currentDb; - break; - } - } - } - const fetchPromise = fetch(originalRequest, { - body: newBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers) - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity - }); - if (currentDatabase && currentDatabase.oidcServerConfiguration != null && currentDatabase.oidcServerConfiguration.revocationEndpoint && url.startsWith( - currentDatabase.oidcServerConfiguration.revocationEndpoint - )) { - return fetchPromise.then(async (response2) => { - const text = await response2.text(); - return new Response(text, response2); - }); - } - return fetchPromise.then(hideTokens(currentDatabase)); - } else if (actualBody.includes("code_verifier=") && currentLoginCallbackConfigurationName) { - currentDatabase = database[currentLoginCallbackConfigurationName]; - currentLoginCallbackConfigurationName = null; - let newBody = actualBody; - if (currentDatabase && currentDatabase.codeVerifier != null) { - newBody = replaceCodeVerifier(newBody, currentDatabase.codeVerifier); - } - return fetch(originalRequest, { - body: newBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers) - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity - }).then(hideTokens(currentDatabase)); - } - return fetch(originalRequest, { - body: actualBody, - method: clonedRequest.method, - headers: { - ...serializeHeaders(originalRequest.headers) - }, - mode: clonedRequest.mode, - cache: clonedRequest.cache, - redirect: clonedRequest.redirect, - referrer: clonedRequest.referrer, - credentials: clonedRequest.credentials, - integrity: clonedRequest.integrity - }); - }); - response.then((r) => { - resolve(r); - }).catch((err) => { - reject(err); - }); - }); - event.waitUntil(event.respondWith(maPromesse)); - } -}; -const trustedDomainsShowAccessToken = {}; -const handleMessage = (event) => { - const port = event.ports[0]; - const data = event.data; - const configurationName = data.configurationName; - let currentDatabase = database[configurationName]; - if (trustedDomains == null) { - trustedDomains = {}; - } - if (!currentDatabase) { - if (trustedDomainsShowAccessToken[configurationName] === void 0) { - const trustedDomain = trustedDomains[configurationName]; - trustedDomainsShowAccessToken[configurationName] = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken; - } - database[configurationName] = { - tokens: null, - state: null, - codeVerifier: null, - oidcServerConfiguration: null, - oidcConfiguration: void 0, - nonce: null, - status: null, - configurationName, - hideAccessToken: !trustedDomainsShowAccessToken[configurationName] - }; - currentDatabase = database[configurationName]; - if (!trustedDomains[configurationName]) { - trustedDomains[configurationName] = []; - } - } - switch (data.type) { - case "clear": - currentDatabase.tokens = null; - currentDatabase.state = null; - currentDatabase.codeVerifier = null; - currentDatabase.status = data.data.status; - port.postMessage({ configurationName }); - return; - case "init": { - const oidcServerConfiguration = data.data.oidcServerConfiguration; - const trustedDomain = trustedDomains[configurationName]; - const domains = getDomains(trustedDomain, "oidc"); - if (!domains.find((f) => f === acceptAnyDomainToken)) { - [ - oidcServerConfiguration.tokenEndpoint, - oidcServerConfiguration.revocationEndpoint, - oidcServerConfiguration.userInfoEndpoint, - oidcServerConfiguration.issuer - ].forEach((url) => { - checkDomain(domains, url); - }); - } - currentDatabase.oidcServerConfiguration = oidcServerConfiguration; - currentDatabase.oidcConfiguration = data.data.oidcConfiguration; - const where = data.data.where; - if (where === "loginCallbackAsync" || where === "tryKeepExistingSessionAsync") { - currentLoginCallbackConfigurationName = configurationName; - } else { - currentLoginCallbackConfigurationName = null; - } - if (!currentDatabase.tokens) { - port.postMessage({ - tokens: null, - status: currentDatabase.status, - configurationName, - version - }); - } else { - const tokens = { - ...currentDatabase.tokens - }; - if (currentDatabase.hideAccessToken) { - tokens.access_token = TOKEN.ACCESS_TOKEN + "_" + configurationName; - } - if (tokens.refresh_token) { - tokens.refresh_token = TOKEN.REFRESH_TOKEN + "_" + configurationName; - } - if (tokens.idTokenPayload && tokens.idTokenPayload.nonce && currentDatabase.nonce != null) { - tokens.idTokenPayload.nonce = TOKEN.NONCE_TOKEN + "_" + configurationName; - } - port.postMessage({ - tokens, - status: currentDatabase.status, - configurationName, - version - }); - } - return; - } - case "setState": - currentDatabase.state = data.data.state; - port.postMessage({ configurationName }); - return; - case "getState": { - const state = currentDatabase.state; - port.postMessage({ configurationName, state }); - return; - } - case "setCodeVerifier": - currentDatabase.codeVerifier = data.data.codeVerifier; - port.postMessage({ configurationName }); - return; - case "getCodeVerifier": { - port.postMessage({ - configurationName, - codeVerifier: currentDatabase.codeVerifier != null ? TOKEN.CODE_VERIFIER + "_" + configurationName : null - }); - return; - } - case "setSessionState": - currentDatabase.sessionState = data.data.sessionState; - port.postMessage({ configurationName }); - return; - case "getSessionState": { - const sessionState = currentDatabase.sessionState; - port.postMessage({ configurationName, sessionState }); - return; - } - case "setNonce": { - const nonce = data.data.nonce; - if (nonce) { - currentDatabase.nonce = nonce; - } - port.postMessage({ configurationName }); - return; - } - case "getNonce": { - const keyNonce = TOKEN.NONCE_TOKEN + "_" + configurationName; - const nonce = currentDatabase.nonce ? keyNonce : null; - port.postMessage({ configurationName, nonce }); - return; - } - default: - currentDatabase.items = { ...data.data }; - port.postMessage({ configurationName }); - } -}; -_self.addEventListener("install", handleInstall); -_self.addEventListener("activate", handleActivate); -_self.addEventListener("fetch", handleFetch); -_self.addEventListener("message", handleMessage); -//# sourceMappingURL=OidcServiceWorker.js.map diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index ad77d181b..e770abe64 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom'; +// import '@testing-library/jest-dom'; import { describe, expect, it, vi } from 'vitest'; diff --git a/packages/oidc-client/tests/setup.js b/packages/oidc-client/tests/setup.js index 47da0ebc4..aece2885f 100644 --- a/packages/oidc-client/tests/setup.js +++ b/packages/oidc-client/tests/setup.js @@ -1,11 +1,11 @@ -import matchers from '@testing-library/jest-dom/matchers'; -import { cleanup } from '@testing-library/react'; -import { afterEach,expect } from 'vitest'; +import { configDefaults } from 'vitest/config' +import {defineConfig} from "vite"; -// extends Vitest's expect method with methods from react-testing-library -expect.extend(matchers); - -// runs a cleanup after each test case (e.g. clearing jsdom) -afterEach(() => { - cleanup(); +export default defineConfig({ + test: { + exclude:[ + ...configDefaults.exclude, + 'public/*' + ] + }, }); \ No newline at end of file diff --git a/packages/oidc-client/vite.config.ts b/packages/oidc-client/vite.config.ts index 8442ebe99..398d1a5d7 100644 --- a/packages/oidc-client/vite.config.ts +++ b/packages/oidc-client/vite.config.ts @@ -2,10 +2,6 @@ import { defineConfig } from 'vite'; import dts from 'vite-plugin-dts'; -import pkg from './package.json'; - -const dependencies = externalDependencies(); -console.log('external dependencies:', dependencies); export default defineConfig({ build: { @@ -15,9 +11,6 @@ export default defineConfig({ formats: ['es', 'umd'], fileName: 'index', }, - rollupOptions: { - external: [...dependencies], - }, }, plugins: [ @@ -26,15 +19,5 @@ export default defineConfig({ resolve: { preserveSymlinks: true, // https://github.com/vitejs/vite/issues/11657 }, - test: { - globals: true, - environment: 'jsdom', - setupFiles: './tests/setup.js', - }, }); -function externalDependencies(): Array { - const deps = Object.keys(pkg.dependencies || {}); - const peerDeps = Object.keys(pkg.peerDependencies || {}); - return [...deps, ...peerDeps]; -} diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 5b8c967e7..393653747 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -48,24 +48,24 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "14.1.2", - "@testing-library/user-event": "14.4.3", + "@testing-library/jest-dom": "6.4.2", + "@testing-library/react": "14.2.1", + "@testing-library/user-event": "14.5.2", "@types/react": "^18.2.39", - "@vitejs/plugin-react": "4.0.3", - "@vitest/coverage-v8": "^0.33.0", - "cpy": "^10.1.0", + "@vitejs/plugin-react": "4.2.1", + "@vitest/coverage-v8": "1.2.2", + "cpy": "11.0.0", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", - "jsdom": "22.1.0", - "msw": "2.0.0", + "jsdom": "24.0.0", + "msw": "2.1.6", "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "5.0.1", "typescript": "5.3.3", - "vite": "^4.4.12", - "vite-plugin-dts": "^3.6.4", - "vitest": "^0.33.0" + "vite": "5.0.12", + "vite-plugin-dts": "3.7.2", + "vitest": "1.2.2" }, "license": "MIT", "publishConfig": { diff --git a/packages/react-oidc/tests/setup.js b/packages/react-oidc/tests/setup.js index 47da0ebc4..3256870fe 100644 --- a/packages/react-oidc/tests/setup.js +++ b/packages/react-oidc/tests/setup.js @@ -1,9 +1,5 @@ -import matchers from '@testing-library/jest-dom/matchers'; -import { cleanup } from '@testing-library/react'; -import { afterEach,expect } from 'vitest'; - -// extends Vitest's expect method with methods from react-testing-library -expect.extend(matchers); +import { cleanup } from '@testing-library/react'; +import { afterEach } from 'vitest'; // runs a cleanup after each test case (e.g. clearing jsdom) afterEach(() => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 086c4dcdf..cabbeccf6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,65 +9,65 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.13.1 - version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.3) + specifier: 6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: 6.13.1 - version: 6.13.1(eslint@8.54.0)(typescript@5.3.3) + specifier: 6.21.0 + version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) eslint: - specifier: ^8.54.0 - version: 8.54.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.10.0(eslint@8.54.0) + specifier: 9.1.0 + version: 9.1.0(eslint@8.56.0) eslint-define-config: - specifier: ^1.21.0 - version: 1.24.1 + specifier: 2.1.0 + version: 2.1.0 eslint-plugin-import: - specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0) + specifier: 2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0) eslint-plugin-jsx-a11y: specifier: 6.8.0 - version: 6.8.0(eslint@8.54.0) + version: 6.8.0(eslint@8.56.0) eslint-plugin-n: - specifier: 16.3.1 - version: 16.3.1(eslint@8.54.0) + specifier: 16.6.2 + version: 16.6.2(eslint@8.56.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@3.1.0) + version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) eslint-plugin-react: specifier: 7.33.2 - version: 7.33.2(eslint@8.54.0) + version: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.54.0) + version: 4.6.0(eslint@8.56.0) eslint-plugin-regexp: - specifier: ^2.1.2 - version: 2.1.2(eslint@8.54.0) + specifier: ^2.2.0 + version: 2.2.0(eslint@8.56.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.54.0) + version: 10.0.0(eslint@8.56.0) eslint-plugin-testing-library: - specifier: ^5.11.0 - version: 5.11.1(eslint@8.54.0)(typescript@5.3.3) + specifier: 6.2.0 + version: 6.2.0(eslint@8.56.0)(typescript@5.3.3) prettier: - specifier: 3.1.0 - version: 3.1.0 + specifier: 3.2.5 + version: 3.2.5 tslib: specifier: ^2.6.2 version: 2.6.2 tsx: - specifier: 4.6.1 - version: 4.6.1 + specifier: 4.7.0 + version: 4.7.0 typescript: specifier: 5.3.3 version: 5.3.3 vitest: - specifier: 0.34.6 - version: 0.34.6 + specifier: 1.2.2 + version: 1.2.2(jsdom@24.0.0) examples/nextjs-demo: dependencies: @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.0.4(react-dom@18.2.0)(react@18.2.0) + version: 14.1.0(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -90,30 +90,30 @@ importers: specifier: workspace:~ version: link:../../packages/oidc-client '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.17.0 + specifier: 6.4.2 + version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) '@testing-library/user-event': - specifier: ^13.5.0 - version: 13.5.0(@testing-library/dom@9.3.3) + specifier: 14.5.2 + version: 14.5.2(@testing-library/dom@9.3.4) '@types/jest': - specifier: ^27.5.2 - version: 27.5.2 + specifier: 29.5.12 + version: 29.5.12 typescript: specifier: ^5.3.3 version: 5.3.3 web-vitals: - specifier: ^3.4.0 - version: 3.4.0 + specifier: 3.5.2 + version: 3.5.2 devDependencies: '@types/node': - specifier: ^20.10.1 - version: 20.10.1 + specifier: 20.11.16 + version: 20.11.16 cross-env: specifier: ^7.0.3 version: 7.0.3 vite: - specifier: ^4.4.12 - version: 4.4.12(@types/node@20.10.1) + specifier: ' 5.0.12' + version: 5.0.12(@types/node@20.11.16) examples/react-oidc-demo: dependencies: @@ -131,23 +131,20 @@ importers: version: 6.21.1(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': - specifier: 5.16.5 - version: 5.16.5 + specifier: 6.4.2 + version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) '@testing-library/react': - specifier: 14.1.2 - version: 14.1.2(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.3) + specifier: 14.5.2 + version: 14.5.2(@testing-library/dom@9.3.4) '@types/react': - specifier: ^18.2.39 - version: 18.2.39 + specifier: 18.2.54 + version: 18.2.54 '@vitejs/plugin-react': - specifier: 4.0.3 - version: 4.0.3(vite@4.4.12) - '@vitest/coverage-c8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) + specifier: 4.2.1 + version: 4.2.1(vite@5.0.12) bootstrap: specifier: ^4.6.2 version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) @@ -158,23 +155,20 @@ importers: specifier: ^7.0.3 version: 7.0.3 jsdom: - specifier: 22.1.0 - version: 22.1.0 - msw: - specifier: 2.0.0 - version: 2.0.0(typescript@5.3.3) + specifier: ' 24.0.0' + version: 24.0.0 typescript: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^4.4.12 - version: 4.4.12(@types/node@20.10.1) + specifier: 5.0.12 + version: 5.0.12(@types/node@20.11.16) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@4.4.12) + version: 3.6.4(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 1.2.2 + version: 1.2.2(jsdom@24.0.0) packages/oidc-client: dependencies: @@ -183,71 +177,68 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/dom': - specifier: ^9.3.3 - version: 9.3.3 + specifier: 9.3.4 + version: 9.3.4 '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.17.0 + specifier: 6.4.2 + version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) '@testing-library/react': - specifier: 14.1.2 - version: 14.1.2(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@vitest/coverage-v8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) + specifier: 1.2.2 + version: 1.2.2(vitest@1.2.2) base64-js: specifier: ^1.5.1 version: 1.5.1 cpy: - specifier: ^10.1.0 - version: 10.1.0 + specifier: 11.0.0 + version: 11.0.0 cpy-cli: specifier: ^5.0.0 version: 5.0.0 rimraf: - specifier: 5.0.1 - version: 5.0.1 + specifier: 5.0.5 + version: 5.0.5 typescript: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^4.4.12 - version: 4.4.12(@types/node@20.10.1) + specifier: 5.0.12 + version: 5.0.12(@types/node@20.11.16) vite-plugin-dts: - specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@4.4.12) + specifier: 3.7.2 + version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 1.2.2 + version: 1.2.2(jsdom@24.0.0) packages/oidc-client-service-worker: devDependencies: - '@vitest/coverage-c8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) + '@vitest/coverage-v8': + specifier: 1.2.2 + version: 1.2.2(vitest@1.2.2) cpy: - specifier: ^10.1.0 - version: 10.1.0 + specifier: 11.0.0 + version: 11.0.0 cpy-cli: specifier: ^5.0.0 version: 5.0.0 - msw: - specifier: 2.0.0 - version: 2.0.0(typescript@5.3.3) rimraf: - specifier: 5.0.1 - version: 5.0.1 + specifier: 5.0.5 + version: 5.0.5 typescript: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^4.4.12 - version: 4.4.12(@types/node@20.10.1) + specifier: 5.0.12 + version: 5.0.12(@types/node@20.11.16) vite-plugin-dts: - specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@4.4.12) + specifier: ^3.7.2 + version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 1.2.2 + version: 1.2.2(jsdom@24.0.0) packages/react-oidc: dependencies: @@ -262,26 +253,26 @@ importers: version: 1.5.1 devDependencies: '@testing-library/jest-dom': - specifier: 5.16.5 - version: 5.16.5 + specifier: 6.4.2 + version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) '@testing-library/react': - specifier: 14.1.2 - version: 14.1.2(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.3) + specifier: 14.5.2 + version: 14.5.2(@testing-library/dom@9.3.4) '@types/react': specifier: ^18.2.39 version: 18.2.39 '@vitejs/plugin-react': - specifier: 4.0.3 - version: 4.0.3(vite@4.4.12) + specifier: 4.2.1 + version: 4.2.1(vite@5.0.12) '@vitest/coverage-v8': - specifier: ^0.33.0 - version: 0.33.0(vitest@0.33.0) + specifier: 1.2.2 + version: 1.2.2(vitest@1.2.2) cpy: - specifier: ^10.1.0 - version: 10.1.0 + specifier: 11.0.0 + version: 11.0.0 cpy-cli: specifier: ^5.0.0 version: 5.0.0 @@ -289,11 +280,11 @@ importers: specifier: ^7.0.3 version: 7.0.3 jsdom: - specifier: 22.1.0 - version: 22.1.0 + specifier: 24.0.0 + version: 24.0.0 msw: - specifier: 2.0.0 - version: 2.0.0(typescript@5.3.3) + specifier: 2.1.6 + version: 2.1.6(typescript@5.3.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -307,14 +298,14 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^4.4.12 - version: 4.4.12(@types/node@20.10.1) + specifier: 5.0.12 + version: 5.0.12(@types/node@20.11.16) vite-plugin-dts: - specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@4.4.12) + specifier: 3.7.2 + version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: ^0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 1.2.2 + version: 1.2.2(jsdom@24.0.0) packages: @@ -323,43 +314,44 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools@4.2.0: - resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 dev: true - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 + '@babel/highlight': 7.23.4 + chalk: 2.4.2 - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 @@ -368,69 +360,66 @@ packages: - supports-color dev: true - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.10 + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.3 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -442,122 +431,116 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - - /@babel/runtime@7.23.5: - resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -571,223 +554,203 @@ packages: cookie: 0.5.0 dev: true - /@bundled-es-modules/js-levenshtein@2.0.1: - resolution: {integrity: sha512-DERMS3yfbAljKsQc0U2wcqGKUWpdFjwqWuoMugEJlqBnKO180/n+4SR/J8MRDt1AN48X1ovgoD9KrdVXcaa3Rg==} - dependencies: - js-levenshtein: 1.1.6 - dev: true - /@bundled-es-modules/statuses@1.0.1: resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} dependencies: statuses: 2.0.1 dev: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.54.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -796,15 +759,15 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -813,16 +776,16 @@ packages: - supports-color dev: true - /@eslint/js@8.54.0: - resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -834,8 +797,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@isaacs/cliui@8.0.2: @@ -855,12 +818,28 @@ packages: engines: {node: '>=8'} dev: true + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 - dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.11.16 + '@types/yargs': 17.0.32 + chalk: 4.1.2 /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -868,11 +847,11 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 dev: true - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true @@ -881,19 +860,14 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@microsoft/api-extractor-model@7.28.3: @@ -926,6 +900,26 @@ packages: - '@types/node' dev: true + /@microsoft/api-extractor@7.39.0: + resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.3 + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.62.0 + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.17.1 + colors: 1.2.5 + lodash: 4.17.21 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.3.3 + transitivePeerDependencies: + - '@types/node' + dev: true + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: @@ -939,29 +933,29 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@mswjs/cookies@1.0.0: - resolution: {integrity: sha512-TdXoBdI+h/EDTsVLCX/34s4+9U0sWi92qFnIGUEikpMCSKLhBeujovyYVSoORNbYgsBH5ga7/tfxyWcEZAxiYA==} - engines: {node: '>=14'} + /@mswjs/cookies@1.1.0: + resolution: {integrity: sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==} + engines: {node: '>=18'} dev: true - /@mswjs/interceptors@0.25.7: - resolution: {integrity: sha512-U7iFYs/qU/5jfz1VDpoYz3xqX9nzhsBXw7q923dv6GiGTy+m2ZLhD33L80R/shHOW/YWjeH6k16GbIHGw+bAng==} + /@mswjs/interceptors@0.25.15: + resolution: {integrity: sha512-s4jdyxmq1eeftfDXJ7MUiK/jlvYaU8Sr75+42hHCVBrYez0k51RHbMitKIKdmsF92Q6gwhp8Sm1MmvdA9llpcg==} engines: {node: '>=18'} dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 '@open-draft/until': 2.1.0 is-node-process: 1.2.0 - outvariant: 1.4.0 + outvariant: 1.4.2 strict-event-emitter: 0.5.1 dev: true - /@next/env@14.0.4: - resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} dev: false - /@next/swc-darwin-arm64@14.0.4: - resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -969,8 +963,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.4: - resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -978,8 +972,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.4: - resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -987,8 +981,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.4: - resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -996,8 +990,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.4: - resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1005,8 +999,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.4: - resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1014,8 +1008,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.4: - resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1023,8 +1017,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.4: - resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1032,8 +1026,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.4: - resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1059,7 +1053,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 dev: true /@open-draft/deferred-promise@2.2.0: @@ -1070,7 +1064,7 @@ packages: resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} dependencies: is-node-process: 1.2.0 - outvariant: 1.4.0 + outvariant: 1.4.2 dev: true /@open-draft/until@2.1.0: @@ -1084,16 +1078,9 @@ packages: dev: true optional: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 dev: true /@remix-run/router@1.14.1: @@ -1110,11 +1097,102 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 dev: true + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@rushstack/node-core-library@3.62.0: resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} peerDependencies: @@ -1150,7 +1228,6 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} @@ -1158,134 +1235,134 @@ packages: tslib: 2.6.2 dev: false - /@testing-library/dom@9.3.3: - resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/runtime': 7.23.5 - '@types/aria-query': 5.0.1 + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.9 + '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - /@testing-library/jest-dom@5.16.5: - resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} - engines: {node: '>=8', npm: '>=6', yarn: '>=1'} - dependencies: - '@adobe/css-tools': 4.2.0 - '@babel/runtime': 7.22.6 - '@types/testing-library__jest-dom': 5.14.9 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - lodash: 4.17.21 - redent: 3.0.0 - dev: true - - /@testing-library/jest-dom@5.17.0: - resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} - engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.2.2): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true dependencies: - '@adobe/css-tools': 4.2.0 - '@babel/runtime': 7.22.6 - '@types/testing-library__jest-dom': 5.14.9 + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.23.9 + '@types/jest': 29.5.12 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 + dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 + vitest: 1.2.2(jsdom@24.0.0) - /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.22.6 - '@testing-library/dom': 9.3.3 + '@babel/runtime': 7.23.9 + '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.3): - resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} - engines: {node: '>=10', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - dependencies: - '@babel/runtime': 7.22.6 - '@testing-library/dom': 9.3.3 - dev: false - - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.3): - resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.3 - dev: true - - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true + '@testing-library/dom': 9.3.4 /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true - /@types/aria-query@5.0.1: - resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@types/chai': 4.3.11 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 dev: true - /@types/chai-subset@1.3.5: - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@types/chai': 4.3.11 + '@babel/types': 7.23.9 dev: true - /@types/chai@4.3.11: - resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.23.9 dev: true - /@types/cookie@0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - /@types/jest@27.5.2: - resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 - /@types/js-levenshtein@1.1.1: - resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} - dev: true + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1295,19 +1372,10 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/node@20.10.1: - resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} + /@types/node@20.11.16: + resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} dependencies: undici-types: 5.26.5 - dev: true - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -1316,7 +1384,7 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.39 + '@types/react': 18.2.54 dev: true /@types/react@18.2.39: @@ -1327,6 +1395,14 @@ packages: csstype: 3.1.2 dev: true + /@types/react@18.2.54: + resolution: {integrity: sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true @@ -1335,17 +1411,23 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true - /@types/statuses@2.0.3: - resolution: {integrity: sha512-NwCYScf83RIwCyi5/9cXocrJB//xrqMh5PMw3mYTSFGaI3DuVjBLfO/PCk7QVAC3Da8b9NjxNmTO9Aj9T3rl/Q==} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + /@types/statuses@2.0.4: + resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} dev: true - /@types/testing-library__jest-dom@5.14.9: - resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: - '@types/jest': 27.5.2 + '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.3): - resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1356,25 +1438,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.54.0 + eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.3): - resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1383,12 +1465,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.54.0 + eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -1402,16 +1484,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.13.1: - resolution: {integrity: sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.3): - resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} + /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1420,11 +1502,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.54.0 - ts-api-utils: 1.0.3(typescript@5.3.3) + eslint: 8.56.0 + ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -1435,8 +1517,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.13.1: - resolution: {integrity: sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -1454,15 +1536,15 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.3): - resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1470,52 +1552,53 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.54.0 + eslint: 8.56.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.3): - resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) - eslint: 8.54.0 - semver: 7.5.4 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -1529,11 +1612,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.13.1: - resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1541,130 +1624,78 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-react@4.0.3(vite@4.4.12): - resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} + /@vitejs/plugin-react@4.2.1(vite@5.0.12): + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 + vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 4.4.12(@types/node@20.10.1) + vite: 5.0.12(@types/node@20.11.16) transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-c8@0.33.0(vitest@0.33.0): - resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==} - peerDependencies: - vitest: '>=0.30.0 <1' - dependencies: - '@ampproject/remapping': 2.2.1 - c8: 7.14.0 - magic-string: 0.30.2 - picocolors: 1.0.0 - std-env: 3.3.3 - vitest: 0.33.0(jsdom@22.1.0) - dev: true - - /@vitest/coverage-v8@0.33.0(vitest@0.33.0): - resolution: {integrity: sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==} + /@vitest/coverage-v8@1.2.2(vitest@1.2.2): + resolution: {integrity: sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==} peerDependencies: - vitest: '>=0.32.0 <1' + vitest: ^1.0.0 dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - istanbul-lib-coverage: 3.2.0 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - magic-string: 0.30.2 + magic-string: 0.30.7 + magicast: 0.3.3 picocolors: 1.0.0 - std-env: 3.3.3 + std-env: 3.7.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - vitest: 0.33.0(jsdom@22.1.0) + v8-to-istanbul: 9.2.0 + vitest: 1.2.2(jsdom@24.0.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.33.0: - resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} - dependencies: - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - chai: 4.3.10 - dev: true - - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} - dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - chai: 4.3.10 - dev: true - - /@vitest/runner@0.33.0: - resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} - dependencies: - '@vitest/utils': 0.33.0 - p-limit: 4.0.0 - pathe: 1.1.1 - dev: true - - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + /@vitest/expect@1.2.2: + resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 - pathe: 1.1.1 - dev: true + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 + chai: 4.4.1 - /@vitest/snapshot@0.33.0: - resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} + /@vitest/runner@1.2.2: + resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} dependencies: - magic-string: 0.30.5 - pathe: 1.1.1 - pretty-format: 29.7.0 - dev: true + '@vitest/utils': 1.2.2 + p-limit: 5.0.0 + pathe: 1.1.2 - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + /@vitest/snapshot@1.2.2: + resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} dependencies: - magic-string: 0.30.5 - pathe: 1.1.1 + magic-string: 0.30.7 + pathe: 1.1.2 pretty-format: 29.7.0 - dev: true - - /@vitest/spy@0.33.0: - resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} - dependencies: - tinyspy: 2.2.0 - dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + /@vitest/spy@1.2.2: + resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} dependencies: tinyspy: 2.2.0 - dev: true - - /@vitest/utils@0.33.0: - resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + /@vitest/utils@1.2.2: + resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} dependencies: diff-sequences: 29.6.3 + estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 - dev: true /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} @@ -1688,12 +1719,22 @@ packages: /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.22.7 + '@babel/parser': 7.23.9 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: true + /@vue/compiler-core@3.4.15: + resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} + dependencies: + '@babel/parser': 7.23.9 + '@vue/shared': 3.4.15 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + /@vue/compiler-dom@3.3.4: resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} dependencies: @@ -1701,6 +1742,13 @@ packages: '@vue/shared': 3.3.4 dev: true + /@vue/compiler-dom@3.4.15: + resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} + dependencies: + '@vue/compiler-core': 3.4.15 + '@vue/shared': 3.4.15 + dev: true + /@vue/language-core@1.8.25(typescript@5.3.3): resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} peerDependencies: @@ -1721,52 +1769,58 @@ packages: vue-template-compiler: 2.7.14 dev: true + /@vue/language-core@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.15 + '@vue/shared': 3.4.15 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.3.3 + vue-template-compiler: 2.7.16 + dev: true + /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + /@vue/shared@3.4.15: + resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 - dev: true - - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} + acorn: 8.11.3 dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} @@ -1850,11 +1904,12 @@ packages: dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 /array-includes@3.1.7: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} @@ -1863,7 +1918,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 is-string: 1.0.7 dev: true @@ -1872,6 +1927,17 @@ packages: engines: {node: '>=8'} dev: true + /array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -1880,7 +1946,7 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 dev: true /array.prototype.flat@1.3.2: @@ -1903,34 +1969,30 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 + array-buffer-byte-length: 1.0.1 call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.3 + is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 dev: true - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} @@ -1938,7 +2000,6 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -1952,10 +2013,9 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} /axe-core@4.7.0: @@ -1976,11 +2036,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: true - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -2004,13 +2059,6 @@ packages: popper.js: 1.16.1 dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2029,17 +2077,16 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001565 - electron-to-chromium: 1.4.477 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) + caniuse-lite: 1.0.30001584 + electron-to-chromium: 1.4.657 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) dev: true /buffer@5.7.1: @@ -2057,14 +2104,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 - dev: true - - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 + semver: 7.6.0 dev: true /busboy@1.6.0: @@ -2074,75 +2114,27 @@ packages: streamsearch: 1.1.0 dev: false - /c8@7.14.0: - resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} - engines: {node: '>=10.12.0'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.6 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: true /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + get-intrinsic: 1.2.3 + set-function-length: 1.2.0 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-keys@8.0.2: - resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} - engines: {node: '>=14.16'} - dependencies: - camelcase: 7.0.1 - map-obj: 4.3.0 - quick-lru: 6.1.1 - type-fest: 2.19.0 - dev: true - - /camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: true - - /caniuse-lite@1.0.30001565: - resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} - - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true + /caniuse-lite@1.0.30001584: + resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -2152,7 +2144,6 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 - dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2184,7 +2175,6 @@ packages: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 - dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -2201,6 +2191,10 @@ packages: fsevents: 2.3.3 dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} @@ -2215,8 +2209,8 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: true @@ -2278,7 +2272,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: true /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} @@ -2300,8 +2293,8 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true /cookie@0.5.0: @@ -2309,6 +2302,14 @@ packages: engines: {node: '>= 0.6'} dev: true + /copy-file@11.0.0: + resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} + engines: {node: '>=18'} + dependencies: + graceful-fs: 4.2.11 + p-event: 6.0.0 + dev: true + /copyfiles@2.4.1: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true @@ -2341,7 +2342,7 @@ packages: hasBin: true dependencies: cpy: 10.1.0 - meow: 12.0.1 + meow: 12.1.1 dev: true /cpy@10.1.0: @@ -2358,6 +2359,18 @@ packages: p-map: 6.0.0 dev: true + /cpy@11.0.0: + resolution: {integrity: sha512-vA71mFQyIxCrqvP/9JBLCj05UJV/+WpvAxZK2/EiK5ndD090cjuChfJ3ExVVuZXHoTJ/3HLedOPYDWyxnNHjrg==} + engines: {node: '>=18'} + dependencies: + copy-file: 11.0.0 + globby: 13.2.2 + junk: 4.0.1 + micromatch: 4.0.5 + p-filter: 3.0.0 + p-map: 6.0.0 + dev: true + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -2373,17 +2386,15 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - /cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} + /cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 - dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -2393,14 +2404,12 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - dev: true + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -2427,76 +2436,40 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true - - /decamelize-keys@2.0.1: - resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} - engines: {node: '>=14.16'} - dependencies: - decamelize: 6.0.0 - map-obj: 4.3.0 - quick-lru: 6.1.1 - type-fest: 3.13.1 - dev: true - - /decamelize@6.0.0: - resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 - dev: true /deep-equal@2.2.2: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} dependencies: - array-buffer-byte-length: 1.0.0 + array-buffer-byte-length: 1.0.1 call-bind: 1.0.5 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 isarray: 2.0.5 object-is: 1.1.5 object-keys: 1.1.1 - object.assign: 4.1.4 + object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 + which-typed-array: 1.1.14 + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /defaults@1.0.4: @@ -2509,15 +2482,10 @@ packages: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: true - /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -2529,20 +2497,14 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: true /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - /diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -2568,19 +2530,15 @@ packages: /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - dependencies: - webidl-conversions: 7.0.0 - dev: true + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.477: - resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} + /electron-to-chromium@1.4.657: + resolution: {integrity: sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==} dev: true /emoji-regex@8.0.0: @@ -2594,26 +2552,19 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 call-bind: 1.0.5 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -2622,20 +2573,20 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 + object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.2 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 @@ -2644,14 +2595,22 @@ packages: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 + dev: true + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -2669,22 +2628,22 @@ packages: es-abstract: 1.22.3 es-set-tostringtag: 2.0.2 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 globalthis: 1.0.3 has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.6 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.0 dev: true /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 + get-intrinsic: 1.2.3 + has-tostringtag: 1.0.2 hasown: 2.0.0 dev: true @@ -2703,38 +2662,38 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: true @@ -2742,6 +2701,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2752,27 +2715,27 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@8.54.0): + /eslint-compat-utils@0.1.2(eslint@8.56.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.54.0 + eslint: 8.56.0 dev: true - /eslint-config-prettier@8.10.0(eslint@8.54.0): - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + /eslint-config-prettier@9.1.0(eslint@8.56.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.54.0 + eslint: 8.56.0 dev: true - /eslint-define-config@1.24.1: - resolution: {integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==} - engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} + /eslint-define-config@2.1.0: + resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} dev: true /eslint-import-resolver-node@0.3.9: @@ -2785,7 +2748,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2806,28 +2769,28 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.54.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.4.0(eslint@8.54.0): - resolution: {integrity: sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw==} + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.54.0 - eslint-compat-utils: 0.1.2(eslint@8.54.0) + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2836,38 +2799,38 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.54.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.7 - object.groupby: 1.0.1 + object.groupby: 1.0.2 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.54.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -2877,7 +2840,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.15 - eslint: 8.54.0 + eslint: 8.56.0 hasown: 2.0.0 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -2886,23 +2849,24 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-n@16.3.1(eslint@8.54.0): - resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} + /eslint-plugin-n@16.6.2(eslint@8.56.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) builtins: 5.0.1 - eslint: 8.54.0 - eslint-plugin-es-x: 7.4.0(eslint@8.54.0) + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) get-tsconfig: 4.7.2 - ignore: 5.3.0 + globals: 13.24.0 + ignore: 5.3.1 is-builtin-module: 3.2.1 is-core-module: 2.13.1 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.5.4 + semver: 7.6.0 dev: true /eslint-plugin-no-only-tests@3.1.0: @@ -2910,7 +2874,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@8.10.0)(eslint@8.54.0)(prettier@3.1.0): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2924,23 +2888,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.54.0 - eslint-config-prettier: 8.10.0(eslint@8.54.0) - prettier: 3.1.0 + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + prettier: 3.2.5 prettier-linter-helpers: 1.0.0 - synckit: 0.8.5 + synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.54.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.54.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.54.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -2948,10 +2912,10 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 8.54.0 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -2965,38 +2929,38 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-regexp@2.1.2(eslint@8.54.0): - resolution: {integrity: sha512-nnhNqHblaD8YTJiEHfyVRhiw8sm0eFQ9h+ee3rMqJhf2R9sJWbSXkjrLxIeCNZSNqitUOdaYFfrPVyvS9i72AA==} + /eslint-plugin-regexp@2.2.0(eslint@8.56.0): + resolution: {integrity: sha512-0kwpiWiLRVBkVr3oIRQLl196sXP/NF6DQFefv9jtR4ZOgQR+6WID2pIZ0I+wIt54qgBPwBB7Gm2a+ueh8/WsFQ==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 8.54.0 + eslint: 8.56.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.54.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.56.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.54.0 + eslint: 8.56.0 dev: true - /eslint-plugin-testing-library@5.11.1(eslint@8.54.0)(typescript@5.3.3): - resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + /eslint-plugin-testing-library@6.2.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@5.3.3) - eslint: 8.54.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript @@ -3023,16 +2987,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.54.0: - resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.54.0 - '@humanwhocodes/config-array': 0.11.13 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -3051,9 +3015,9 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.23.0 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -3074,8 +3038,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -3107,40 +3071,39 @@ packages: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 + get-stream: 8.0.1 + human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.2.0 onetime: 6.0.0 - signal-exit: 3.0.7 + signal-exit: 4.1.0 strip-final-newline: 3.0.0 - dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -3178,8 +3141,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 dev: true @@ -3203,7 +3166,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -3213,14 +3175,6 @@ packages: path-exists: 4.0.0 dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true - /flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3239,14 +3193,6 @@ packages: dependencies: is-callable: 1.2.7 - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -3262,15 +3208,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - - /formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -3290,7 +3227,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind@1.1.2: @@ -3321,27 +3257,27 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.3: + resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==} + engines: {node: '>= 0.4'} 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-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 dev: true /get-tsconfig@4.7.2: @@ -3364,19 +3300,15 @@ packages: is-glob: 4.0.3 dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.2 + jackspeak: 2.3.6 minimatch: 9.0.3 - minipass: 7.0.2 + minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -3396,8 +3328,8 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -3417,7 +3349,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -3428,7 +3360,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -3436,7 +3368,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -3450,11 +3382,6 @@ packages: engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -3469,7 +3396,7 @@ packages: /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -3479,8 +3406,8 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -3500,61 +3427,37 @@ packages: resolution: {integrity: sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==} dev: true - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - - /hosted-git-info@6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - lru-cache: 7.18.3 - dev: true - - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} dependencies: - whatwg-encoding: 2.0.0 - dev: true + whatwg-encoding: 3.1.1 /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} dependencies: - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -3568,14 +3471,13 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -3617,8 +3519,8 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -3635,14 +3537,14 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 6.2.0 dev: true /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 hasown: 2.0.0 side-channel: 1.0.4 @@ -3651,24 +3553,20 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + get-intrinsic: 1.2.3 /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -3688,7 +3586,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} @@ -3711,19 +3609,7 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true + has-tostringtag: 1.0.2 /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -3745,7 +3631,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -3755,14 +3641,6 @@ packages: is-extglob: 2.1.1 dev: true - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -3784,33 +3662,26 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true - /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -3820,21 +3691,15 @@ packages: dependencies: call-bind: 1.0.5 - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} @@ -3842,11 +3707,12 @@ packages: dependencies: has-symbols: 1.0.3 - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 + dev: true /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -3866,14 +3732,7 @@ packages: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true + get-intrinsic: 1.2.3 /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -3888,10 +3747,9 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} dev: true @@ -3899,7 +3757,7 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} dependencies: - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 dev: true @@ -3909,7 +3767,7 @@ packages: engines: {node: '>=10'} dependencies: debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -3927,14 +3785,14 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 + reflect.getprototypeof: 1.0.5 set-function-name: 2.0.1 dev: true - /jackspeak@2.2.2: - resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -3942,27 +3800,52 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jest-diff@27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-get-type@27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /jest-matcher-utils@27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.16 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -3972,11 +3855,6 @@ packages: resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} dev: true - /js-levenshtein@1.1.6: - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} - engines: {node: '>=0.10.0'} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3992,24 +3870,22 @@ packages: engines: {node: '>=12.0.0'} dev: true - /jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} + /jsdom@24.0.0: + resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + engines: {node: '>=18'} peerDependencies: - canvas: ^2.5.0 + canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true dependencies: - abab: 2.0.6 - cssstyle: 3.0.0 - data-urls: 4.0.0 + cssstyle: 4.0.1 + data-urls: 5.0.0 decimal.js: 10.4.3 - domexception: 4.0.0 form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.7 parse5: 7.1.2 @@ -4017,18 +3893,17 @@ packages: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - ws: 8.13.0 - xml-name-validator: 4.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.16.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -4040,10 +3915,6 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -4065,9 +3936,8 @@ packages: hasBin: true dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -4081,7 +3951,7 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 + object.assign: 4.1.5 object.values: 1.1.7 dev: true @@ -4096,11 +3966,6 @@ packages: json-buffer: 3.0.1 dev: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true @@ -4124,14 +3989,12 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} - dev: true + dependencies: + mlly: 1.5.0 + pkg-types: 1.0.3 /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -4140,13 +4003,6 @@ packages: p-locate: 5.0.0 dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true @@ -4180,10 +4036,9 @@ packages: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 - dev: true - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} dev: true @@ -4200,62 +4055,38 @@ packages: yallist: 4.0.0 dev: true - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - /magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + source-map-js: 1.0.2 dev: true /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 - dev: true - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + semver: 7.6.0 dev: true - /meow@12.0.1: - resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==} + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 8.0.2 - decamelize: 6.0.0 - decamelize-keys: 2.0.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 5.0.0 - read-pkg-up: 9.1.0 - redent: 4.0.0 - trim-newlines: 5.0.0 - type-fest: 3.13.1 - yargs-parser: 21.1.1 dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -4268,19 +4099,16 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -4290,7 +4118,6 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - dev: true /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -4309,21 +4136,12 @@ packages: brace-expansion: 2.0.1 dev: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.2: - resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -4333,60 +4151,51 @@ packages: hasBin: true dev: true - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: - acorn: 8.11.2 - pathe: 1.1.1 + acorn: 8.11.3 + pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 - dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@2.0.0(typescript@5.3.3): - resolution: {integrity: sha512-lw9UHuzNCWoODHaThGeLLIIuzEBUQkj3fJXQnChHifMKbB2UmF2msHd4d/lnyqjAyD0XWoibdviW9wlstFPpkA==} + /msw@2.1.6(typescript@5.3.3): + resolution: {integrity: sha512-62NX1pdMa1C17U/6+SQjQFxwHx0bcWHzZoDN2mK97FvEttTkX9CyJqx3OcYYBpNykDx+segweaO4yxapjifj4g==} engines: {node: '>=18'} hasBin: true requiresBuild: true peerDependencies: - typescript: '>= 4.7.x <= 5.2.x' + typescript: '>= 4.7.x <= 5.3.x' peerDependenciesMeta: typescript: optional: true dependencies: '@bundled-es-modules/cookie': 2.0.0 - '@bundled-es-modules/js-levenshtein': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 - '@mswjs/cookies': 1.0.0 - '@mswjs/interceptors': 0.25.7 + '@mswjs/cookies': 1.1.0 + '@mswjs/interceptors': 0.25.15 '@open-draft/until': 2.1.0 - '@types/cookie': 0.4.1 - '@types/js-levenshtein': 1.1.1 - '@types/statuses': 2.0.3 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.4 chalk: 4.1.2 chokidar: 3.5.3 - formdata-node: 4.4.1 graphql: 16.8.1 headers-polyfill: 4.0.2 - inquirer: 8.2.5 + inquirer: 8.2.6 is-node-process: 1.2.0 - js-levenshtein: 1.1.6 - node-fetch: 2.6.12 - outvariant: 1.4.0 + outvariant: 1.4.2 path-to-regexp: 6.2.1 strict-event-emitter: 0.5.1 - type-fest: 2.19.0 + type-fest: 4.10.2 typescript: 5.3.3 yargs: 17.7.2 - transitivePeerDependencies: - - encoding dev: true /muggle-string@0.3.1: @@ -4410,8 +4219,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} + /next@14.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -4425,50 +4234,32 @@ packages: sass: optional: true dependencies: - '@next/env': 14.0.4 + '@next/env': 14.1.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001565 + caniuse-lite: 1.0.30001584 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) - watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.4 - '@next/swc-darwin-x64': 14.0.4 - '@next/swc-linux-arm64-gnu': 14.0.4 - '@next/swc-linux-arm64-musl': 14.0.4 - '@next/swc-linux-x64-gnu': 14.0.4 - '@next/swc-linux-x64-musl': 14.0.4 - '@next/swc-win32-arm64-msvc': 14.0.4 - '@next/swc-win32-ia32-msvc': 14.0.4 - '@next/swc-win32-x64-msvc': 14.0.4 + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - - /node-fetch@2.6.12: - resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true /noms@0.0.0: @@ -4478,48 +4269,19 @@ packages: readable-stream: 1.0.34 dev: true - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - dev: true /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -4540,8 +4302,8 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -4567,13 +4329,14 @@ packages: es-abstract: 1.22.3 dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + /object.groupby@1.0.2: + resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} dependencies: + array.prototype.filter: 1.0.3 call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-errors: 1.3.0 dev: true /object.hasown@1.1.3: @@ -4610,17 +4373,6 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -4641,7 +4393,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -4654,8 +4406,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /outvariant@1.4.0: - resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} + /outvariant@1.4.2: + resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} dev: true /p-event@5.0.1: @@ -4665,6 +4417,13 @@ packages: p-timeout: 5.1.0 dev: true + /p-event@6.0.0: + resolution: {integrity: sha512-Xbfxd0CfZmHLGKXH32k1JKjQYX6Rkv0UtQdaFJ8OyNcf+c0oWCeXHc1C4CX/IESZLmcvfPa5aFIO/vCr5gqtag==} + engines: {node: '>=16.17'} + dependencies: + p-timeout: 6.1.2 + dev: true + /p-filter@3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4679,12 +4438,11 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.0.0 - dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -4693,13 +4451,6 @@ packages: p-limit: 3.1.0 dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} @@ -4717,6 +4468,11 @@ packages: engines: {node: '>=12'} dev: true + /p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4724,21 +4480,10 @@ packages: callsites: 3.1.0 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.22.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 - dev: true /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -4749,11 +4494,6 @@ packages: engines: {node: '>=8'} dev: true - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -4762,12 +4502,10 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -4777,8 +4515,8 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.0.0 - minipass: 7.0.2 + lru-cache: 10.2.0 + minipass: 7.0.4 dev: true /path-to-regexp@6.2.1: @@ -4790,13 +4528,11 @@ packages: engines: {node: '>=8'} dev: true - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -4804,15 +4540,13 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 - dev: true + jsonc-parser: 3.2.1 + mlly: 1.5.0 + pathe: 1.1.2 /popper.js@1.16.1: resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} @@ -4826,6 +4560,15 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: false + + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -4839,8 +4582,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -4860,7 +4603,6 @@ packages: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -4876,26 +4618,18 @@ packages: /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - dev: true /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru@6.1.1: - resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} - engines: {node: '>=12'} - dev: true - /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -4914,7 +4648,6 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} @@ -4950,25 +4683,6 @@ packages: dependencies: loose-envify: 1.4.0 - /read-pkg-up@9.1.0: - resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - read-pkg: 7.1.0 - type-fest: 2.19.0 - dev: true - - /read-pkg@7.1.0: - resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} - engines: {node: '>=12.20'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 2.19.0 - dev: true - /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: @@ -5013,14 +4727,6 @@ packages: indent-string: 4.0.0 strip-indent: 3.0.0 - /redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - dev: true - /refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -5028,23 +4734,21 @@ packages: '@eslint-community/regexpp': 4.10.0 dev: true - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + /reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.3 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} /regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} @@ -5069,7 +4773,6 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -5130,27 +4833,41 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.3 + glob: 10.3.10 dev: true - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.5 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 fsevents: 2.3.3 - dev: true /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true - - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -5169,12 +4886,12 @@ packages: tslib: 2.6.2 dev: true - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -5187,24 +4904,23 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.2: + resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 is-regex: 1.1.4 dev: true /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 - dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -5233,12 +4949,21 @@ packages: lru-cache: 6.0.0 dev: true - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 - get-intrinsic: 1.2.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 @@ -5255,23 +4980,20 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 object-inspect: 1.13.1 /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -5280,12 +5002,10 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} @@ -5301,48 +5021,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true - /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: true - /std-env@3.3.3: - resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} - dev: true - - /std-env@3.5.0: - resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} - dev: true + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} @@ -5388,7 +5086,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.3 has-symbols: 1.0.3 internal-slot: 1.0.6 regexp.prototype.flags: 1.5.1 @@ -5456,15 +5154,9 @@ packages: engines: {node: '>=4'} dev: true - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -5472,29 +5164,15 @@ packages: dependencies: min-indent: 1.0.1 - /strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} - dependencies: - acorn: 8.11.2 - dev: true - /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.11.2 - dev: true + acorn: 8.11.3 /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} @@ -5532,13 +5210,12 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.4.2 + '@pkgr/core': 0.1.1 tslib: 2.6.2 dev: true @@ -5566,33 +5243,16 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} - dev: true - - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true - - /tinypool@0.6.0: - resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} - engines: {node: '>=14.0.0'} - dev: true + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} - dev: true /tinyspy@2.2.0: resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} - dev: true - - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -5611,7 +5271,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} @@ -5621,35 +5280,24 @@ packages: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - /tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} dependencies: punycode: 2.3.1 - dev: true - /trim-newlines@5.0.0: - resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==} - engines: {node: '>=14.16'} - dev: true - - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.2.0(typescript@5.3.3): + resolution: {integrity: sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==} + engines: {node: '>=18'} peerDependencies: typescript: '>=4.2.0' dependencies: typescript: 5.3.3 dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -5674,12 +5322,12 @@ packages: typescript: 5.3.3 dev: true - /tsx@4.6.1: - resolution: {integrity: sha512-OQ4TAPHXAPUo/NZAmmIybl0o8LFOTlycQxFepLBAp6EV87U88fOKYGCQI2viGAEOVU9UW/cgQcxcOMnfEKVY3Q==} + /tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.18.20 + esbuild: 0.19.12 get-tsconfig: 4.7.2 optionalDependencies: fsevents: 2.3.3 @@ -5695,7 +5343,6 @@ packages: /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: true /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -5707,14 +5354,9 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: true - - /type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} + engines: {node: '>=16'} dev: true /typed-array-buffer@1.0.0: @@ -5722,8 +5364,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + get-intrinsic: 1.2.3 + is-typed-array: 1.1.13 dev: true /typed-array-byte-length@1.0.0: @@ -5733,18 +5375,18 @@ packages: call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.6 call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-length@1.0.4: @@ -5752,7 +5394,7 @@ packages: dependencies: call-bind: 1.0.5 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typescript@5.0.4: @@ -5768,7 +5410,6 @@ packages: /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -5781,7 +5422,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -5791,21 +5431,20 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.13(browserslist@4.22.3): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 + browserslist: 4.22.3 + escalade: 3.1.2 picocolors: 1.0.0 dev: true @@ -5820,26 +5459,18 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 + '@jridgewell/trace-mapping': 0.3.22 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 dev: true /validator@13.9.0: @@ -5847,39 +5478,16 @@ packages: engines: {node: '>= 0.10'} dev: true - /vite-node@0.33.0(@types/node@20.10.1): - resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 4.5.0(@types/node@20.10.1) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@0.34.6(@types/node@20.10.1): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} + /vite-node@1.2.2: + resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 - vite: 4.5.0(@types/node@20.10.1) + vite: 5.0.12(@types/node@20.11.16) transitivePeerDependencies: - '@types/node' - less @@ -5889,9 +5497,8 @@ packages: - sugarss - supports-color - terser - dev: true - /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@4.4.12): + /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@5.0.12): resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5907,7 +5514,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.3.3 - vite: 4.4.12(@types/node@20.10.1) + vite: 5.0.12(@types/node@20.11.16) vue-tsc: 1.8.25(typescript@5.3.3) transitivePeerDependencies: - '@types/node' @@ -5915,48 +5522,36 @@ packages: - supports-color dev: true - /vite@4.4.12(@types/node@20.10.1): - resolution: {integrity: sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==} + /vite-plugin-dts@3.7.2(typescript@5.3.3)(vite@5.0.12): + resolution: {integrity: sha512-kg//1nDA01b8rufJf4TsvYN8LMkdwv0oBYpiQi6nRwpHyue+wTlhrBiqgipdFpMnW1oOYv6ywmzE5B0vg6vSEA==} engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 + typescript: '*' + vite: '*' peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: + vite: optional: true dependencies: - '@types/node': 20.10.1 - esbuild: 0.18.20 - postcss: 8.4.31 - rollup: 3.29.4 - optionalDependencies: - fsevents: 2.3.3 + '@microsoft/api-extractor': 7.39.0 + '@rollup/pluginutils': 5.1.0 + '@vue/language-core': 1.8.27(typescript@5.3.3) + debug: 4.3.4 + kolorist: 1.8.0 + typescript: 5.3.3 + vite: 5.0.12(@types/node@20.11.16) + vue-tsc: 1.8.27(typescript@5.3.3) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color dev: true - /vite@4.5.0(@types/node@20.10.1): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@5.0.12(@types/node@20.11.16): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -5979,95 +5574,28 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.1 - esbuild: 0.18.20 - postcss: 8.4.31 - rollup: 3.29.4 + '@types/node': 20.11.16 + esbuild: 0.19.12 + postcss: 8.4.33 + rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 - dev: true - /vitest@0.33.0(jsdom@22.1.0): - resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} - engines: {node: '>=v14.18.0'} + /vitest@1.2.2(jsdom@24.0.0): + resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 20.10.1 - '@vitest/expect': 0.33.0 - '@vitest/runner': 0.33.0 - '@vitest/snapshot': 0.33.0 - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - acorn: 8.10.0 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - jsdom: 22.1.0 - local-pkg: 0.4.3 - magic-string: 0.30.2 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.3.3 - strip-literal: 1.0.1 - tinybench: 2.5.0 - tinypool: 0.6.0 - vite: 4.5.0(@types/node@20.10.1) - vite-node: 0.33.0(@types/node@20.10.1) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': + '@types/node': optional: true '@vitest/browser': optional: true @@ -6077,36 +5605,28 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true dependencies: - '@types/chai': 4.3.11 - '@types/chai-subset': 1.3.5 - '@types/node': 20.10.1 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.11.2 - acorn-walk: 8.3.0 + '@vitest/expect': 1.2.2 + '@vitest/runner': 1.2.2 + '@vitest/snapshot': 1.2.2 + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 + acorn-walk: 8.3.2 cac: 6.7.14 - chai: 4.3.10 + chai: 4.4.1 debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.5 - pathe: 1.1.1 + execa: 8.0.1 + jsdom: 24.0.0 + local-pkg: 0.5.0 + magic-string: 0.30.7 + pathe: 1.1.2 picocolors: 1.0.0 - std-env: 3.5.0 + std-env: 3.7.0 strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.7.0 - vite: 4.5.0(@types/node@20.10.1) - vite-node: 0.34.6(@types/node@20.10.1) + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.0.12(@types/node@20.11.16) + vite-node: 1.2.2 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6116,7 +5636,6 @@ packages: - sugarss - supports-color - terser - dev: true /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} @@ -6125,6 +5644,13 @@ packages: he: 1.2.0 dev: true + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + /vue-tsc@1.8.25(typescript@5.3.3): resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} hasBin: true @@ -6133,24 +5659,27 @@ packages: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.25(typescript@5.3.3) - semver: 7.5.4 + semver: 7.6.0 typescript: 5.3.3 dev: true - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + /vue-tsc@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' dependencies: - xml-name-validator: 4.0.0 + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.3.3) + semver: 7.6.0 + typescript: 5.3.3 dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: false + xml-name-validator: 5.0.0 /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -6158,50 +5687,30 @@ packages: defaults: 1.0.4 dev: true - /web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - dev: true - - /web-vitals@3.4.0: - resolution: {integrity: sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==} + /web-vitals@3.5.2: + resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} dev: false - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - dev: true - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - dev: true + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} - /whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} dependencies: - tr46: 4.1.1 + tr46: 5.0.0 webidl-conversions: 7.0.0 - dev: true - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6217,7 +5726,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -6227,7 +5736,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true /which-collection@1.0.1: @@ -6238,15 +5747,15 @@ packages: is-weakmap: 2.0.1 is-weakset: 2.0.2 - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.6 call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -6254,7 +5763,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} @@ -6263,6 +5771,14 @@ packages: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 dev: true /wrap-ansi@7.0.0: @@ -6287,8 +5803,8 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -6298,16 +5814,13 @@ packages: optional: true utf-8-validate: optional: true - dev: true - /xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - dev: true + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -6342,7 +5855,7 @@ packages: engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -6355,7 +5868,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -6371,7 +5884,6 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true /z-schema@5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} From 8bc9316cf853fb9e270909b05298a45556a23706 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 9 Feb 2024 05:56:11 +0000 Subject: [PATCH 176/565] [skip ci] Update to version 7.15.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index f30456754..a8e0a57cf 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.15.4", + "version": "7.15.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7796b3fe0..af4af448b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.15.4'; +export default '7.15.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 23907a3bb..a5144d537 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.15.4", + "version": "7.15.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7796b3fe0..af4af448b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.15.4'; +export default '7.15.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 393653747..237b7b28a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.15.4", + "version": "7.15.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From d5f1c9e4179fd3fc999bc5bc1f791a9a7810a187 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 9 Feb 2024 05:56:12 +0000 Subject: [PATCH 177/565] [skip ci] Generate changelog to version 7.15.5 --- CHANGELOG.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df151687c..fe7f48f69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.15.4 +## 7.15.5 + +- [d79af9a](https://github.com/AxaFrance/oidc-client/commit/d79af9aba023faf78e9816c4d681413618bdd843) - refactor(all): updates dev libraries (release) (#1284), 2024-02-09 by *Guillaume Chervet* + + +## v7.15.4 - [f2d74fb](https://github.com/AxaFrance/oidc-client/commit/f2d74fba6d2e48e6d478aa69d261fe9cceb69bfa) - fix(oidc): eternal lock when refresh_token invalid and multiple tabs (#1281) (release), 2024-02-03 by *Guillaume Chervet* @@ -315,10 +320,3 @@ - [a5d2e58](https://github.com/AxaFrance/oidc-client/commit/a5d2e5892cf456225618f55602c87c654cdad62c) - fix(oidc+serviceworker): add more log detail on token validation, 2023-08-07 by *Guillaume Chervet* -## v7.2.1 - -- [0e52c56](https://github.com/AxaFrance/oidc-client/commit/0e52c56e1d747aa17ee2bf3005893a8d67a03ab3) - fix(package.json): update new repository link (release), 2023-08-07 by *Guillaume Chervet* -- [3d0aaff](https://github.com/AxaFrance/oidc-client/commit/3d0aaff74fd1b14afe2aa3ec2b8b3c028dd3fe75) - fix(oidc): add more detail on state error, 2023-08-04 by *Guillaume Chervet* -- [faa0da2](https://github.com/AxaFrance/oidc-client/commit/faa0da2235239a0b12e82a070b3f6e2c30572bfa) - fix(readme): some path was broken, 2023-08-04 by *Guillaume Chervet* - - From 6b9b524c54a18dca9cc5bab34f0d058716e9d116 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 10 Feb 2024 15:28:08 +0100 Subject: [PATCH 178/565] feat(react): expose dpop method generation (#1291) (release) --- packages/react-oidc/src/ReactOidc.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 005e44710..805e183a1 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,5 +1,6 @@ import { StringMap, OidcClient } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; +import {Tokens} from "@axa-fr/oidc-client/dist/parseTokens"; const defaultConfigurationName = 'default'; @@ -72,6 +73,7 @@ const initTokens = (configurationName: string) => { return { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload, + generateDemonstrationOfProofOfPossessionAsync: oidc.configuration.demonstrating_proof_of_possession ? (url:string, method:string) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method) : null, }; } return accessTokenInitialState; @@ -80,6 +82,11 @@ const initTokens = (configurationName: string) => { export type OidcAccessToken = { accessToken?: any; accessTokenPayload?: any; + generateDemonstrationOfProofOfPossessionAsync?: any; +} + +function getGenerateDemonstrationOfProofOfPossessionAsync(oidc: OidcClient, tokens: Tokens) { + return oidc.configuration.demonstrating_proof_of_possession ? (url: string, method: string) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method) : null; } export const useOidcAccessToken = (configurationName = defaultConfigurationName) => { @@ -103,7 +110,11 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) name === OidcClient.eventNames.syncTokensAsync_error) { if (isMounted) { const tokens = oidc.tokens; - setAccessToken(tokens != null ? { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload } : accessTokenInitialState); + setAccessToken(tokens != null ? { + accessToken: tokens.accessToken, + accessTokenPayload: tokens.accessTokenPayload , + generateDemonstrationOfProofOfPossessionAsync: getGenerateDemonstrationOfProofOfPossessionAsync(oidc, tokens), + } : accessTokenInitialState); } } }); From 124d021c50c9a504ab0c88cfe76b0b03725b7b0a Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 10 Feb 2024 14:30:44 +0000 Subject: [PATCH 179/565] [skip ci] Update to version 7.16.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a8e0a57cf..49833a4d2 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.15.5", + "version": "7.16.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index af4af448b..7dfa93ae9 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.15.5'; +export default '7.16.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a5144d537..955e3299f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.15.5", + "version": "7.16.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index af4af448b..7dfa93ae9 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.15.5'; +export default '7.16.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 237b7b28a..57aa60f24 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.15.5", + "version": "7.16.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From fbb7111968a13bccce92645de1a3d06fef106a30 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 10 Feb 2024 14:30:45 +0000 Subject: [PATCH 180/565] [skip ci] Generate changelog to version 7.16.0 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe7f48f69..8b545ac13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.15.5 +## 7.16.0 + +- [6b9b524](https://github.com/AxaFrance/oidc-client/commit/6b9b524c54a18dca9cc5bab34f0d058716e9d116) - feat(react): expose dpop method generation (#1291) (release), 2024-02-10 by *Guillaume Chervet* + + +## v7.15.5 - [d79af9a](https://github.com/AxaFrance/oidc-client/commit/d79af9aba023faf78e9816c4d681413618bdd843) - refactor(all): updates dev libraries (release) (#1284), 2024-02-09 by *Guillaume Chervet* @@ -314,9 +319,3 @@ - [7ffcde4](https://github.com/AxaFrance/oidc-client/commit/7ffcde465f5f4cbba4b39e0da43dee34d4ec37d9) - doc(readme): update images urls, 2023-08-08 by *Guillaume Chervet* -## v7.2.2 - -- [e0cad22](https://github.com/AxaFrance/oidc-client/commit/e0cad22179fb1d9e641fbbf14b879ea2d2d78c3a) - fix(faq): update faq (release), 2023-08-07 by *Guillaume Chervet* -- [a5d2e58](https://github.com/AxaFrance/oidc-client/commit/a5d2e5892cf456225618f55602c87c654cdad62c) - fix(oidc+serviceworker): add more log detail on token validation, 2023-08-07 by *Guillaume Chervet* - - From a09e6fda64aa210fe7f63d70b6c64af559012640 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 10 Feb 2024 15:53:51 +0100 Subject: [PATCH 181/565] feat(oidc): logout add extras parameter to avoid the page reload (release) (#1290) * feat(oidc): logout add extras parameter to avoid the page reload after logout. * update demo * update --- examples/react-oidc-demo/src/Home.tsx | 1 + packages/oidc-client/README.md | 2 +- packages/oidc-client/src/logout.spec.ts | 17 +++++++++-------- packages/oidc-client/src/logout.ts | 17 ++++++++++++++++- packages/oidc-client/src/oidc.ts | 4 ++-- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index 8cb99b060..118e9b7ee 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -32,6 +32,7 @@ export const Home = () => { {!isAuthenticated &&

} {isAuthenticated &&

} {isAuthenticated &&

} + {isAuthenticated &&

} {isAuthenticated &&

} {isAuthenticated &&

}

diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 2b9828817..02a31f977 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -312,7 +312,7 @@ export class OidcClient { /** * Starts the OIDC logout process with specified options. * @param callbackPathOrUrl The callback path or URL to use after logout. - * @param extras Additional parameters to send to the OIDC server during the logout request. + * @param extras Additional parameters to send to the OIDC server during the logout request. {"no_reload:oidc":"true"} to avoid the page reload after logout. * @returns A promise resolved when the logout is completed. */ logoutAsync(callbackPathOrUrl?: string | null | undefined, extras?: StringMap): Promise; diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index e770abe64..489b846dc 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -6,13 +6,14 @@ import { logoutAsync } from "./logout"; import {ILOidcLocation, OidcLocation} from "./location"; describe('Logout test suite', () => { - + const expectedFinalUrl = "http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"; it.each([ - {logout_tokens_to_invalidate:['access_token', 'refresh_token'], expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short","token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"]}, - {logout_tokens_to_invalidate:['refresh_token'], expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"]}, - {logout_tokens_to_invalidate:['access_token'], expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short"]}, - {logout_tokens_to_invalidate:[], expectedResults: []}, - ])('Logout should revoke tokens $logout_tokens_to_invalidate', async ({ logout_tokens_to_invalidate, expectedResults}) => { + {logout_tokens_to_invalidate:['access_token', 'refresh_token'], extras:null, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short","token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"], expectedFinalUrl}, + {logout_tokens_to_invalidate:['refresh_token'],extras:null, expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"], expectedFinalUrl}, + {logout_tokens_to_invalidate:['access_token'],extras:null, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short"], expectedFinalUrl}, + {logout_tokens_to_invalidate:[],extras:null, expectedResults: [], expectedFinalUrl}, + {logout_tokens_to_invalidate:[],extras: {"no_reload:oidc":"true"}, expectedResults: [], expectedFinalUrl:""}, + ])('Logout should revoke tokens $logout_tokens_to_invalidate', async ({ logout_tokens_to_invalidate, extras =null, expectedResults, expectedFinalUrl}) => { const configuration = { client_id: 'interactive.public.short', @@ -70,13 +71,13 @@ describe('Logout test suite', () => { } - await logoutAsync(oidc, oidcDatabase, mockFetchFn, console, new OidcLocationMock())("/logged_out"); + await logoutAsync(oidc, oidcDatabase, mockFetchFn, console, new OidcLocationMock())("/logged_out", extras); // @ts-ignore const results = mockFetchFn.mock.calls.map((call, index) => call[1].body); expect(results).toEqual(expectedResults); - expect(finalUrl).toBe("http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"); + expect(finalUrl).toBe(expectedFinalUrl); }); }); diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 436a28dde..731bac9d3 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -69,6 +69,7 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi const sub = oidc.tokens && oidc.tokens.idTokenPayload ? oidc.tokens.idTokenPayload.sub : null; // eslint-disable-next-line @typescript-eslint/no-unused-vars + await oidc.destroyAsync('LOGGED_OUT'); for (const [key, itemOidc] of Object.entries(oidcDatabase)) { if (itemOidc !== oidc) { // @ts-ignore @@ -77,7 +78,21 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi oidc.publishEvent(eventNames.logout_from_same_tab, {} ); } } - await oidc.destroyAsync('LOGGED_OUT'); + + let noReload = false; + if(extras) { + extras = {...extras}; + for (const [key, value] of Object.entries(extras)) { + if (key.endsWith('no_reload:oidc')) { + noReload = extras[key] == "true"; + delete extras[key]; + } + } + } + + if(noReload) { + return; + } if (oidcServerConfiguration.endSessionEndpoint) { if (!extras) { diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 0c82eeaaa..bdf8dee82 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -366,16 +366,16 @@ Please checkout that you are using OIDC hook inside a Date: Sat, 10 Feb 2024 14:56:19 +0000 Subject: [PATCH 182/565] [skip ci] Update to version 7.17.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 49833a4d2..7ecdc9193 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.16.0", + "version": "7.17.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7dfa93ae9..dde20ab66 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.16.0'; +export default '7.17.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 955e3299f..9d8a5eaee 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.16.0", + "version": "7.17.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7dfa93ae9..dde20ab66 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.16.0'; +export default '7.17.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 57aa60f24..a1ad36859 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.16.0", + "version": "7.17.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From cc60cf0c05c937372458f983e95cebda30dae739 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 10 Feb 2024 14:56:20 +0000 Subject: [PATCH 183/565] [skip ci] Generate changelog to version 7.17.0 --- CHANGELOG.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b545ac13..977c33ee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.16.0 +## 7.17.0 + +- [a09e6fd](https://github.com/AxaFrance/oidc-client/commit/a09e6fda64aa210fe7f63d70b6c64af559012640) - feat(oidc): logout add extras parameter to avoid the page reload (release) (#1290), 2024-02-10 by *Guillaume Chervet* + + +## v7.16.0 - [6b9b524](https://github.com/AxaFrance/oidc-client/commit/6b9b524c54a18dca9cc5bab34f0d058716e9d116) - feat(react): expose dpop method generation (#1291) (release), 2024-02-10 by *Guillaume Chervet* @@ -312,10 +317,3 @@ - [c2564f9](https://github.com/AxaFrance/oidc-client/commit/c2564f9ef6de2122962cfb4a8e0f9195aa688d84) - fix(all): copy of service worker files (release), 2023-08-08 by *Guillaume Chervet* -## v7.3.0 - -- [282c0f7](https://github.com/AxaFrance/oidc-client/commit/282c0f72ab7741f24468b2278466eb307d1fa0ce) - feat(oidc+serviceworker): add property setAccessTokenToNavigateRequests + service_worker_convert_all_requests_to_cors moved to TrustedDomains.js (#1123) (release), 2023-08-08 by *Guillaume Chervet* -- [c94163d](https://github.com/AxaFrance/oidc-client/commit/c94163d02f5947761d00bd5e18df6749106d6f3d) - doc(FAQ): add "Does Service Worker is mandatory ?", 2023-08-08 by *Guillaume Chervet* -- [7ffcde4](https://github.com/AxaFrance/oidc-client/commit/7ffcde465f5f4cbba4b39e0da43dee34d4ec37d9) - doc(readme): update images urls, 2023-08-08 by *Guillaume Chervet* - - From d20953a0180bdf3b8b6dd3247a025e3b4fc389f8 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 10 Feb 2024 15:56:34 +0100 Subject: [PATCH 184/565] refactor(oidc): remove base64.js dependencies (alpha) --- packages/oidc-client/package.json | 1 - packages/oidc-client/src/crypto.ts | 10 +++------- packages/oidc-client/src/jwt.ts | 6 ++---- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 955e3299f..6ee1c1593 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -27,7 +27,6 @@ "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.2.1", "@vitest/coverage-v8": "1.2.2", - "base64-js": "^1.5.1", "cpy": "11.0.0", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", diff --git a/packages/oidc-client/src/crypto.ts b/packages/oidc-client/src/crypto.ts index d44370d13..fff0a9f84 100644 --- a/packages/oidc-client/src/crypto.ts +++ b/packages/oidc-client/src/crypto.ts @@ -1,4 +1,5 @@ -import * as base64 from 'base64-js'; +import {uint8ToUrlBase64} from "./jwt"; + const cryptoInfo = () => { const hasCrypto = typeof window !== 'undefined' && !!(window.crypto as any); @@ -16,11 +17,6 @@ const bufferToString = (buffer: Uint8Array) => { return state.join(''); }; -const urlSafe = (buffer: Uint8Array): string => { - const encoded = base64.fromByteArray(new Uint8Array(buffer)); - return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); -}; - export const generateRandom = (size: number) => { const buffer = new Uint8Array(size); const { hasCrypto } = cryptoInfo(); @@ -48,7 +44,7 @@ export function textEncodeLite(str: string) { export function base64urlOfHashOfASCIIEncodingAsync(code: string):Promise { return new Promise((resolve, reject) => { crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => { - return resolve(urlSafe(new Uint8Array(buffer))); + return resolve(uint8ToUrlBase64(new Uint8Array(buffer))); }, error => reject(error)); }); } diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index 8f869e7d3..f65ec7b7e 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -30,18 +30,16 @@ function utf8ToBinaryString(str) { const escstr = encodeURIComponent(str); // replaces any uri escape sequence, such as %0A, // with binary escape, such as 0x0A - const binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) { + return escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) { return String.fromCharCode(parseInt(p1, 16)); }); - - return binstr; } // Uint8Array to URL Safe Base64 // // the shortest distant between two encodings... binary string // @ts-ignore -function uint8ToUrlBase64(uint8) { +export const uint8ToUrlBase64 =(uint8: Uint8Array) => { let bin = ''; // @ts-ignore uint8.forEach(function(code) { From 251164830a9a1b976e8d6c743490795a028afa16 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 10 Feb 2024 16:03:46 +0100 Subject: [PATCH 185/565] refactor(oidc): remove base64.js dependency (#1292) (release) --- packages/oidc-client/package.json | 3 +-- packages/oidc-client/src/crypto.ts | 10 +++------- packages/oidc-client/src/jwt.ts | 6 ++---- pnpm-lock.yaml | 3 --- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 9d8a5eaee..6ee1c1593 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.17.0", + "version": "7.16.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", @@ -27,7 +27,6 @@ "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.2.1", "@vitest/coverage-v8": "1.2.2", - "base64-js": "^1.5.1", "cpy": "11.0.0", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", diff --git a/packages/oidc-client/src/crypto.ts b/packages/oidc-client/src/crypto.ts index d44370d13..fff0a9f84 100644 --- a/packages/oidc-client/src/crypto.ts +++ b/packages/oidc-client/src/crypto.ts @@ -1,4 +1,5 @@ -import * as base64 from 'base64-js'; +import {uint8ToUrlBase64} from "./jwt"; + const cryptoInfo = () => { const hasCrypto = typeof window !== 'undefined' && !!(window.crypto as any); @@ -16,11 +17,6 @@ const bufferToString = (buffer: Uint8Array) => { return state.join(''); }; -const urlSafe = (buffer: Uint8Array): string => { - const encoded = base64.fromByteArray(new Uint8Array(buffer)); - return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); -}; - export const generateRandom = (size: number) => { const buffer = new Uint8Array(size); const { hasCrypto } = cryptoInfo(); @@ -48,7 +44,7 @@ export function textEncodeLite(str: string) { export function base64urlOfHashOfASCIIEncodingAsync(code: string):Promise { return new Promise((resolve, reject) => { crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => { - return resolve(urlSafe(new Uint8Array(buffer))); + return resolve(uint8ToUrlBase64(new Uint8Array(buffer))); }, error => reject(error)); }); } diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index 8f869e7d3..f65ec7b7e 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -30,18 +30,16 @@ function utf8ToBinaryString(str) { const escstr = encodeURIComponent(str); // replaces any uri escape sequence, such as %0A, // with binary escape, such as 0x0A - const binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) { + return escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) { return String.fromCharCode(parseInt(p1, 16)); }); - - return binstr; } // Uint8Array to URL Safe Base64 // // the shortest distant between two encodings... binary string // @ts-ignore -function uint8ToUrlBase64(uint8) { +export const uint8ToUrlBase64 =(uint8: Uint8Array) => { let bin = ''; // @ts-ignore uint8.forEach(function(code) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cabbeccf6..a6e7691cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -188,9 +188,6 @@ importers: '@vitest/coverage-v8': specifier: 1.2.2 version: 1.2.2(vitest@1.2.2) - base64-js: - specifier: ^1.5.1 - version: 1.5.1 cpy: specifier: 11.0.0 version: 11.0.0 From bee6c9c82ef1456798fe42f5966082fd0940bf53 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 10 Feb 2024 15:06:16 +0000 Subject: [PATCH 186/565] [skip ci] Update to version 7.17.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 7ecdc9193..a9ed73415 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.17.0", + "version": "7.17.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index dde20ab66..6c63c4d15 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.17.0'; +export default '7.17.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6ee1c1593..b177b0bfa 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.16.0", + "version": "7.17.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index dde20ab66..6c63c4d15 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.17.0'; +export default '7.17.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index a1ad36859..44e5dd557 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.17.0", + "version": "7.17.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From a91a7bcac6046f3832d0efff886c5faac6ae5863 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 10 Feb 2024 15:06:18 +0000 Subject: [PATCH 187/565] [skip ci] Generate changelog to version 7.17.1 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 977c33ee4..2eabd306a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.17.0 +## 7.17.1 + +- [2511648](https://github.com/AxaFrance/oidc-client/commit/251164830a9a1b976e8d6c743490795a028afa16) - refactor(oidc): remove base64.js dependency (#1292) (release), 2024-02-10 by *Guillaume Chervet* + + +## v7.17.0 - [a09e6fd](https://github.com/AxaFrance/oidc-client/commit/a09e6fda64aa210fe7f63d70b6c64af559012640) - feat(oidc): logout add extras parameter to avoid the page reload (release) (#1290), 2024-02-10 by *Guillaume Chervet* @@ -312,8 +317,3 @@ - [790ec46](https://github.com/AxaFrance/oidc-client/commit/790ec468355967462b9bfce40196e9336efed0d7) - fix(oidc): allow service worker to chrome 70 (release), 2023-08-15 by *Guillaume Chervet* -## v7.3.1 - -- [c2564f9](https://github.com/AxaFrance/oidc-client/commit/c2564f9ef6de2122962cfb4a8e0f9195aa688d84) - fix(all): copy of service worker files (release), 2023-08-08 by *Guillaume Chervet* - - From c3d5c6b1a6a2a82450d134134513634031c1c338 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 11 Feb 2024 13:56:30 +0100 Subject: [PATCH 188/565] refactor(react-oidc): remove base64js dependencies (release) --- packages/oidc-client/package.json | 3 ++- packages/react-oidc/package.json | 3 +-- pnpm-lock.yaml | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b177b0bfa..80ad982bf 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -41,7 +41,8 @@ "openid", "oauth2", "oauth", - "vanilla" + "vanilla", + "vanillajs" ], "scripts": { "clean": "rimraf dist", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 44e5dd557..cfd634fc7 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -41,8 +41,7 @@ }, "dependencies": { "@axa-fr/oidc-client-service-worker": "workspace:*", - "@axa-fr/oidc-client": "workspace:*", - "base64-js": "1.5.1" + "@axa-fr/oidc-client": "workspace:*" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6e7691cc..b55c2708e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,9 +245,6 @@ importers: '@axa-fr/oidc-client-service-worker': specifier: workspace:* version: link:../oidc-client-service-worker - base64-js: - specifier: 1.5.1 - version: 1.5.1 devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 @@ -2032,6 +2029,7 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} From 98eb195b0f1d45b490913381c74c1d03375e9858 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 12:59:23 +0000 Subject: [PATCH 189/565] [skip ci] Update to version 7.17.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a9ed73415..7b3f47798 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.17.1", + "version": "7.17.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 6c63c4d15..a9835fb8d 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.17.1'; +export default '7.17.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 80ad982bf..320d6618b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.17.1", + "version": "7.17.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 6c63c4d15..a9835fb8d 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.17.1'; +export default '7.17.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index cfd634fc7..b6da391f5 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.17.1", + "version": "7.17.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7a42de8efa8a66b6efce63f34dd1de3b77795f1d Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 12:59:24 +0000 Subject: [PATCH 190/565] [skip ci] Generate changelog to version 7.17.2 --- CHANGELOG.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eabd306a..6dfa2a465 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog -## 7.17.1 +## 7.17.2 + +- [c3d5c6b](https://github.com/AxaFrance/oidc-client/commit/c3d5c6b1a6a2a82450d134134513634031c1c338) - refactor(react-oidc): remove base64js dependencies (release), 2024-02-11 by *Guillaume Chervet* +- [2a7031b](https://github.com/AxaFrance/oidc-client/commit/2a7031bfdd5a7c638940ece97778988ead73cbdc) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-11 by *Guillaume Chervet* +- [3973497](https://github.com/AxaFrance/oidc-client/commit/397349749e9abb75a6910b3824786f3c688447fe) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-10 by *Guillaume Chervet* +- [d20953a](https://github.com/AxaFrance/oidc-client/commit/d20953a0180bdf3b8b6dd3247a025e3b4fc389f8) - refactor(oidc): remove base64.js dependencies (alpha), 2024-02-10 by *Guillaume Chervet* + + +## v7.17.1 - [2511648](https://github.com/AxaFrance/oidc-client/commit/251164830a9a1b976e8d6c743490795a028afa16) - refactor(oidc): remove base64.js dependency (#1292) (release), 2024-02-10 by *Guillaume Chervet* @@ -312,8 +320,3 @@ - [e4e7409](https://github.com/AxaFrance/oidc-client/commit/e4e74091a8a6fadb64429dcccbd43331af62f920) - fix(oidc): parent instead of top for iframe allow app inside iframe (#1130) (release), 2023-08-15 by *Guillaume Chervet* -## v7.3.2 - -- [790ec46](https://github.com/AxaFrance/oidc-client/commit/790ec468355967462b9bfce40196e9336efed0d7) - fix(oidc): allow service worker to chrome 70 (release), 2023-08-15 by *Guillaume Chervet* - - From dbaf602d31e0b437285496e2711ff7cce5d8d3f7 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 11 Feb 2024 14:59:36 +0100 Subject: [PATCH 191/565] fix(react-oidc): typings user can be null (release) --- packages/react-oidc/src/User.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index 0b1b6a712..14413e57e 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -9,7 +9,7 @@ export enum OidcUserStatus { } export type OidcUser = { - user: T; + user: T | null; status: OidcUserStatus; } From 6291b24f81584304e89deab66b9cd10fc114e543 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 14:02:25 +0000 Subject: [PATCH 192/565] [skip ci] Update to version 7.17.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 7b3f47798..f2187b91a 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.17.2", + "version": "7.17.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index a9835fb8d..71f6c9026 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.17.2'; +export default '7.17.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 320d6618b..74150e212 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.17.2", + "version": "7.17.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index a9835fb8d..71f6c9026 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.17.2'; +export default '7.17.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b6da391f5..be6d7d4bb 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.17.2", + "version": "7.17.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 9ffef5d0248034af666bdc2217dec70c3da7b243 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 14:02:27 +0000 Subject: [PATCH 193/565] [skip ci] Generate changelog to version 7.17.3 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dfa2a465..44f528d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.17.2 +## 7.17.3 + +- [dbaf602](https://github.com/AxaFrance/oidc-client/commit/dbaf602d31e0b437285496e2711ff7cce5d8d3f7) - fix(react-oidc): typings user can be null (release), 2024-02-11 by *Guillaume Chervet* + + +## v7.17.2 - [c3d5c6b](https://github.com/AxaFrance/oidc-client/commit/c3d5c6b1a6a2a82450d134134513634031c1c338) - refactor(react-oidc): remove base64js dependencies (release), 2024-02-11 by *Guillaume Chervet* - [2a7031b](https://github.com/AxaFrance/oidc-client/commit/2a7031bfdd5a7c638940ece97778988ead73cbdc) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-11 by *Guillaume Chervet* @@ -315,8 +320,3 @@ - [6d371ff](https://github.com/AxaFrance/oidc-client/commit/6d371ff1ce909ae40ef2f44a145bdcd322ca9d90) - fix(oidc-service-worker): gracefull timeout on firefox (release) (#1132), 2023-08-25 by *Guillaume Chervet* -## v7.3.3 - -- [e4e7409](https://github.com/AxaFrance/oidc-client/commit/e4e74091a8a6fadb64429dcccbd43331af62f920) - fix(oidc): parent instead of top for iframe allow app inside iframe (#1130) (release), 2023-08-15 by *Guillaume Chervet* - - From 91b11afa983bf4bee8def95c4ee101ede5447dc9 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 11 Feb 2024 18:49:51 +0100 Subject: [PATCH 194/565] fix(oidc): resfreshTokenError not triggered when silentsignin disabled (release) --- packages/oidc-client/src/renewTokens.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 79ae5c133..72762c61c 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -186,17 +186,20 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f ...extras, prompt: 'none', }); - if (silent_token_response) { - if(silent_token_response.error) { - updateTokens(null); - oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent' }); - return { tokens: null, status: 'SESSION_LOST' }; - } + if (!silent_token_response) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent not active' }); + return { tokens: null, status: 'SESSION_LOST' }; + } + if(silent_token_response.error) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent' }); + return { tokens: null, status: 'SESSION_LOST' }; + } - updateTokens(silent_token_response.tokens); - oidc.publishEvent(Oidc.eventNames.token_renewed, {}); - return { tokens: silent_token_response.tokens, status: 'LOGGED' }; - } + updateTokens(silent_token_response.tokens); + oidc.publishEvent(Oidc.eventNames.token_renewed, {}); + return { tokens: silent_token_response.tokens, status: 'LOGGED' }; } catch (exceptionSilent: any) { console.error(exceptionSilent); From f17b70152a2ffe55fd2f0a7824ff4495c83d16e5 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 17:53:05 +0000 Subject: [PATCH 195/565] [skip ci] Update to version 7.17.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index f2187b91a..1029c4204 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.17.3", + "version": "7.17.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 71f6c9026..7a179e32c 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.17.3'; +export default '7.17.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 74150e212..8e622aaa0 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.17.3", + "version": "7.17.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 71f6c9026..7a179e32c 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.17.3'; +export default '7.17.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index be6d7d4bb..4a8c8cda2 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.17.3", + "version": "7.17.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 29693341ff020f826b297a47b606cd55ab615386 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 11 Feb 2024 17:53:06 +0000 Subject: [PATCH 196/565] [skip ci] Generate changelog to version 7.17.4 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44f528d83..63f32a592 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.17.3 +## 7.17.4 + +- [91b11af](https://github.com/AxaFrance/oidc-client/commit/91b11afa983bf4bee8def95c4ee101ede5447dc9) - fix(oidc): resfreshTokenError not triggered when silentsignin disabled (release), 2024-02-11 by *Guillaume Chervet* + + +## v7.17.3 - [dbaf602](https://github.com/AxaFrance/oidc-client/commit/dbaf602d31e0b437285496e2711ff7cce5d8d3f7) - fix(react-oidc): typings user can be null (release), 2024-02-11 by *Guillaume Chervet* @@ -315,8 +320,3 @@ - [d0dfde4](https://github.com/AxaFrance/oidc-client/commit/d0dfde47e27125248e5af7e9d6c12bfbe1e3ec60) - feat(oidc+serviceworker): increase security preventing sw unresgistration during silent signin (#1134) (release), 2023-09-05 by *Guillaume Chervet* -## v7.3.4 - -- [6d371ff](https://github.com/AxaFrance/oidc-client/commit/6d371ff1ce909ae40ef2f44a145bdcd322ca9d90) - fix(oidc-service-worker): gracefull timeout on firefox (release) (#1132), 2023-08-25 by *Guillaume Chervet* - - From 5e35346bfa477b560f5bde1afb2125a2c5f6e9c4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 13 Feb 2024 21:39:07 +0100 Subject: [PATCH 197/565] feat(oidc): add extras to revoke access_token and refresh_tokens (#1295) (release) --- packages/oidc-client/README.md | 5 +- packages/oidc-client/src/logout.spec.ts | 4 +- packages/oidc-client/src/logout.ts | 78 +++++++++++++++++-------- packages/oidc-client/src/oidc.ts | 2 +- packages/oidc-client/src/requests.ts | 13 ++++- 5 files changed, 75 insertions(+), 27 deletions(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 02a31f977..2cc14490b 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -312,7 +312,10 @@ export class OidcClient { /** * Starts the OIDC logout process with specified options. * @param callbackPathOrUrl The callback path or URL to use after logout. - * @param extras Additional parameters to send to the OIDC server during the logout request. {"no_reload:oidc":"true"} to avoid the page reload after logout. + * @param extras Additional parameters to send to the OIDC server during the logout request. + * {"no_reload:oidc":"true"} to avoid the page reload after logout. + * you can add extras like {"client_secret:revoke_refresh_token":"secret"} to revoke the refresh token with extra client secret. Any key ending with ":revoke_refresh_token" will be used to revoke the refresh token. + * you can add extras like {"client_secret:revoke_access_token":"secret"} to revoke the access token with extra client secret. Any key ending with ":revoke_access_token" will be used to revoke the access token. * @returns A promise resolved when the logout is completed. */ logoutAsync(callbackPathOrUrl?: string | null | undefined, extras?: StringMap): Promise; diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index 489b846dc..5d18d8705 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -12,7 +12,9 @@ describe('Logout test suite', () => { {logout_tokens_to_invalidate:['refresh_token'],extras:null, expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"], expectedFinalUrl}, {logout_tokens_to_invalidate:['access_token'],extras:null, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short"], expectedFinalUrl}, {logout_tokens_to_invalidate:[],extras:null, expectedResults: [], expectedFinalUrl}, - {logout_tokens_to_invalidate:[],extras: {"no_reload:oidc":"true"}, expectedResults: [], expectedFinalUrl:""}, + {logout_tokens_to_invalidate:[],extras: {"no_reload:oidc":"true"}, expectedResults: [], expectedFinalUrl:""}, + {logout_tokens_to_invalidate:['refresh_token'],extras:{"client_secret:revoke_refresh_token":"secret"}, expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short&client_secret=secret"], expectedFinalUrl}, + {logout_tokens_to_invalidate:['access_token'],extras:{"client_secret:revoke_access_token":"secret"}, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short&client_secret=secret"], expectedFinalUrl}, ])('Logout should revoke tokens $logout_tokens_to_invalidate', async ({ logout_tokens_to_invalidate, extras =null, expectedResults, expectedFinalUrl}) => { const configuration = { diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 731bac9d3..d422a9a8d 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -11,6 +11,33 @@ export const oidcLogoutTokens = { refresh_token: 'refresh_token', }; +const extractExtras = (extras: StringMap, postKey: string):StringMap => { + const postExtras:StringMap = {}; + if (extras) { + for (const [key, value] of Object.entries(extras)) { + if (key.endsWith(postKey)) { + const newKey = key.replace(postKey, ''); + postExtras[newKey] = value; + } + } + return postExtras; + } + return postExtras; +} + +const keepExtras = (extras: StringMap):StringMap => { + const postExtras : StringMap = {}; + if (extras) { + for (const [key, value] of Object.entries(extras)) { + if (!key.includes(':')) { + postExtras[key] = value; + } + } + return postExtras; + } + return postExtras; +} + export const destroyAsync = (oidc) => async (status) => { timer.clearTimeout(oidc.timeoutId); oidc.timeoutId = null; @@ -28,7 +55,10 @@ export const destroyAsync = (oidc) => async (status) => { oidc.userInfo = null; }; -export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOidcLocation) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { +export const logoutAsync = (oidc, + oidcDatabase, + fetch, + console, oicLocation:ILOidcLocation) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { const configuration = oidc.configuration; const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); if (callbackPathOrUrl && (typeof callbackPathOrUrl !== 'string')) { @@ -49,12 +79,22 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi const promises = []; const accessToken = oidc.tokens ? oidc.tokens.accessToken : null; if (accessToken && configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.access_token)) { - const revokeAccessTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, accessToken, TOKEN_TYPE.access_token, configuration.client_id); + const revokeAccessTokenExtras = extractExtras(extras, ':revoke_access_token'); + const revokeAccessTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, + accessToken, + TOKEN_TYPE.access_token, + configuration.client_id, + revokeAccessTokenExtras); promises.push(revokeAccessTokenPromise); } const refreshToken = oidc.tokens ? oidc.tokens.refreshToken : null; if (refreshToken && configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.refresh_token)) { - const revokeRefreshTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, refreshToken, TOKEN_TYPE.refresh_token, configuration.client_id); + const revokeAccessTokenExtras = extractExtras(extras, ':revoke_refresh_token'); + const revokeRefreshTokenPromise = performRevocationRequestAsync(fetch)(revocationEndpoint, + refreshToken, + TOKEN_TYPE.refresh_token, + configuration.client_id, + revokeAccessTokenExtras); promises.push(revokeRefreshTokenPromise); } if (promises.length > 0) { @@ -78,34 +118,26 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation:ILOi oidc.publishEvent(eventNames.logout_from_same_tab, {} ); } } - - let noReload = false; - if(extras) { - extras = {...extras}; - for (const [key, value] of Object.entries(extras)) { - if (key.endsWith('no_reload:oidc')) { - noReload = extras[key] == "true"; - delete extras[key]; - } - } - } + + const oidcExtras = extractExtras(extras, ':oidc'); + let noReload = oidcExtras && oidcExtras['no_reload'] === 'true'; if(noReload) { return; } + + const endPointExtras = keepExtras(extras); if (oidcServerConfiguration.endSessionEndpoint) { - if (!extras) { - extras = { - id_token_hint: idToken, - }; - if (callbackPathOrUrl !== null) { - extras.post_logout_redirect_uri = url; - } + if (!('id_token_hint' in endPointExtras)) { + endPointExtras['id_token_hint'] = idToken; + } + if (!('post_logout_redirect_uri' in endPointExtras) && callbackPathOrUrl !== null) { + endPointExtras['post_logout_redirect_uri'] = url; } let queryString = ''; - if (extras) { - for (const [key, value] of Object.entries(extras)) { + for (const [key, value] of Object.entries(endPointExtras)) { + if(value !== null && value !== undefined) { if (queryString === '') { queryString += '?'; } else { diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index bdf8dee82..afcc232bf 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -167,7 +167,7 @@ export class Oidc { const isInsideBrowser = (typeof process === 'undefined'); if (!Object.prototype.hasOwnProperty.call(oidcDatabase, name) && isInsideBrowser) { throw Error(`OIDC library does seem initialized. -Please checkout that you are using OIDC hook inside a compoment.`); +Please checkout that you are using OIDC hook inside a component.`); } return oidcDatabase[name]; } diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 9f4ab259a..5321210f0 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -54,12 +54,23 @@ export const TOKEN_TYPE = { access_token: 'access_token', }; -export const performRevocationRequestAsync = (fetch) => async (url, token, token_type = TOKEN_TYPE.refresh_token, client_id, timeoutMs = 10000) => { +export const performRevocationRequestAsync = (fetch) => async (url, + token, + token_type = TOKEN_TYPE.refresh_token, + client_id, + extras:StringMap = {}, + timeoutMs = 10000) => { const details = { token, token_type_hint: token_type, client_id, }; + for (const [key, value] of Object.entries(extras)) { + + if (details[key] === undefined) { + details[key] = value; + } + } const formBody = []; for (const property in details) { From 6391b65d9bb73e35a23ee893b3bdab23074652b6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 13 Feb 2024 20:41:44 +0000 Subject: [PATCH 198/565] [skip ci] Update to version 7.18.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1029c4204..d29514926 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.17.4", + "version": "7.18.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7a179e32c..4f9c59ec3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.17.4'; +export default '7.18.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 8e622aaa0..08291abb9 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.17.4", + "version": "7.18.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7a179e32c..4f9c59ec3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.17.4'; +export default '7.18.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 4a8c8cda2..9c90dbaa8 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.17.4", + "version": "7.18.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 8585205cc29aaa41f9c47115c3ff1cf9d3f7f9aa Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 13 Feb 2024 20:41:45 +0000 Subject: [PATCH 199/565] [skip ci] Generate changelog to version 7.18.0 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63f32a592..13f584421 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.17.4 +## 7.18.0 + +- [5e35346](https://github.com/AxaFrance/oidc-client/commit/5e35346bfa477b560f5bde1afb2125a2c5f6e9c4) - feat(oidc): add extras to revoke access_token and refresh_tokens (#1295) (release), 2024-02-13 by *Guillaume Chervet* + + +## v7.17.4 - [91b11af](https://github.com/AxaFrance/oidc-client/commit/91b11afa983bf4bee8def95c4ee101ede5447dc9) - fix(oidc): resfreshTokenError not triggered when silentsignin disabled (release), 2024-02-11 by *Guillaume Chervet* @@ -315,8 +320,3 @@ - [823a3c3](https://github.com/AxaFrance/oidc-client/commit/823a3c37351e39b0bb1290228f72c58f11a28960) - fix(oidc+serviceworker): better issueAt, 2023-09-05 by *Guillaume Chervet* -## v7.4.0 - -- [d0dfde4](https://github.com/AxaFrance/oidc-client/commit/d0dfde47e27125248e5af7e9d6c12bfbe1e3ec60) - feat(oidc+serviceworker): increase security preventing sw unresgistration during silent signin (#1134) (release), 2023-09-05 by *Guillaume Chervet* - - From 0d13cc28a8cc40c610d3943d33fe8a7d4e28c32f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 13 Feb 2024 21:46:31 +0100 Subject: [PATCH 200/565] fix(oidc): unload user on logout (#1296) (release) --- packages/react-oidc/src/User.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index 14413e57e..c972f25c2 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -17,8 +17,9 @@ export const useOidcUser = (configuration const [oidcUser, setOidcUser] = useState>({ user: null, status: OidcUserStatus.Unauthenticated }); const [oidcUserId, setOidcUserId] = useState(''); - const oidc = OidcClient.get(configurationName); + useEffect(() => { + const oidc = OidcClient.get(configurationName); let isMounted = true; if (oidc && oidc.tokens) { setOidcUser({ ...oidcUser, status: OidcUserStatus.Loading }); @@ -34,7 +35,18 @@ export const useOidcUser = (configuration } else { setOidcUser({ user: null, status: OidcUserStatus.Unauthenticated }); } - return () => { isMounted = false; }; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { + if (name === OidcClient.eventNames.logout_from_another_tab || name === OidcClient.eventNames.logout_from_same_tab) { + if (isMounted) { + setOidcUser({ user: null, status: OidcUserStatus.Unauthenticated }); + } + } + }); + return () => { + isMounted = false; + oidc.removeEventSubscription(newSubscriptionId); + }; }, [oidcUserId]); const reloadOidcUser = () => { From 68a8d03ec22caa975f6f4d992b8d2235b370f98b Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 13 Feb 2024 20:49:04 +0000 Subject: [PATCH 201/565] [skip ci] Update to version 7.18.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index d29514926..c00b8fb92 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.0", + "version": "7.18.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 4f9c59ec3..588db1f84 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.0'; +export default '7.18.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 08291abb9..594fa0a2b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.0", + "version": "7.18.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 4f9c59ec3..588db1f84 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.0'; +export default '7.18.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9c90dbaa8..2474c4337 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.0", + "version": "7.18.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From aa69ce607a7819a8df3d2887b30963b5f776edf2 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 13 Feb 2024 20:49:06 +0000 Subject: [PATCH 202/565] [skip ci] Generate changelog to version 7.18.1 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13f584421..8e1f71e92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.18.0 +## 7.18.1 + +- [0d13cc2](https://github.com/AxaFrance/oidc-client/commit/0d13cc28a8cc40c610d3943d33fe8a7d4e28c32f) - fix(oidc): unload user on logout (#1296) (release), 2024-02-13 by *Guillaume Chervet* + + +## v7.18.0 - [5e35346](https://github.com/AxaFrance/oidc-client/commit/5e35346bfa477b560f5bde1afb2125a2c5f6e9c4) - feat(oidc): add extras to revoke access_token and refresh_tokens (#1295) (release), 2024-02-13 by *Guillaume Chervet* @@ -314,9 +319,3 @@ - [1980813](https://github.com/AxaFrance/oidc-client/commit/1980813234a63e13353b8e5623982e714b42ac12) - feat(demo): hack iframe unregister serviceworker (#1137), 2023-09-14 by *Guillaume Chervet* -## v7.4.1 - -- [6941766](https://github.com/AxaFrance/oidc-client/commit/6941766614d18ff3c92bbd00bdf0583350b16b7f) - fix(service-worker): setAccessTokenToNavigateRequests always true (#1136) (release), 2023-09-07 by *Guillaume Chervet* -- [823a3c3](https://github.com/AxaFrance/oidc-client/commit/823a3c37351e39b0bb1290228f72c58f11a28960) - fix(oidc+serviceworker): better issueAt, 2023-09-05 by *Guillaume Chervet* - - From 77329ce52a5fc7278ff35ccd13ca572ff7ebbf4d Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 15 Feb 2024 20:28:37 +0100 Subject: [PATCH 203/565] fix(oidc-service-worker): bad request on many token request at the same time (#1300) (release) --- .../src/OidcServiceWorker.ts | 39 ++++++++++--------- .../src/utils/__tests__/codeVerifier.spec.ts | 18 ++++++++- .../src/utils/codeVerifier.ts | 11 ++++++ 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 88109e353..cb963cdf6 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -14,7 +14,7 @@ import { serializeHeaders, sleep, } from './utils'; -import { replaceCodeVerifier } from './utils/codeVerifier'; +import {extractConfigurationNameFromCodeVerifier, replaceCodeVerifier} from './utils/codeVerifier'; import { normalizeUrl } from './utils/normalizeUrl'; import version from './version'; @@ -51,7 +51,6 @@ const handleActivate = (event: ExtendableEvent) => { event.waitUntil(_self.clients.claim()); }; -let currentLoginCallbackConfigurationName: string | null = null; const database: Database = {}; const getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => { @@ -136,10 +135,16 @@ const handleFetch = async (event: FetchEvent) => { ...serializeHeaders(originalRequest.headers), }; } else { + + const authorization = originalRequest.headers.get('authorization'); + if (!authorization ) { + throw new Error('No authorization header'); + } + const authentificationMode = authorization.split(" ")[0]; headers = { ...serializeHeaders(originalRequest.headers), authorization: - 'Bearer ' + currentDatabaseForRequestAccessToken.tokens.access_token, + authentificationMode + ' ' + currentDatabaseForRequestAccessToken.tokens.access_token, }; } let init: RequestInit; @@ -232,13 +237,16 @@ const handleFetch = async (event: FetchEvent) => { return new Response(text, response); }); } - return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); // todo type assertion to OidcConfig but could be null, NEEDS REVIEW + return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); } else if ( actualBody.includes('code_verifier=') && - currentLoginCallbackConfigurationName + extractConfigurationNameFromCodeVerifier(actualBody) != null ) { + const currentLoginCallbackConfigurationName = extractConfigurationNameFromCodeVerifier( + actualBody, + ); + // @ts-ignore currentDatabase = database[currentLoginCallbackConfigurationName]; - currentLoginCallbackConfigurationName = null; let newBody = actualBody; if (currentDatabase && currentDatabase.codeVerifier != null) { newBody = replaceCodeVerifier( @@ -246,7 +254,7 @@ const handleFetch = async (event: FetchEvent) => { currentDatabase.codeVerifier, ); } - + return fetch(originalRequest, { body: newBody, method: clonedRequest.method, @@ -259,6 +267,7 @@ const handleFetch = async (event: FetchEvent) => { referrer: clonedRequest.referrer, credentials: clonedRequest.credentials, integrity: clonedRequest.integrity, + // @ts-ignore }).then(hideTokens(currentDatabase)); } @@ -338,7 +347,7 @@ const handleMessage = (event: ExtendableMessageEvent) => { trustedDomains[configurationName] = []; } } - + console.log('[OidcServiceWorker] handleMessage', data.type); switch (data.type) { case 'clear': currentDatabase.tokens = null; @@ -363,15 +372,6 @@ const handleMessage = (event: ExtendableMessageEvent) => { } currentDatabase.oidcServerConfiguration = oidcServerConfiguration; currentDatabase.oidcConfiguration = data.data.oidcConfiguration; - const where = data.data.where; - if ( - where === 'loginCallbackAsync' || - where === 'tryKeepExistingSessionAsync' - ) { - currentLoginCallbackConfigurationName = configurationName; - } else { - currentLoginCallbackConfigurationName = null; - } if (!currentDatabase.tokens) { port.postMessage({ @@ -487,8 +487,9 @@ const handleMessage = (event: ExtendableMessageEvent) => { return; } default: { - currentDatabase.items = { ...data.data }; - port.postMessage({ configurationName }); + return; + // currentDatabase.items = { ...data.data }; + // port.postMessage({ configurationName }); } } }; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts index e2ad25a05..d976b355f 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { replaceCodeVerifier } from '../codeVerifier'; +import { replaceCodeVerifier, extractConfigurationNameFromCodeVerifier } from '../codeVerifier'; describe('replaceCodeVerifier should', () => { it.each([ @@ -11,3 +11,19 @@ describe('replaceCodeVerifier should', () => { expect(bodyExpected).toEqual(result); }); }); + + +describe('extractConfigurationNameFromCodeVerifier should', () => { + it.each([ + { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default", expected: 'default' }, + { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_youhou&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback", expected: 'youhou' }, + ])('inject new codeVerifier', async ({ body, expected }) => { + + const configurationName = extractConfigurationNameFromCodeVerifier(body); + console.log(configurationName); + expect(configurationName).toEqual(expected); + }); +}); + + + diff --git a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts index a011716db..e84f47c19 100644 --- a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts +++ b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts @@ -2,3 +2,14 @@ export function replaceCodeVerifier(codeVerifier:string, newCodeVerifier:string) const regex = /code_verifier=[A-Za-z0-9_-]+/i; return codeVerifier.replace(regex, `code_verifier=${newCodeVerifier}`); } + +export const extractConfigurationNameFromCodeVerifier = (chaine:string):string | null => { + const regex = /CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_([^&\s]+)/; + const result = chaine.match(regex); + + if (result && result.length > 1) { + return result[1]; + } else { + return null; + } +} From daee256061a342b9c22ea2821ac50a6b7d653149 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 15 Feb 2024 19:31:13 +0000 Subject: [PATCH 204/565] [skip ci] Update to version 7.18.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index c00b8fb92..1a00550ef 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.1", + "version": "7.18.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 588db1f84..e0ea72f76 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.1'; +export default '7.18.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 594fa0a2b..858461961 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.1", + "version": "7.18.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 588db1f84..e0ea72f76 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.1'; +export default '7.18.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 2474c4337..cb9ece617 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.1", + "version": "7.18.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From fcbb40dfd57ae8aeab745a0ad43bee56abc056b2 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 15 Feb 2024 19:31:15 +0000 Subject: [PATCH 205/565] [skip ci] Generate changelog to version 7.18.2 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e1f71e92..70407e7a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.18.1 +## 7.18.2 + +- [77329ce](https://github.com/AxaFrance/oidc-client/commit/77329ce52a5fc7278ff35ccd13ca572ff7ebbf4d) - fix(oidc-service-worker): bad request on many token request at the same time (#1300) (release), 2024-02-15 by *Guillaume Chervet* + + +## v7.18.1 - [0d13cc2](https://github.com/AxaFrance/oidc-client/commit/0d13cc28a8cc40c610d3943d33fe8a7d4e28c32f) - fix(oidc): unload user on logout (#1296) (release), 2024-02-13 by *Guillaume Chervet* @@ -313,9 +318,3 @@ - [60d9c4e](https://github.com/AxaFrance/oidc-client/commit/60d9c4e68622f81ecceaf480de21d4646ae909f1) - fix(oidc): clean link with service worker (#1141) (release), 2023-09-20 by *Guillaume Chervet* -## v7.5.0 - -- [ff7ac6a](https://github.com/AxaFrance/oidc-client/commit/ff7ac6ae7defbd84067b4084222430ef07f15713) - feat(oidc): add dpop (#1139) (release), 2023-09-19 by *Guillaume Chervet* -- [1980813](https://github.com/AxaFrance/oidc-client/commit/1980813234a63e13353b8e5623982e714b42ac12) - feat(demo): hack iframe unregister serviceworker (#1137), 2023-09-14 by *Guillaume Chervet* - - From 8eb75d3f2036708d9c3067a2973a4d685d8b4923 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 15 Feb 2024 20:55:03 +0100 Subject: [PATCH 206/565] fix(oidc): logout continue to run before redirecting (#1301) (release) --- packages/oidc-client/src/location.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/src/location.ts b/packages/oidc-client/src/location.ts index 351d262ea..64125a3d7 100644 --- a/packages/oidc-client/src/location.ts +++ b/packages/oidc-client/src/location.ts @@ -9,7 +9,7 @@ export interface ILOidcLocation { export class OidcLocation implements ILOidcLocation { open(url:string) { - window.open(url, '_self'); + window.location.href = url; } reload() { From c8157ff629da85e8bf33c3ad6d6165fc53c2107a Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 15 Feb 2024 19:57:41 +0000 Subject: [PATCH 207/565] [skip ci] Update to version 7.18.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1a00550ef..f62dfb1ab 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.2", + "version": "7.18.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index e0ea72f76..da9ea0019 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.2'; +export default '7.18.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 858461961..80652dd27 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.2", + "version": "7.18.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index e0ea72f76..da9ea0019 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.2'; +export default '7.18.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index cb9ece617..31f4df8b8 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.2", + "version": "7.18.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 1d4be7725aee9197f4031dad902535315ce21021 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 15 Feb 2024 19:57:42 +0000 Subject: [PATCH 208/565] [skip ci] Generate changelog to version 7.18.3 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70407e7a0..ad105fd84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.18.2 +## 7.18.3 + +- [8eb75d3](https://github.com/AxaFrance/oidc-client/commit/8eb75d3f2036708d9c3067a2973a4d685d8b4923) - fix(oidc): logout continue to run before redirecting (#1301) (release), 2024-02-15 by *Guillaume Chervet* + + +## v7.18.2 - [77329ce](https://github.com/AxaFrance/oidc-client/commit/77329ce52a5fc7278ff35ccd13ca572ff7ebbf4d) - fix(oidc-service-worker): bad request on many token request at the same time (#1300) (release), 2024-02-15 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [3e0e554](https://github.com/AxaFrance/oidc-client/commit/3e0e5546ec756b4a9ddad695e4e2368c5721175f) - feat(service-worker): add to trusted type (#1142) (release), 2023-09-21 by *Guillaume Chervet* -## v7.5.1 - -- [60d9c4e](https://github.com/AxaFrance/oidc-client/commit/60d9c4e68622f81ecceaf480de21d4646ae909f1) - fix(oidc): clean link with service worker (#1141) (release), 2023-09-20 by *Guillaume Chervet* - - From b4e5ec834bdfedf8975b79086c2c0144f4e6e9b1 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 17 Feb 2024 15:51:25 +0100 Subject: [PATCH 209/565] fix(oidc-service-worker): set Bearer as default (release) --- .../oidc-client-service-worker/src/OidcServiceWorker.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index cb963cdf6..5363cc226 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -137,14 +137,14 @@ const handleFetch = async (event: FetchEvent) => { } else { const authorization = originalRequest.headers.get('authorization'); - if (!authorization ) { - throw new Error('No authorization header'); + let authenticationMode = "Bearer" + if (authorization ) { + authenticationMode = authorization.split(" ")[0]; } - const authentificationMode = authorization.split(" ")[0]; headers = { ...serializeHeaders(originalRequest.headers), authorization: - authentificationMode + ' ' + currentDatabaseForRequestAccessToken.tokens.access_token, + authenticationMode + ' ' + currentDatabaseForRequestAccessToken.tokens.access_token, }; } let init: RequestInit; From fff59c738c81419e66c6646ed1e5e5180cb4becc Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 17 Feb 2024 14:55:42 +0000 Subject: [PATCH 210/565] [skip ci] Update to version 7.18.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index f62dfb1ab..ac65d046b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.3", + "version": "7.18.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index da9ea0019..2c6c25543 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.3'; +export default '7.18.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 80652dd27..9599f1289 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.3", + "version": "7.18.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index da9ea0019..2c6c25543 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.3'; +export default '7.18.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 31f4df8b8..e2ffa5f50 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.3", + "version": "7.18.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 0db232e0d8b88f76feb8f631af4022e7334c9085 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 17 Feb 2024 14:55:43 +0000 Subject: [PATCH 211/565] [skip ci] Generate changelog to version 7.18.4 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad105fd84..6e37b74f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.18.3 +## 7.18.4 + +- [b4e5ec8](https://github.com/AxaFrance/oidc-client/commit/b4e5ec834bdfedf8975b79086c2c0144f4e6e9b1) - fix(oidc-service-worker): set Bearer as default (release), 2024-02-17 by *Guillaume Chervet* + + +## v7.18.3 - [8eb75d3](https://github.com/AxaFrance/oidc-client/commit/8eb75d3f2036708d9c3067a2973a4d685d8b4923) - fix(oidc): logout continue to run before redirecting (#1301) (release), 2024-02-15 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [8f24b11](https://github.com/AxaFrance/oidc-client/commit/8f24b119613fef5d7214826528bdb04c931a1986) - doc(faq): Update FAQ.md (#1151), 2023-10-13 by *Mateusz Popielarz* -## v7.6.0 - -- [3e0e554](https://github.com/AxaFrance/oidc-client/commit/3e0e5546ec756b4a9ddad695e4e2368c5721175f) - feat(service-worker): add to trusted type (#1142) (release), 2023-09-21 by *Guillaume Chervet* - - From 7a38d962b0e08837989a1d2affeb5e557dc09444 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 18 Feb 2024 15:23:53 +0100 Subject: [PATCH 212/565] fix(oidc): parse token with many _ or - (#1302) (release) --- .../src/utils/__tests__/tokens.spec.ts | 27 +++-- .../src/utils/tokens.ts | 2 +- packages/oidc-client/src/parseTokens.spec.ts | 101 ++++++++++-------- packages/oidc-client/src/parseTokens.ts | 2 +- 4 files changed, 79 insertions(+), 53 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index d4853fd9d..b35b6ba6d 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -30,12 +30,9 @@ describe('tokens', () => { }); }); - describe('extractTokenPayload', () => { - - it('parseJwtShouldExtractData', async () => { - const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" - const result = parseJwt(claimsPart); - expect(result).toStrictEqual({ + describe.each([ + ["eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0", + { "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", "scope": "openid email profile", "email_verified": true, @@ -43,8 +40,24 @@ describe('tokens', () => { "preferred_username": "testingcharacters@inventedmail.com", "given_name": "ƴǢÁìÇ", "family_name": "小名-ホルヘ" - }); + }], + [ + "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCI_IjoiYWE_In0", + { + "?": "aa?", + "iat": 1516239022, + "name": "John Doe", + "sub": "1234567890", + } + ] + ])('parseJwtShouldExtractData', (claimsPart, expectedResult) => { + it('should parseJwtShouldExtractData ', async () => { + const result = parseJwt(claimsPart); + expect(expectedResult).toStrictEqual(result); }); + }); + + describe('extractTokenPayload', () => { it('can extract token payload', () => { const result = extractTokenPayload( diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 90c8ff693..e21933e55 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -12,7 +12,7 @@ import { countLetter } from './strings'; export const parseJwt = (payload: string) => { return JSON.parse( - b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/')), + b64DecodeUnicode(payload.replaceAll(/-/g, '+').replaceAll(/_/g, '/')), ); } function b64DecodeUnicode(str: string) { diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 4d2c2e169..380f05d90 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -32,54 +32,67 @@ describe('ParseTokens test Suite', () => { }); }); - it('parseJwtShouldExtractData', async () => { - const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" - const result = parseJwt(claimsPart); - expect(result).toStrictEqual({ - "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", - "scope": "openid email profile", - "email_verified": true, - "name": "ƴǢÁìÇ 小名-ホルヘ", - "preferred_username": "testingcharacters@inventedmail.com", - "given_name": "ƴǢÁìÇ", - "family_name": "小名-ホルヘ" + describe.each([ + ["eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0", + { + "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", + "scope": "openid email profile", + "email_verified": true, + "name": "ƴǢÁìÇ 小名-ホルヘ", + "preferred_username": "testingcharacters@inventedmail.com", + "given_name": "ƴǢÁìÇ", + "family_name": "小名-ホルヘ" + }], + [ + "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCI_IjoiYWE_In0", + { + "?": "aa?", + "iat": 1516239022, + "name": "John Doe", + "sub": "1234567890", + } + ] + ])('parseJwtShouldExtractData', (claimsPart, expectedResult) => { + it('should parseJwtShouldExtractData ', async () => { + const result = parseJwt(claimsPart); + expect(expectedResult).toStrictEqual(result); }); }); - - const id_token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUwNWZkODljLTM4YzktNGI2Mi04ZjQ3LWI4MGQ0ZTNhYjYxNSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsInN1YiI6ImFkbWluIiwiYXVkIjoiM2FTbk5XUGxZQWQwOGVES3c1UUNpSWVMcWpIdHkxTTVzSGFzcDJDZWREcWYzbmJkZm8xUFo1cXhmbWoyaFhkUyIsImV4cCI6MTY5MDk4NzQ1NCwiYXV0aF90aW1lIjoxNjkwOTg2NTUxLCJpYXQiOjE2OTA5ODY1NTQsImFjciI6IjAiLCJhenAiOiIzYVNuTldQbFlBZDA4ZURLdzVRQ2lJZUxxakh0eTFNNXNIYXNwMkNlZERxZjNuYmRmbzFQWjVxeGZtajJoWGRTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGdyb3VwcyBvZmZsaW5lX2FjY2VzcyIsIm5iZiI6MTY5MDk4NjU1NCwianRpIjoiNjMiLCJub25jZSI6ImNpQkVVOTdaVmRWVSIsImdyb3VwcyI6WyJhZG1pbiJdLCJuYW1lIjoiQWRtaW5pc3RyYXRvciIsInVwZGF0ZWRfYXQiOjE2OTA5ODY1NDV9.2MUdtQR_QtzDY9BTMctG8C4uvg92DgMIUUoJed2cI7WTd5_VEPFW87esDQLw4snVdAJM1_Wf3wB88B2MXFDMCnMTNn0TMnzetRDiG3xlr2LL-geL5SNgwD0Y6RPK_aITjrC9uiQCTj3LPEENrBulNRZPURwaVon9WUVNuuBmMTKd7QKEuFN0zYDoRs0HnXo6WKnFy1rldLGh_JpA3PBUuXt4VMjfGQ7yYEuNn7MkFVDX6OnTffR8jTQp74hREvuRLFjYxfgfgu547X7yIcboOl81D0ZQlP-gfvBOeypZolRLScuqAA3fHBYvE0vCtOM6ObekfeeTDfms75csMLUuZtTR07x32xYC8vdoFsY0sRpMByTqlhsae9VX_rETJ7PIWEfruojzcj47WN9dG0K3pdPiJHEwZ1CKgZfU_cY0gtuAGaIcIjKL0txXCevaiIiIsrgSU_HTjNVybp4WHSAs3h6x0XLz4_91luCylsaoMQbwKOQNwAfr2L74jF6DOg-8DIPb-WClRQzaQtrkx_iv6FtqCB3ogFoZwi6xljdYUc2EHUmoAo-LXal-QAgUXGGzfFU2YOpxV3RyAbMGPm7PfkMVzDsDJwORJNhh38QQ6o88GgNnV28BT-d2G0n7okc0QC6o2IW0jpyCrI6v0hWOBUX2EqiJ5Wao-4LYZfCaRgU"; - const refresh_token ="DEsqDca7nDGSgT6tJPkCwbPy98B8VOC4AA55lOPs03G3hqhZ8WH08REBcwTZg1s0jZyVoA3iCXzm4PPJ096gjV7ZKYyN8vnFKw6P6KLV3tUI6mWFaSROoh1LipThFrkS"; - const access_token ="opqavdgHEYx8nhCdc3iByd1HD0jiYN30LevhJy4f5wIavINXKdh4lQ9C3kA49QF0OH0XeA02"; - describe.each([ - [{ - "access_token":access_token, - "token_type":"Bearer", - "expires_in":"900", // Here a string instead of a number - "refresh_token":refresh_token, - "id_token":id_token - }], - [{ - "access_token":access_token, - "token_type":"Bearer", - "expires_in":900, - "refresh_token":refresh_token, - "id_token":id_token - }], - [{ - "access_token":access_token, - "token_type":"Bearer", - "expires_in":900, - "expiresAt": 1609987454, // Here expiresAt that come from Service Worker - "refresh_token":refresh_token, - "id_token":id_token - }], - ])('getValidTokenAsync', (tokens) => { - it('should parseOriginalTokens', async () => { - // @ts-ignore - const result = parseOriginalTokens(tokens); - expect(typeof result.issuedAt).toEqual("number"); + const id_token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUwNWZkODljLTM4YzktNGI2Mi04ZjQ3LWI4MGQ0ZTNhYjYxNSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsInN1YiI6ImFkbWluIiwiYXVkIjoiM2FTbk5XUGxZQWQwOGVES3c1UUNpSWVMcWpIdHkxTTVzSGFzcDJDZWREcWYzbmJkZm8xUFo1cXhmbWoyaFhkUyIsImV4cCI6MTY5MDk4NzQ1NCwiYXV0aF90aW1lIjoxNjkwOTg2NTUxLCJpYXQiOjE2OTA5ODY1NTQsImFjciI6IjAiLCJhenAiOiIzYVNuTldQbFlBZDA4ZURLdzVRQ2lJZUxxakh0eTFNNXNIYXNwMkNlZERxZjNuYmRmbzFQWjVxeGZtajJoWGRTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGdyb3VwcyBvZmZsaW5lX2FjY2VzcyIsIm5iZiI6MTY5MDk4NjU1NCwianRpIjoiNjMiLCJub25jZSI6ImNpQkVVOTdaVmRWVSIsImdyb3VwcyI6WyJhZG1pbiJdLCJuYW1lIjoiQWRtaW5pc3RyYXRvciIsInVwZGF0ZWRfYXQiOjE2OTA5ODY1NDV9.2MUdtQR_QtzDY9BTMctG8C4uvg92DgMIUUoJed2cI7WTd5_VEPFW87esDQLw4snVdAJM1_Wf3wB88B2MXFDMCnMTNn0TMnzetRDiG3xlr2LL-geL5SNgwD0Y6RPK_aITjrC9uiQCTj3LPEENrBulNRZPURwaVon9WUVNuuBmMTKd7QKEuFN0zYDoRs0HnXo6WKnFy1rldLGh_JpA3PBUuXt4VMjfGQ7yYEuNn7MkFVDX6OnTffR8jTQp74hREvuRLFjYxfgfgu547X7yIcboOl81D0ZQlP-gfvBOeypZolRLScuqAA3fHBYvE0vCtOM6ObekfeeTDfms75csMLUuZtTR07x32xYC8vdoFsY0sRpMByTqlhsae9VX_rETJ7PIWEfruojzcj47WN9dG0K3pdPiJHEwZ1CKgZfU_cY0gtuAGaIcIjKL0txXCevaiIiIsrgSU_HTjNVybp4WHSAs3h6x0XLz4_91luCylsaoMQbwKOQNwAfr2L74jF6DOg-8DIPb-WClRQzaQtrkx_iv6FtqCB3ogFoZwi6xljdYUc2EHUmoAo-LXal-QAgUXGGzfFU2YOpxV3RyAbMGPm7PfkMVzDsDJwORJNhh38QQ6o88GgNnV28BT-d2G0n7okc0QC6o2IW0jpyCrI6v0hWOBUX2EqiJ5Wao-4LYZfCaRgU"; + const refresh_token = "DEsqDca7nDGSgT6tJPkCwbPy98B8VOC4AA55lOPs03G3hqhZ8WH08REBcwTZg1s0jZyVoA3iCXzm4PPJ096gjV7ZKYyN8vnFKw6P6KLV3tUI6mWFaSROoh1LipThFrkS"; + const access_token = "opqavdgHEYx8nhCdc3iByd1HD0jiYN30LevhJy4f5wIavINXKdh4lQ9C3kA49QF0OH0XeA02"; + describe.each([ + [{ + "access_token": access_token, + "token_type": "Bearer", + "expires_in": "900", // Here a string instead of a number + "refresh_token": refresh_token, + "id_token": id_token + }], + [{ + "access_token": access_token, + "token_type": "Bearer", + "expires_in": 900, + "refresh_token": refresh_token, + "id_token": id_token + }], + [{ + "access_token": access_token, + "token_type": "Bearer", + "expires_in": 900, + "expiresAt": 1609987454, // Here expiresAt that come from Service Worker + "refresh_token": refresh_token, + "id_token": id_token + }], + ])('getValidTokenAsync', (tokens) => { + it('should parseOriginalTokens', async () => { + // @ts-ignore + const result = parseOriginalTokens(tokens); + expect(typeof result.issuedAt).toEqual("number"); + }); }); - }); + const idTokenPayload = {iss: "toto", exp: currentTimeUnixSecond +900, iat: currentTimeUnixSecond -900, nonce: "nonce"}; const oidcServerConfiguration = {issuer:"toto"}; diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index 0d745320d..eec9e2ba1 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -2,7 +2,7 @@ import {sleepAsync} from './initWorker.js'; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); -export const parseJwt = (payload:string) => JSON.parse(b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/'))); +export const parseJwt = (payload:string) => JSON.parse(b64DecodeUnicode(payload.replaceAll(/-/g, '+').replaceAll(/_/g, '/'))); const extractTokenPayload = (token:string) => { try { From ef5c88d7d4bc76bfb4e4a529e6532462ffe59300 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 18 Feb 2024 14:26:27 +0000 Subject: [PATCH 213/565] [skip ci] Update to version 7.18.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ac65d046b..e62812372 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.4", + "version": "7.18.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 2c6c25543..0f26aa82b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.4'; +export default '7.18.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 9599f1289..b9fe0e43c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.4", + "version": "7.18.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 2c6c25543..0f26aa82b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.4'; +export default '7.18.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e2ffa5f50..fae25626d 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.4", + "version": "7.18.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3a145799098bbc64f7619a217f9854795becc50b Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 18 Feb 2024 14:26:29 +0000 Subject: [PATCH 214/565] [skip ci] Generate changelog to version 7.18.5 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e37b74f6..5f741c9d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.18.4 +## 7.18.5 + +- [7a38d96](https://github.com/AxaFrance/oidc-client/commit/7a38d962b0e08837989a1d2affeb5e557dc09444) - fix(oidc): parse token with many _ or - (#1302) (release), 2024-02-18 by *Guillaume Chervet* + + +## v7.18.4 - [b4e5ec8](https://github.com/AxaFrance/oidc-client/commit/b4e5ec834bdfedf8975b79086c2c0144f4e6e9b1) - fix(oidc-service-worker): set Bearer as default (release), 2024-02-17 by *Guillaume Chervet* @@ -312,9 +317,3 @@ - [07d266b](https://github.com/AxaFrance/oidc-client/commit/07d266b32b275038176a407036a338624d2bed47) - build(npm): bump next from 13.4.12 to 13.5.6 (#1158), 2023-10-25 by *dependabot[bot]* -## v7.7.0 - -- [ec5ba27](https://github.com/AxaFrance/oidc-client/commit/ec5ba27f463c513e4d476621f684d0dcccd34470) - feat(oidc): make location injectable (release) (#1155), 2023-10-19 by *Guillaume Chervet* -- [8f24b11](https://github.com/AxaFrance/oidc-client/commit/8f24b119613fef5d7214826528bdb04c931a1986) - doc(faq): Update FAQ.md (#1151), 2023-10-13 by *Mateusz Popielarz* - - From 4a5887f5e7b3d739d709c7bb4fb7a007ccb051a1 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 19 Feb 2024 20:55:27 +0100 Subject: [PATCH 215/565] fix(oidc-service-worker): remove sw unecessary log --- packages/oidc-client-service-worker/src/OidcServiceWorker.ts | 3 --- packages/oidc-client/src/initWorker.ts | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 5363cc226..26eef6755 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -347,7 +347,6 @@ const handleMessage = (event: ExtendableMessageEvent) => { trustedDomains[configurationName] = []; } } - console.log('[OidcServiceWorker] handleMessage', data.type); switch (data.type) { case 'clear': currentDatabase.tokens = null; @@ -488,8 +487,6 @@ const handleMessage = (event: ExtendableMessageEvent) => { } default: { return; - // currentDatabase.items = { ...data.data }; - // port.postMessage({ configurationName }); } } }; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 8a5d7d9ab..a48ce4011 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -173,7 +173,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { const setDemonstratingProofOfPossessionJwkAsync = async (demonstratingProofOfPossessionJwk:JsonWebKey) => { const demonstratingProofOfPossessionJwkJson = JSON.stringify(demonstratingProofOfPossessionJwk); - sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionJwk', data: { demonstratingProofOfPossessionJwkJson }, configurationName }); + await sendMessageAsync(registration)({ type: 'setDemonstratingProofOfPossessionJwk', data: { demonstratingProofOfPossessionJwkJson }, configurationName }); }; const getDemonstratingProofOfPossessionJwkAsync = async () => { From 8f3940c42ad62264abfd61690777b602e0bdc31a Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 22 Feb 2024 21:36:01 +0100 Subject: [PATCH 216/565] feat(oidc): dpop inside serviceworker (#1306) (release) * feat(oidc): dpop inside serviceworker * test * update * update * update * update --- .../public/OidcTrustedDomains.js | 4 +- .../public/staticwebapp.config.json | 9 + examples/react-oidc-demo/src/Home.tsx | 8 +- examples/react-oidc-demo/vite.config.js | 2 +- .../src/OidcServiceWorker.ts | 65 +++-- .../oidc-client-service-worker/src/crypto.ts | 20 ++ .../oidc-client-service-worker/src/dpop.ts | 22 ++ .../oidc-client-service-worker/src/jwt.ts | 267 ++++++++++++++++++ .../oidc-client-service-worker/src/types.ts | 12 + .../src/utils/__tests__/domains.spec.ts | 1 + .../src/utils/__tests__/testHelper.ts | 2 + .../src/utils/__tests__/tokens.spec.ts | 2 +- .../src/utils/domains.ts | 2 + .../src/utils/tokens.ts | 17 +- packages/oidc-client/README.md | 26 +- packages/oidc-client/src/jwt.ts | 26 +- packages/oidc-client/src/login.ts | 6 +- packages/oidc-client/src/oidc.ts | 18 +- packages/react-oidc/README.md | 24 +- 19 files changed, 474 insertions(+), 59 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/crypto.ts create mode 100644 packages/oidc-client-service-worker/src/dpop.ts create mode 100644 packages/oidc-client-service-worker/src/jwt.ts diff --git a/examples/react-oidc-demo/public/OidcTrustedDomains.js b/examples/react-oidc-demo/public/OidcTrustedDomains.js index 416c4626a..e7b4ee1c1 100644 --- a/examples/react-oidc-demo/public/OidcTrustedDomains.js +++ b/examples/react-oidc-demo/public/OidcTrustedDomains.js @@ -22,5 +22,7 @@ trustedDomains.config_separate_oidc_access_token_domains = { accessTokenDomains: ["https://myapi"] }; -trustedDomains.config_with_dpop = { domains: ["https://demo.duendesoftware.com"], showAccessToken: true }; +trustedDomains.config_with_dpop = { + domains: ["https://demo.duendesoftware.com"], + demonstratingProofOfPossession: true }; //# sourceMappingURL=OidcTrustedDomains.js.map \ No newline at end of file diff --git a/examples/react-oidc-demo/public/staticwebapp.config.json b/examples/react-oidc-demo/public/staticwebapp.config.json index ba338eae6..5877917f4 100644 --- a/examples/react-oidc-demo/public/staticwebapp.config.json +++ b/examples/react-oidc-demo/public/staticwebapp.config.json @@ -2,5 +2,14 @@ "navigationFallback": { "rewrite": "index.html", "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] + }, + "globalHeaders": { + "content-security-policy": "script-src 'self'", + "Access-Control-Allow-Origin": "*", + "X-Frame-Options": "SAMEORIGIN", + "X-Permitted-Cross-Domain-Policies": "none", + "Referrer-Policy":"no-referrer", + "X-Content-Type-Options": "nosniff", + "Permissions-Policy": "autoplay=()" } } \ No newline at end of file diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index 118e9b7ee..b8c035158 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -3,12 +3,12 @@ import React, {useEffect} from 'react'; import {useNavigate} from "react-router-dom"; -/*const createIframeHack =() => { + const createIframeHack =() => { const iframe = document.createElement('iframe'); const html = 'Foo'; iframe.srcdoc = html; document.body.appendChild(iframe); -}*/ +} export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); @@ -18,9 +18,9 @@ export const Home = () => { navigate("/profile"); }; - /*useEffect(() => { + useEffect(() => { createIframeHack(); - }, []);*/ + }, []); return ( diff --git a/examples/react-oidc-demo/vite.config.js b/examples/react-oidc-demo/vite.config.js index 9fd73d00c..197494e22 100644 --- a/examples/react-oidc-demo/vite.config.js +++ b/examples/react-oidc-demo/vite.config.js @@ -12,7 +12,7 @@ export default defineConfig({ }, server: { headers: { - // "Content-Security-Policy": "script-src 'self' 'unsafe-inline';", + //"Content-Security-Policy": "script-src 'unsafe-inline' https://www.google-analitics.com;", }, }, }); diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 26eef6755..22271eb52 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -17,6 +17,9 @@ import { import {extractConfigurationNameFromCodeVerifier, replaceCodeVerifier} from './utils/codeVerifier'; import { normalizeUrl } from './utils/normalizeUrl'; import version from './version'; +import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import {getDpopConfiguration} from "./dpop"; +import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; // @ts-ignore if (typeof trustedTypes !== 'undefined' && typeof trustedTypes.createPolicy == 'function') { @@ -92,6 +95,19 @@ const keepAliveAsync = async (event: FetchEvent) => { return response; }; +async function generateDpopAsync(originalRequest: Request, currentDatabase:OidcConfig|null, url: string, extrasClaims={} ) { + const headersExtras = serializeHeaders(originalRequest.headers); + if (currentDatabase && currentDatabase.demonstratingProofOfPossessionConfiguration && currentDatabase.demonstratingProofOfPossessionJwkJson) { + const dpopConfiguration = currentDatabase.demonstratingProofOfPossessionConfiguration; + const jwk = currentDatabase.demonstratingProofOfPossessionJwkJson; + headersExtras['dpop'] = await generateJwtDemonstratingProofOfPossessionAsync(self)(dpopConfiguration)(jwk, 'POST', url, extrasClaims); + if(currentDatabase.demonstratingProofOfPossessionNonce != null) { + headersExtras['nonce'] = currentDatabase.demonstratingProofOfPossessionNonce; + } + } + return headersExtras; +} + const handleFetch = async (event: FetchEvent) => { const originalRequest = event.request; const url = normalizeUrl(originalRequest.url); @@ -176,16 +192,18 @@ const handleFetch = async (event: FetchEvent) => { if (numberDatabase > 0) { const maPromesse = new Promise((resolve, reject) => { const clonedRequest = originalRequest.clone(); - const response = clonedRequest.text().then((actualBody) => { + const response = clonedRequest.text().then(async (actualBody) => { if ( actualBody.includes(TOKEN.REFRESH_TOKEN) || actualBody.includes(TOKEN.ACCESS_TOKEN) ) { + let headers = serializeHeaders(originalRequest.headers); let newBody = actualBody; for (let i = 0; i < numberDatabase; i++) { const currentDb = currentDatabases[i]; - if (currentDb && currentDb.tokens != null) { + const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(currentDb.tokens.access_token),}; + headers = await generateDpopAsync(originalRequest, currentDb, url, claimsExtras); const keyRefreshToken = TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName; if (actualBody.includes(keyRefreshToken)) { @@ -194,6 +212,7 @@ const handleFetch = async (event: FetchEvent) => { encodeURIComponent(currentDb.tokens.refresh_token as string), ); currentDatabase = currentDb; + break; } const keyAccessToken = @@ -208,11 +227,12 @@ const handleFetch = async (event: FetchEvent) => { } } } + const fetchPromise = fetch(originalRequest, { body: newBody, method: clonedRequest.method, headers: { - ...serializeHeaders(originalRequest.headers), + ...headers, }, mode: clonedRequest.mode, cache: clonedRequest.cache, @@ -254,12 +274,14 @@ const handleFetch = async (event: FetchEvent) => { currentDatabase.codeVerifier, ); } - + + const headersExtras = await generateDpopAsync(originalRequest, currentDatabase, url); + return fetch(originalRequest, { body: newBody, method: clonedRequest.method, headers: { - ...serializeHeaders(originalRequest.headers), + ...headersExtras, }, mode: clonedRequest.mode, cache: clonedRequest.cache, @@ -301,7 +323,7 @@ const handleFetch = async (event: FetchEvent) => { } }; -const handleMessage = (event: ExtendableMessageEvent) => { +const handleMessage = async (event: ExtendableMessageEvent) => { const port = event.ports[0]; const data = event.data as MessageEventData; if (event.data.type === 'claim') { @@ -340,6 +362,7 @@ const handleMessage = (event: ExtendableMessageEvent) => { convertAllRequestsToCorsExceptNavigate ?? false, demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, + demonstratingProofOfPossessionConfiguration: null, }; currentDatabase = database[configurationName]; @@ -347,11 +370,15 @@ const handleMessage = (event: ExtendableMessageEvent) => { trustedDomains[configurationName] = []; } } + switch (data.type) { case 'clear': currentDatabase.tokens = null; currentDatabase.state = null; currentDatabase.codeVerifier = null; + currentDatabase.demonstratingProofOfPossessionNonce = null; + currentDatabase.demonstratingProofOfPossessionJwkJson = null; + currentDatabase.demonstratingProofOfPossessionConfiguration = null; currentDatabase.status = data.data.status; port.postMessage({ configurationName }); return; @@ -372,6 +399,17 @@ const handleMessage = (event: ExtendableMessageEvent) => { currentDatabase.oidcServerConfiguration = oidcServerConfiguration; currentDatabase.oidcConfiguration = data.data.oidcConfiguration; + if(currentDatabase.demonstratingProofOfPossessionConfiguration == null ){ + const demonstratingProofOfPossessionConfiguration = getDpopConfiguration(trustedDomains[configurationName]); + if(demonstratingProofOfPossessionConfiguration != null){ + if(currentDatabase.oidcConfiguration.demonstrating_proof_of_possession){ + console.warn("In service worker, demonstrating_proof_of_possession must be configured from trustedDomains file") + } + currentDatabase.demonstratingProofOfPossessionConfiguration = demonstratingProofOfPossessionConfiguration; + currentDatabase.demonstratingProofOfPossessionJwkJson = await generateJwkAsync(self)(demonstratingProofOfPossessionConfiguration.generateKeyAlgorithm); + } + } + if (!currentDatabase.tokens) { port.postMessage({ tokens: null, @@ -421,21 +459,6 @@ const handleMessage = (event: ExtendableMessageEvent) => { }); return; } - case 'setDemonstratingProofOfPossessionJwk': { - currentDatabase.demonstratingProofOfPossessionJwkJson = - data.data.demonstratingProofOfPossessionJwkJson; - port.postMessage({ configurationName }); - return; - } - case 'getDemonstratingProofOfPossessionJwk': { - const demonstratingProofOfPossessionJwkJson = - currentDatabase.demonstratingProofOfPossessionJwkJson; - port.postMessage({ - configurationName, - demonstratingProofOfPossessionJwkJson, - }); - return; - } case 'setState': { currentDatabase.state = data.data.state; port.postMessage({ configurationName }); diff --git a/packages/oidc-client-service-worker/src/crypto.ts b/packages/oidc-client-service-worker/src/crypto.ts new file mode 100644 index 000000000..e68d89c9d --- /dev/null +++ b/packages/oidc-client-service-worker/src/crypto.ts @@ -0,0 +1,20 @@ +import {uint8ToUrlBase64} from "./jwt"; + + +export function textEncodeLite(str: string) { + const buf = new ArrayBuffer(str.length); + const bufView = new Uint8Array(buf); + + for (let i = 0; i < str.length; i++) { + bufView[i] = str.charCodeAt(i); + } + return bufView; +} + +export function base64urlOfHashOfASCIIEncodingAsync(code: string):Promise { + return new Promise((resolve, reject) => { + crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => { + return resolve(uint8ToUrlBase64(new Uint8Array(buffer))); + }, error => reject(error)); + }); +} diff --git a/packages/oidc-client-service-worker/src/dpop.ts b/packages/oidc-client-service-worker/src/dpop.ts new file mode 100644 index 000000000..dfa516d1e --- /dev/null +++ b/packages/oidc-client-service-worker/src/dpop.ts @@ -0,0 +1,22 @@ +import {Domain, DomainDetails} from "./types.js"; +import {defaultDemonstratingProofOfPossessionConfiguration} from "./jwt"; + +const isDpop= (trustedDomain: Domain[] | DomainDetails) : boolean => { + if (Array.isArray(trustedDomain)) { + return false; + } + return trustedDomain.demonstratingProofOfPossession ?? false; +} + +export const getDpopConfiguration = (trustedDomain: Domain[] | DomainDetails) => { + + if(!isDpop(trustedDomain)) { + return null; + } + + if (Array.isArray(trustedDomain)) { + return null; + } + + return trustedDomain.demonstratingProofOfPossessionConfiguration ?? defaultDemonstratingProofOfPossessionConfiguration; +} \ No newline at end of file diff --git a/packages/oidc-client-service-worker/src/jwt.ts b/packages/oidc-client-service-worker/src/jwt.ts new file mode 100644 index 000000000..ef7665f19 --- /dev/null +++ b/packages/oidc-client-service-worker/src/jwt.ts @@ -0,0 +1,267 @@ +// code base on https://coolaj86.com/articles/sign-jwt-webcrypto-vanilla-js/ + +// String (UCS-2) to Uint8Array +// +// because... JavaScript, Strings, and Buffers +// @ts-ignore +import {DemonstratingProofOfPossessionConfiguration} from "./types"; + +function strToUint8(str:string) { + return new TextEncoder().encode(str); +} + +// Binary String to URL-Safe Base64 +// +// btoa (Binary-to-Ascii) means "binary string" to base64 +// @ts-ignore +function binToUrlBase64(bin) { + return btoa(bin) + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+/g, ''); +} + +// UTF-8 to Binary String +// +// Because JavaScript has a strange relationship with strings +// https://coolaj86.com/articles/base64-unicode-utf-8-javascript-and-you/ +// @ts-ignore +function utf8ToBinaryString(str) { + const escstr = encodeURIComponent(str); + // replaces any uri escape sequence, such as %0A, + // with binary escape, such as 0x0A + // @ts-ignore + return escstr.replace(/%([0-9A-F]{2})/g, function (match:string, p1) { + return String.fromCharCode(parseInt(p1, 16)); + }); +} + +// Uint8Array to URL Safe Base64 +// +// the shortest distant between two encodings... binary string +// @ts-ignore +export const uint8ToUrlBase64 =(uint8: Uint8Array) => { + let bin = ''; + // @ts-ignore + uint8.forEach(function(code) { + bin += String.fromCharCode(code); + }); + return binToUrlBase64(bin); +} + +// UCS-2 String to URL-Safe Base64 +// +// btoa doesn't work on UTF-8 strings +// @ts-ignore +function strToUrlBase64(str) { + return binToUrlBase64(utf8ToBinaryString(str)); +} + +export const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' +} + + +// @ts-ignore +const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration, jwtHeaderType= 'dpop+jwt') => { + // Make a shallow copy of the key + // (to set ext if it wasn't already set) + jwk = Object.assign({}, jwk); + + // The headers should probably be empty + headers.typ = jwtHeaderType; + headers.alg = demonstratingProofOfPossessionConfiguration.jwtHeaderAlgorithm; + switch (headers.alg) { + case 'ES256': //if (!headers.kid) { + // alternate: see thumbprint function below + headers.jwk = {kty: jwk.kty, crv: jwk.crv, x: jwk.x, y: jwk.y}; + //} + break; + case 'RS256': + headers.jwk = {kty: jwk.kty, n: jwk.n, e: jwk.e, kid: headers.kid}; + break; + default: + throw new Error('Unknown or not implemented JWS algorithm'); + } + + const jws = { + // @ts-ignore + // JWT "headers" really means JWS "protected headers" + protected: strToUrlBase64(JSON.stringify(headers)), + // @ts-ignore + // JWT "claims" are really a JSON-defined JWS "payload" + payload: strToUrlBase64(JSON.stringify(claims)) + }; + + // To import as EC (ECDSA, P-256, SHA-256, ES256) + const keyType = demonstratingProofOfPossessionConfiguration.importKeyAlgorithm; + + // To make re-exportable as JSON (or DER/PEM) + const exportable = true; + + // Import as a private key that isn't black-listed from signing + const privileges = ['sign']; + + // Actually do the import, which comes out as an abstract key type + // @ts-ignore + const privateKey = await w.crypto.subtle.importKey('jwk', jwk, keyType, exportable, privileges); + // Convert UTF-8 to Uint8Array ArrayBuffer + // @ts-ignore + const data = strToUint8(`${jws.protected}.${jws.payload}`); + + // The signature and hash should match the bit-entropy of the key + // https://tools.ietf.org/html/rfc7518#section-3 + const signatureType = demonstratingProofOfPossessionConfiguration.signAlgorithm; + + const signature = await w.crypto.subtle.sign(signatureType, privateKey, data); + // returns an ArrayBuffer containing a JOSE (not X509) signature, + // which must be converted to Uint8 to be useful + // @ts-ignore + jws.signature = uint8ToUrlBase64(new Uint8Array(signature)); + // JWT is just a "compressed", "protected" JWS + // @ts-ignore + return `${jws.protected}.${jws.payload}.${jws.signature}`; +}; + +export var JWT = {sign}; + + +// @ts-ignore +const generate = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { + const keyType = generateKeyAlgorithm; + const exportable = true; + const privileges = ['sign', 'verify']; + // @ts-ignore + const key = await w.crypto.subtle.generateKey(keyType, exportable, privileges); + // returns an abstract and opaque WebCrypto object, + // which in most cases you'll want to export as JSON to be able to save + return await w.crypto.subtle.exportKey('jwk', key.privateKey); +}; + +// Create a Public Key from a Private Key +// +// chops off the private parts +// @ts-ignore +const neuter = jwk => { + const copy = Object.assign({}, jwk); + delete copy.d; + copy.key_ops = ['verify']; + return copy; +}; + +const EC = { + generate, + neuter +}; +// @ts-ignore +const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) => { + let sortedPub; + // lexigraphically sorted, no spaces + switch (jwk.kty) { + case 'EC': + sortedPub = '{"crv":"CRV","kty":"EC","x":"X","y":"Y"}' + .replace('CRV', jwk.crv) + .replace('X', jwk.x) + .replace('Y', jwk.y); + break; + case 'RSA': + sortedPub = '{"e":"E","kty":"RSA","n":"N"}' + .replace('E', jwk.e) + .replace('N', jwk.n); + break; + default: + throw new Error('Unknown or not implemented JWK type'); + } + // The hash should match the size of the key, + // but we're only dealing with P-256 + const hash = await w.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); + return uint8ToUrlBase64(new Uint8Array(hash)); +} + +export var JWK = {thumbprint}; + +export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { + // @ts-ignore + const jwk = await EC.generate(w)(generateKeyAlgorithm); + // console.info('Private Key:', JSON.stringify(jwk)); + // @ts-ignore + // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); + return jwk; +} + +export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk:any, method = 'POST', url: string, extrasClaims={}) => { + + const claims = { + // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept + jti: btoa(guid()), + htm: method, + htu: url, + iat: Math.round(Date.now() / 1000), + ...extrasClaims, + }; + // @ts-ignore + const kid = await JWK.thumbprint(w)(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); + // @ts-ignore + const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) + // console.info('JWT:', jwt); + return jwt; +} + +const guid = () => { + // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or + // pseudo-random numbers. + // The algorithm is as follows: + // Set the two most significant bits (bits 6 and 7) of the + // clock_seq_hi_and_reserved to zero and one, respectively. + // Set the four most significant bits (bits 12 through 15) of the + // time_hi_and_version field to the 4-bit version number from + // Section 4.1.3. Version4 + // Set all the other bits to randomly (or pseudo-randomly) chosen + // values. + // UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node + // time-low = 4hexOctet + // time-mid = 2hexOctet + // time-high-and-version = 2hexOctet + // clock-seq-and-reserved = hexOctet: + // clock-seq-low = hexOctet + // node = 6hexOctet + // Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + // y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 + // y values are 8, 9, A, B + const guidHolder = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; + const hex = '0123456789abcdef'; + let r = 0; + let guidResponse = ""; + for (let i = 0; i < 36; i++) { + if (guidHolder[i] !== '-' && guidHolder[i] !== '4') { + // each x and y needs to be random + r = Math.random() * 16 | 0; + } + + if (guidHolder[i] === 'x') { + guidResponse += hex[r]; + } else if (guidHolder[i] === 'y') { + // clock-seq-and-reserved first hex is filtered and remaining hex values are random + r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? + r |= 0x8; // set pos 3 to 1 as 1??? + guidResponse += hex[r]; + } else { + guidResponse += guidHolder[i]; + } + } + + return guidResponse; +}; + + diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index d669b0b96..ef3244671 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -5,6 +5,16 @@ export type DomainDetails = { showAccessToken: boolean; convertAllRequestsToCorsExceptNavigate?: boolean, setAccessTokenToNavigateRequests?: boolean, + demonstratingProofOfPossession?:boolean; + demonstratingProofOfPossessionConfiguration?: DemonstratingProofOfPossessionConfiguration; +} + +export interface DemonstratingProofOfPossessionConfiguration { + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, + digestAlgorithm: AlgorithmIdentifier, + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, + jwtHeaderAlgorithm: string } export type Domain = string | RegExp; @@ -23,6 +33,7 @@ export type OidcServerConfiguration = { export type OidcConfiguration = { token_renew_mode: string; + demonstrating_proof_of_possession: boolean; } // Uncertain why the Headers interface in lib.webworker.d.ts does not have a keys() function, so extending @@ -57,6 +68,7 @@ export type Nonce = { } | null; export type OidcConfig = { + demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration | null; configurationName: string; tokens: Tokens | null; status: Status; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 3ec9cc4bd..f2ab1e8fe 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -53,6 +53,7 @@ describe('domains', () => { setAccessTokenToNavigateRequests: true, demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, + demonstratingProofOfPossessionConfiguration: null, }, }; }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 39ce16af3..6e30e61e2 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -96,6 +96,7 @@ class TokenBuilder { class OidcConfigurationBuilder { private oidcConfiguration: OidcConfiguration = { token_renew_mode: 'offline', + demonstrating_proof_of_possession: false, }; public withTokenRenewMode( @@ -127,6 +128,7 @@ class OidcConfigBuilder { setAccessTokenToNavigateRequests: true, demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, + demonstratingProofOfPossessionConfiguration: null, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index b35b6ba6d..72bf460a9 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -125,7 +125,7 @@ describe('tokens', () => { // @ts-ignore delete token.idTokenPayload; const oidcConfiguration = new OidcConfigBuilder() - .withOidcConfiguration({token_renew_mode: "access_token_invalid"}) + .withOidcConfiguration({token_renew_mode: "access_token_invalid", demonstrating_proof_of_possession: false}) .withOidcServerConfiguration({issuer: "", authorizationEndpoint:"", revocationEndpoint:"", diff --git a/packages/oidc-client-service-worker/src/utils/domains.ts b/packages/oidc-client-service-worker/src/utils/domains.ts index d811b2ea3..80533dc8c 100644 --- a/packages/oidc-client-service-worker/src/utils/domains.ts +++ b/packages/oidc-client-service-worker/src/utils/domains.ts @@ -36,6 +36,8 @@ export const getDomains = ( return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? []; }; + + export const getCurrentDatabaseDomain = ( database: Database, url: string, diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index e21933e55..67c7296c5 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -1,5 +1,5 @@ /* eslint-disable simple-import-sort/exports */ -import { TOKEN, TokenRenewMode } from '../constants'; +import {TOKEN, TokenRenewMode} from '../constants'; import { AccessTokenPayload, IdTokenPayload, @@ -8,7 +8,7 @@ import { OidcServerConfiguration, Tokens } from '../types'; -import { countLetter } from './strings'; +import {countLetter} from './strings'; export const parseJwt = (payload: string) => { return JSON.parse( @@ -221,16 +221,27 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu return secureTokens; } +const demonstratingProofOfPossessionNonceResponseHeader = "DPoP-Nonce"; function hideTokens(currentDatabaseElement: OidcConfig) { const configurationName = currentDatabaseElement.configurationName; return (response: Response) => { if (response.status !== 200) { return response; } + const newHeaders = new Headers(response.headers); + if( response.headers.has(demonstratingProofOfPossessionNonceResponseHeader)){ + currentDatabaseElement.demonstratingProofOfPossessionNonce = response.headers.get(demonstratingProofOfPossessionNonceResponseHeader); + newHeaders.delete(demonstratingProofOfPossessionNonceResponseHeader); + } + return response.json().then((tokens: Tokens) => { const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName); const body = JSON.stringify(secureTokens); - return new Response(body, response); + return new Response(body, { + status: response.status, + statusText: response.statusText, + headers: newHeaders + }); }); }; } diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 2cc14490b..be012d1a7 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -94,10 +94,32 @@ const trustedDomains = { trustedDomains.config_show_access_token = { oidcDomains :["https://demo.duendesoftware.com"], accessTokenDomains : ["https://www.myapi.com/users"], - showAccessToken: true, + showAccessToken: false, // convertAllRequestsToCorsExceptNavigate: false, // default value is false // setAccessTokenToNavigateRequests: true, // default value is true }; + +// DPoP (Demonstrating Proof of Possession) will be activated for the following domains +trustedDomains.config_with_dpop = { + domains: ["https://demo.duendesoftware.com"], + demonstratingProofOfPossession: true + // Optional, more details bellow + /*demonstratingProofOfPossessionConfiguration: { + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' + }*/ +}; + ``` The code of the demo : @@ -113,7 +135,7 @@ export const configuration = { authority: 'https://demo.duendesoftware.com', service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode service_worker_only: false, - demonstrating_proof_of_possession: false, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) + demonstrating_proof_of_possession: false, }; const href = window.location.href; diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index f65ec7b7e..4aadb41fe 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -73,7 +73,7 @@ export const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingPr // @ts-ignore -const sign = async (jwk, headers, claims, demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration, jwtHeaderType= 'dpop+jwt') => { +const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration, jwtHeaderType= 'dpop+jwt') => { // Make a shallow copy of the key // (to set ext if it wasn't already set) jwk = Object.assign({}, jwk); @@ -114,7 +114,7 @@ const sign = async (jwk, headers, claims, demonstratingProofOfPossessionConfigur // Actually do the import, which comes out as an abstract key type // @ts-ignore - const privateKey = await window.crypto.subtle.importKey('jwk', jwk, keyType, exportable, privileges); + const privateKey = await w.crypto.subtle.importKey('jwk', jwk, keyType, exportable, privileges); // Convert UTF-8 to Uint8Array ArrayBuffer // @ts-ignore const data = strToUint8(`${jws.protected}.${jws.payload}`); @@ -123,7 +123,7 @@ const sign = async (jwk, headers, claims, demonstratingProofOfPossessionConfigur // https://tools.ietf.org/html/rfc7518#section-3 const signatureType = demonstratingProofOfPossessionConfiguration.signAlgorithm; - const signature = await window.crypto.subtle.sign(signatureType, privateKey, data); + const signature = await w.crypto.subtle.sign(signatureType, privateKey, data); // returns an ArrayBuffer containing a JOSE (not X509) signature, // which must be converted to Uint8 to be useful // @ts-ignore @@ -137,15 +137,15 @@ export var JWT = {sign}; // @ts-ignore -const generate = async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { +const generate = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { const keyType = generateKeyAlgorithm; const exportable = true; const privileges = ['sign', 'verify']; // @ts-ignore - const key = await window.crypto.subtle.generateKey(keyType, exportable, privileges); + const key = await w.crypto.subtle.generateKey(keyType, exportable, privileges); // returns an abstract and opaque WebCrypto object, // which in most cases you'll want to export as JSON to be able to save - return await window.crypto.subtle.exportKey('jwk', key.privateKey); + return await w.crypto.subtle.exportKey('jwk', key.privateKey); }; // Create a Public Key from a Private Key @@ -164,7 +164,7 @@ const EC = { neuter }; // @ts-ignore -const thumbprint = async (jwk, digestAlgorithm: AlgorithmIdentifier) => { +const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) => { let sortedPub; // lexigraphically sorted, no spaces switch (jwk.kty) { @@ -184,22 +184,22 @@ const thumbprint = async (jwk, digestAlgorithm: AlgorithmIdentifier) => { } // The hash should match the size of the key, // but we're only dealing with P-256 - const hash = await window.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); + const hash = await w.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); return uint8ToUrlBase64(new Uint8Array(hash)); } export var JWK = {thumbprint}; -export const generateJwkAsync = async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { +export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { // @ts-ignore - const jwk = await EC.generate(generateKeyAlgorithm); + const jwk = await EC.generate(w)(generateKeyAlgorithm); // console.info('Private Key:', JSON.stringify(jwk)); // @ts-ignore // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); return jwk; } -export const generateJwtDemonstratingProofOfPossessionAsync = (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk, method = 'POST', url: string, extrasClaims={}) => { +export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk, method = 'POST', url: string, extrasClaims={}) => { const claims = { // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept @@ -210,9 +210,9 @@ export const generateJwtDemonstratingProofOfPossessionAsync = (demonstratingProo ...extrasClaims, }; // @ts-ignore - const kid = await JWK.thumbprint(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); + const kid = await JWK.thumbprint(w)(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); // @ts-ignore - const jwt = await JWT.sign(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) + const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) // console.info('JWT:', jwt); return jwt; } diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 473c14055..7f37919bb 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -149,14 +149,14 @@ export const loginCallbackAsync = (oidc:Oidc) => async (isSilentSignin = false) const url = oidcServerConfiguration.tokenEndpoint; const headersExtras = {}; if(configuration.demonstrating_proof_of_possession) { - const jwk = await generateJwkAsync(configuration.demonstrating_proof_of_possession_configuration.generateKeyAlgorithm); if (serviceWorker) { - await serviceWorker.setDemonstratingProofOfPossessionJwkAsync(jwk); + headersExtras['DPoP'] = `DPOP_SECURED_BY_OIDC_SERVICE_WORKER_${oidc.configurationName}`; } else { + const jwk = await generateJwkAsync(window)(configuration.demonstrating_proof_of_possession_configuration.generateKeyAlgorithm); const session = initSession(oidc.configurationName, configuration.storage); await session.setDemonstratingProofOfPossessionJwkAsync(jwk); + headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(window)(configuration.demonstrating_proof_of_possession_configuration)(jwk, 'POST', url); } - headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(configuration.demonstrating_proof_of_possession_configuration)(jwk, 'POST', url); } const tokenResponse = await performFirstTokenRequestAsync(storage)(url, diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index afcc232bf..f2eff47fd 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -300,21 +300,21 @@ Please checkout that you are using OIDC hook inside a = null; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 00c30601b..1fee9a95f 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -98,6 +98,28 @@ trustedDomains.config_show_access_token = { // setAccessTokenToNavigateRequests: true, // default value is true }; +// DPoP (Demonstrating Proof of Possession) will be activated for the following domains +trustedDomains.config_with_dpop = { + domains: ["https://demo.duendesoftware.com"], + demonstratingProofOfPossession: true + // Optional, more details bellow + /*demonstratingProofOfPossessionConfiguration: { + importKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256', + hash: {name: 'ES256'} + }, + signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, + generateKeyAlgorithm: { + name: 'ECDSA', + namedCurve: 'P-256' + }, + digestAlgorithm: { name: 'SHA-256' }, + jwtHeaderAlgorithm : 'ES256' + }*/ +}; + + ``` ## Run The Demo @@ -142,7 +164,7 @@ const configuration = { authority: "https://demo.duendesoftware.com", service_worker_relative_url: "/OidcServiceWorker.js", // just comment that line to disable service worker mode service_worker_only: false, - demonstrating_proof_of_possession: false, // demonstrating proof of possession will work only if access_token is accessible from the client (This is because WebCrypto API is not available inside a Service Worker) + demonstrating_proof_of_possession: false, }; const App = () => ( From d43cea04e7e1a82cad54e40e63f2a0f22e122ab9 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 22 Feb 2024 20:38:36 +0000 Subject: [PATCH 217/565] [skip ci] Update to version 7.19.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index e62812372..1745a5094 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.18.5", + "version": "7.19.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 0f26aa82b..03ba240ff 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.18.5'; +export default '7.19.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b9fe0e43c..41d4c27ff 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.18.5", + "version": "7.19.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 0f26aa82b..03ba240ff 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.18.5'; +export default '7.19.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index fae25626d..e5cb3a44a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.18.5", + "version": "7.19.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3ec38381f75bf9eaa52bd8e2b17016e39cfb4515 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 22 Feb 2024 20:38:38 +0000 Subject: [PATCH 218/565] [skip ci] Generate changelog to version 7.19.0 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f741c9d4..c53790851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.18.5 +## 7.19.0 + +- [8f3940c](https://github.com/AxaFrance/oidc-client/commit/8f3940c42ad62264abfd61690777b602e0bdc31a) - feat(oidc): dpop inside serviceworker (#1306) (release), 2024-02-22 by *Guillaume Chervet* +- [4a5887f](https://github.com/AxaFrance/oidc-client/commit/4a5887f5e7b3d739d709c7bb4fb7a007ccb051a1) - fix(oidc-service-worker): remove sw unecessary log, 2024-02-19 by *Guillaume Chervet* + + +## v7.18.5 - [7a38d96](https://github.com/AxaFrance/oidc-client/commit/7a38d962b0e08837989a1d2affeb5e557dc09444) - fix(oidc): parse token with many _ or - (#1302) (release), 2024-02-18 by *Guillaume Chervet* @@ -312,8 +318,3 @@ - [41ecf9e](https://github.com/AxaFrance/oidc-client/commit/41ecf9e1752f291f0d8f96a979ab393f5aaeb885) - build(npm): bump @testing-library/dom from 9.3.1 to 9.3.3 (#1161), 2023-10-25 by *dependabot[bot]* -## v7.7.1 - -- [07d266b](https://github.com/AxaFrance/oidc-client/commit/07d266b32b275038176a407036a338624d2bed47) - build(npm): bump next from 13.4.12 to 13.5.6 (#1158), 2023-10-25 by *dependabot[bot]* - - From fa33e7250cd5d46c98940c999b8f701116f78446 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 23 Feb 2024 09:57:32 +0100 Subject: [PATCH 219/565] doc(oidc-client): update vanilla to add Hack game --- .../public/staticwebapp.config.json | 9 ++++ examples/oidc-client-demo/src/index.tsx | 49 +++++++++++-------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/examples/oidc-client-demo/public/staticwebapp.config.json b/examples/oidc-client-demo/public/staticwebapp.config.json index ba338eae6..5877917f4 100644 --- a/examples/oidc-client-demo/public/staticwebapp.config.json +++ b/examples/oidc-client-demo/public/staticwebapp.config.json @@ -2,5 +2,14 @@ "navigationFallback": { "rewrite": "index.html", "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] + }, + "globalHeaders": { + "content-security-policy": "script-src 'self'", + "Access-Control-Allow-Origin": "*", + "X-Frame-Options": "SAMEORIGIN", + "X-Permitted-Cross-Domain-Policies": "none", + "Referrer-Policy":"no-referrer", + "X-Content-Type-Options": "nosniff", + "Permissions-Policy": "autoplay=()" } } \ No newline at end of file diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index 211e0ac68..bb6546119 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -83,8 +83,7 @@ export const configuration = { authority: 'https://demo.duendesoftware.com', refresh_time_before_tokens_expiration_in_second: 40, service_worker_relative_url:'/OidcServiceWorker.js', - service_worker_only: false, - // monitor_session: true, + service_worker_only: true, }; const href = window.location.href; @@ -93,44 +92,53 @@ const vanillaOidc = OidcClient.getOrCreate(() => fetch)(configuration); console.log(href); - -vanillaOidc.tryKeepExistingSessionAsync().then(() => { - if(href.includes(configuration.redirect_uri)){ - // @ts-ignore - element.innerHTML = `
+if(href.includes(configuration.redirect_uri)){ + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

Loading callback

`; - vanillaOidc.loginCallbackAsync().then(()=>{ - router.getCustomHistory().replaceState("/"); - // @ts-ignore - window.logout = () => vanillaOidc.logoutAsync(); - const tokens = vanillaOidc.tokens; - // @ts-ignore - element.innerHTML = `
+ vanillaOidc.loginCallbackAsync().then(()=>{ + router.getCustomHistory().replaceState("/"); + // @ts-ignore + window.logout = () => vanillaOidc.logoutAsync(); + const tokens = vanillaOidc.tokens; + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

Authenticated

${JSON.stringify(tokens,null,'\t')}
`; - }); - return; - } + }); +} +vanillaOidc.tryKeepExistingSessionAsync().then(() => { const tokens = vanillaOidc.tokens; - if(tokens){ - + // @ts-ignore window.logout = () => vanillaOidc.logoutAsync(); // @ts-ignore element.innerHTML = `

@axa-fr/oidc-client demo

+

Game, let's try to make an XSS attacks to retrieve original tokens !

+

You may think servcie worker mode is not secure like said here https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow + So let try to hack it ! + In fact it can be prevented by using the following CSP header to forbid to write dynamic iframe with javascript dynamic inside: +

+            Content-Security-Policy: script-src 'self'
+            
+ and setting up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could accur. + Security is always good a cursor level to adjsute and a set of good practices. +

+ +

Authenticated

${JSON.stringify(tokens,null,'\t')}
+
`; - } else { // @ts-ignore @@ -142,6 +150,7 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => {
`; vanillaOidc.loginAsync("/"); }; + // @ts-ignore element.innerHTML = `

@axa-fr/oidc-client demo

From cf92792db7ede5f35c3e2883f4353376e73ff7e3 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 23 Feb 2024 12:45:57 +0100 Subject: [PATCH 220/565] doc(oidc-client-demo): repair demo --- examples/oidc-client-demo/index.html | 2 +- examples/oidc-client-demo/src/index.tsx | 246 ++++++++++++----------- examples/oidc-client-demo/vite.config.js | 2 +- 3 files changed, 136 insertions(+), 114 deletions(-) diff --git a/examples/oidc-client-demo/index.html b/examples/oidc-client-demo/index.html index d0912cccb..91a7df9b9 100644 --- a/examples/oidc-client-demo/index.html +++ b/examples/oidc-client-demo/index.html @@ -10,6 +10,6 @@
- + diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index bb6546119..16a397972 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -1,128 +1,137 @@ -import { OidcClient } from '@axa-fr/oidc-client'; +import {OidcClient} from "@axa-fr/oidc-client"; class Router { getCustomHistory(){ - const generateKey = () => - Math.random() - .toString(36) - .substr(2, 6); - - // Exported only for test - type WindowInternal = Window & { - CustomEvent?: new (typeArg: string, eventInitDict?: CustomEventInit) => CustomEvent; - Event: typeof Event; - }; - - type IPrototype = { - prototype: any; - }; - - type InitCustomEventParams = { - bubbles: boolean; - cancelable: boolean; - detail: T; - }; - - // IE Polyfill for CustomEvent - const CreateEvent = (windowInternal: Window, documentInternal: Document) => ( - event: string, - params: InitCustomEventParams, - ): CustomEvent => { - // @ts-ignore - if (typeof windowInternal.CustomEvent === 'function') { - // @ts-ignore - return new windowInternal.CustomEvent(event, params); - } - const paramsToFunction = params || { bubbles: false, cancelable: false, detail: undefined }; - const evt: CustomEvent = documentInternal.createEvent('CustomEvent'); - evt.initCustomEvent(event, paramsToFunction.bubbles, paramsToFunction.cancelable, paramsToFunction.detail); + const generateKey = () => + Math.random() + .toString(36) + .substr(2, 6); + + // Exported only for test + type WindowInternal = Window & { + CustomEvent?: new (typeArg: string, eventInitDict?: CustomEventInit) => CustomEvent; + Event: typeof Event; + }; + + type IPrototype = { + prototype: any; + }; + + type InitCustomEventParams = { + bubbles: boolean; + cancelable: boolean; + detail: T; + }; + + // IE Polyfill for CustomEvent + const CreateEvent = (windowInternal: Window, documentInternal: Document) => ( + event: string, + params: InitCustomEventParams, + ): CustomEvent => { + // @ts-ignore + if (typeof windowInternal.CustomEvent === 'function') { // @ts-ignore - (evt as CustomEvent & IPrototype).prototype = windowInternal.Event.prototype; - return evt; - }; + return new windowInternal.CustomEvent(event, params); + } + const paramsToFunction = params || { bubbles: false, cancelable: false, detail: undefined }; + const evt: CustomEvent = documentInternal.createEvent('CustomEvent'); + evt.initCustomEvent(event, paramsToFunction.bubbles, paramsToFunction.cancelable, paramsToFunction.detail); + // @ts-ignore + (evt as CustomEvent & IPrototype).prototype = windowInternal.Event.prototype; + return evt; + }; - type WindowHistoryState = typeof window.history.state; + type WindowHistoryState = typeof window.history.state; - type CustomHistory = { - replaceState(url?: string | null, stateHistory?: WindowHistoryState): void; - } + type CustomHistory = { + replaceState(url?: string | null, stateHistory?: WindowHistoryState): void; + } - const getHistory = ( - windowInternal: WindowInternal, - CreateEventInternal: (event: string, params?: InitCustomEventParams) => CustomEvent, - generateKeyInternal: typeof generateKey, - ): CustomHistory => { - return { - replaceState: (url?: string | null, stateHistory?: WindowHistoryState): void => { - const key = generateKeyInternal(); - const state = stateHistory || windowInternal.history.state; - // @ts-ignore - windowInternal.history.replaceState({ key, state }, null, url); - windowInternal.dispatchEvent(CreateEventInternal('popstate')); - }, - }; + const getHistory = ( + windowInternal: WindowInternal, + CreateEventInternal: (event: string, params?: InitCustomEventParams) => CustomEvent, + generateKeyInternal: typeof generateKey, + ): CustomHistory => { + return { + replaceState: (url?: string | null, stateHistory?: WindowHistoryState): void => { + const key = generateKeyInternal(); + const state = stateHistory || windowInternal.history.state; + // @ts-ignore + windowInternal.history.replaceState({ key, state }, null, url); + windowInternal.dispatchEvent(CreateEventInternal('popstate')); + }, }; + }; - // @ts-ignore + // @ts-ignore const getCustomHistory = () => getHistory(window, CreateEvent(window, document), generateKey); - return getCustomHistory(); - } + return getCustomHistory(); +} } -const router = new Router(); +// @ts-ignore +export const execute = () => { -document.body.innerHTML = `
`; -const element = document.getElementById("my-vanilla-app"); + const router = new Router(); -export const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/#/authentication/callback', - silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - refresh_time_before_tokens_expiration_in_second: 40, - service_worker_relative_url:'/OidcServiceWorker.js', - service_worker_only: true, -}; + const element = document.getElementById("root"); -const href = window.location.href; + const configuration = { + client_id: 'interactive.public.short', + redirect_uri: window.location.origin + '/#/authentication/callback', + silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', + scope: 'openid profile email api offline_access', + authority: 'https://demo.duendesoftware.com', + refresh_time_before_tokens_expiration_in_second: 40, + service_worker_relative_url:'/OidcServiceWorker.js', + service_worker_only: true, + }; -const vanillaOidc = OidcClient.getOrCreate(() => fetch)(configuration); + const href = window.location.href; -console.log(href); + const vanillaOidc = OidcClient.getOrCreate(() => fetch)(configuration); -if(href.includes(configuration.redirect_uri)){ - // @ts-ignore - element.innerHTML = `
+ console.log(href); + + if(href.includes(configuration.redirect_uri)){ + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

Loading callback

`; - vanillaOidc.loginCallbackAsync().then(()=>{ - router.getCustomHistory().replaceState("/"); - // @ts-ignore - window.logout = () => vanillaOidc.logoutAsync(); - const tokens = vanillaOidc.tokens; - // @ts-ignore - element.innerHTML = `
+ vanillaOidc.loginCallbackAsync().then(()=>{ + router.getCustomHistory().replaceState("/"); + // @ts-ignore + function logout() { + vanillaOidc.logoutAsync(); + } + const tokens = vanillaOidc.tokens; + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

- +

Authenticated

${JSON.stringify(tokens,null,'\t')}
`; - }); -} -vanillaOidc.tryKeepExistingSessionAsync().then(() => { - const tokens = vanillaOidc.tokens; - if(tokens){ - - // @ts-ignore - window.logout = () => vanillaOidc.logoutAsync(); - // @ts-ignore - element.innerHTML = `
+ // @ts-ignore + window.document.getElementById('logout').addEventListener('click',logout); + }); + } + + vanillaOidc.tryKeepExistingSessionAsync().then(() => { + const tokens = vanillaOidc.tokens; + if(tokens){ + + // @ts-ignore + function logout () { + vanillaOidc.logoutAsync(); + } + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

- +

Game, let's try to make an XSS attacks to retrieve original tokens !

You may think servcie worker mode is not secure like said here https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow So let try to hack it ! @@ -131,31 +140,44 @@ vanillaOidc.tryKeepExistingSessionAsync().then(() => { Content-Security-Policy: script-src 'self' and setting up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could accur. - Security is always good a cursor level to adjsute and a set of good practices. + Security is always good a cursor level to adjsut and a set of good practices.

- +

Authenticated

${JSON.stringify(tokens,null,'\t')}
`; - } - else { - // @ts-ignore - window.login= () => { // @ts-ignore - element.innerHTML = `
+ window.document.getElementById('logout').addEventListener('click',logout); + // @ts-ignore + window.document.getElementById('buttonxsshack').addEventListener('click',()=> { + // @ts-ignore + eval(document.getElementById('xsshack').value) + }); + + } + else { + // @ts-ignore + function login() { + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

Loading

`; - vanillaOidc.loginAsync("/"); - }; - - // @ts-ignore - element.innerHTML = `
+ vanillaOidc.loginAsync("/"); + } + + // @ts-ignore + element.innerHTML = `

@axa-fr/oidc-client demo

- +
`; - } -}); + // @ts-ignore + document.getElementById('login').addEventListener('click',login); + } + }); + +}; +execute(); \ No newline at end of file diff --git a/examples/oidc-client-demo/vite.config.js b/examples/oidc-client-demo/vite.config.js index e95902064..3b8014a1d 100644 --- a/examples/oidc-client-demo/vite.config.js +++ b/examples/oidc-client-demo/vite.config.js @@ -7,7 +7,7 @@ export default defineConfig({ }, server: { headers: { - //"Content-Security-Policy": "script-src 'self';", + "Content-Security-Policy": "script-src 'self' 'unsafe-eval';", }, }, }); From 322c1f1fbd3563b27b01a6ca98c8d95eeef12038 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 23 Feb 2024 13:55:24 +0100 Subject: [PATCH 221/565] doc(oidc-client-demo): update content and CSP --- examples/oidc-client-demo/index.html | 2 ++ .../public/staticwebapp.config.json | 2 +- examples/oidc-client-demo/src/index.tsx | 25 ++++++++++++------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/examples/oidc-client-demo/index.html b/examples/oidc-client-demo/index.html index 91a7df9b9..db3d3a00d 100644 --- a/examples/oidc-client-demo/index.html +++ b/examples/oidc-client-demo/index.html @@ -9,6 +9,8 @@ +

@axa-de/oidc-client

+

OpenId Connect, OIDC client is free under licence MIT. Available on github axa oidc-client

diff --git a/examples/oidc-client-demo/public/staticwebapp.config.json b/examples/oidc-client-demo/public/staticwebapp.config.json index 5877917f4..2a93a91ed 100644 --- a/examples/oidc-client-demo/public/staticwebapp.config.json +++ b/examples/oidc-client-demo/public/staticwebapp.config.json @@ -4,7 +4,7 @@ "exclude": ["*.{svg,png,jpg,gif}","*.{css,scss}","*.js"] }, "globalHeaders": { - "content-security-policy": "script-src 'self'", + "content-security-policy": "script-src 'self' 'unsafe-eval'", "Access-Control-Allow-Origin": "*", "X-Frame-Options": "SAMEORIGIN", "X-Permitted-Cross-Domain-Policies": "none", diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index 16a397972..43592f6cd 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -130,21 +130,28 @@ export const execute = () => { } // @ts-ignore element.innerHTML = `
-

@axa-fr/oidc-client demo

- -

Game, let's try to make an XSS attacks to retrieve original tokens !

-

You may think servcie worker mode is not secure like said here https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow +

Demo

+ +

Game, let's try to make an XSS attacks to retrieve some secure tokens !

+

Service Worker mode is not magic https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow So let try to hack it ! - In fact it can be prevented by using the following CSP header to forbid to write dynamic iframe with javascript dynamic inside: +

+

Service Worker mode is secure if your follow 2 following rules:

+

Rule 1: Configure CSP

+

+ Add CSP header to forbid to write dynamic iframe with javascript dynamic inside. + You should never add "unsafe-inline" in your CSP header. For this game we set up 'unsafe-eval' in the CSP header to allow the eval function to be executed and allow you to hack the application like a big XSS attack.

-            Content-Security-Policy: script-src 'self'
+            Content-Security-Policy: script-src 'self' 'unsafe-eval'; 
             
- and setting up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could accur. - Security is always good a cursor level to adjsut and a set of good practices. +

Rule 2: Apply redirect URI before any WebService call

+ Set up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could be executed.

+

Let's play

-

Authenticated

+

Authenticated

+
${JSON.stringify(tokens,null,'\t')}
`; From db13d8bdfbd49e564452461aeefc6e3024ce4435 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 23 Feb 2024 16:14:22 +0100 Subject: [PATCH 222/565] doc(oidc-client-demo): fix workflow --- examples/oidc-client-demo/index.html | 1 + examples/oidc-client-demo/src/index.tsx | 115 +++++++++++++----------- 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/examples/oidc-client-demo/index.html b/examples/oidc-client-demo/index.html index db3d3a00d..d43e866d5 100644 --- a/examples/oidc-client-demo/index.html +++ b/examples/oidc-client-demo/index.html @@ -12,6 +12,7 @@

@axa-de/oidc-client

OpenId Connect, OIDC client is free under licence MIT. Available on github axa oidc-client

+
diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index 43592f6cd..b81c4f853 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -70,12 +70,52 @@ class Router } + +const display = (element:any) => { + + // @ts-ignore + element.innerHTML = `
+

Game Hack Challenge

+ +

Game, let's try to make an XSS attacks to retrieve some secure tokens !

+

Service Worker mode is not magic https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow + So let try to hack it ! +

+

Service Worker mode is secure if your follow 2 following rules:

+

Rule 1: Configure CSP

+

+ Add CSP header to forbid to write dynamic iframe with javascript dynamic inside. + You should never add "unsafe-inline" in your CSP header. +

+            Content-Security-Policy: script-src 'self';  // Secure
+            
+

Rule 2: Apply redirect URI before any WebService call

+ Set up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could be executed. +

+

Let's play

+

To help you for this game, we set up 'unsafe-eval' in the CSP header to allow the eval function to be executed and allow you to hack the application like a big XSS attack.

+
+            Content-Security-Policy: script-src 'self' 'unsafe-eval'; 
+            
+ + + + +
`; + // @ts-ignore + window.document.getElementById('buttonxsshack').addEventListener('click',()=> { + // @ts-ignore + eval(document.getElementById('xsshack').value) + }); +} + // @ts-ignore export const execute = () => { const router = new Router(); - const element = document.getElementById("root"); + const root = document.getElementById("root"); + const game = document.getElementById("game"); const configuration = { client_id: 'interactive.public.short', @@ -92,92 +132,61 @@ export const execute = () => { const vanillaOidc = OidcClient.getOrCreate(() => fetch)(configuration); + // @ts-ignore + function logout () { + vanillaOidc.logoutAsync(); + } + console.log(href); if(href.includes(configuration.redirect_uri)){ // @ts-ignore - element.innerHTML = `
-

@axa-fr/oidc-client demo

+ root.innerHTML = `
+

Login demo

Loading callback

`; vanillaOidc.loginCallbackAsync().then(()=>{ router.getCustomHistory().replaceState("/"); + display(game); // @ts-ignore - function logout() { - vanillaOidc.logoutAsync(); - } - const tokens = vanillaOidc.tokens; - // @ts-ignore - element.innerHTML = `
-

@axa-fr/oidc-client demo

- -

Authenticated

-
${JSON.stringify(tokens,null,'\t')}
+ root.innerHTML = `
+

Login demo Authenticated

+ +
${JSON.stringify(vanillaOidc.tokens,null,'\t')}
`; - // @ts-ignore window.document.getElementById('logout').addEventListener('click',logout); }); + return; } vanillaOidc.tryKeepExistingSessionAsync().then(() => { const tokens = vanillaOidc.tokens; if(tokens){ - - // @ts-ignore - function logout () { - vanillaOidc.logoutAsync(); - } + display(game); // @ts-ignore - element.innerHTML = `
-

Demo

- -

Game, let's try to make an XSS attacks to retrieve some secure tokens !

-

Service Worker mode is not magic https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#payload-new-flow - So let try to hack it ! -

-

Service Worker mode is secure if your follow 2 following rules:

-

Rule 1: Configure CSP

-

- Add CSP header to forbid to write dynamic iframe with javascript dynamic inside. - You should never add "unsafe-inline" in your CSP header. For this game we set up 'unsafe-eval' in the CSP header to allow the eval function to be executed and allow you to hack the application like a big XSS attack. -

-            Content-Security-Policy: script-src 'self' 'unsafe-eval'; 
-            
-

Rule 2: Apply redirect URI before any WebService call

- Set up the redirect_uri and redirect_silent_uri at the top level of your javascript application before any XSS attack could be executed. -

-

Let's play

- - -

Authenticated

+ root.innerHTML = `
+

Login demo Authenticated

${JSON.stringify(tokens,null,'\t')}
-
`; // @ts-ignore window.document.getElementById('logout').addEventListener('click',logout); - // @ts-ignore - window.document.getElementById('buttonxsshack').addEventListener('click',()=> { - // @ts-ignore - eval(document.getElementById('xsshack').value) - }); - } else { // @ts-ignore function login() { // @ts-ignore - element.innerHTML = `
-

@axa-fr/oidc-client demo

+ root.innerHTML = `
+

Login demo

Loading

`; vanillaOidc.loginAsync("/"); } - + display(game); // @ts-ignore - element.innerHTML = `
-

@axa-fr/oidc-client demo

+ root.innerHTML = `
+

Login demo

`; // @ts-ignore From d4c9ec6b8a4760c81f4d88bc72563cc810b52b00 Mon Sep 17 00:00:00 2001 From: Jean-Marc Rakotoarisoa <15631355+astrinxit66@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:20:44 +0100 Subject: [PATCH 223/565] fix(oidc): when having multiple iframes, only the last one gets resolved (#1311) (alpha) --- packages/oidc-client/src/silentLogin.ts | 81 ++++++++++++++----------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/packages/oidc-client/src/silentLogin.ts b/packages/oidc-client/src/silentLogin.ts index 3e1b5a51d..e5b2c1174 100644 --- a/packages/oidc-client/src/silentLogin.ts +++ b/packages/oidc-client/src/silentLogin.ts @@ -44,7 +44,7 @@ export const _silentLoginAsync = (configurationName:string, configuration:OidcCo } const link = configuration.silent_login_uri + queries; const idx = link.indexOf('/', link.indexOf('//') + 2); - const iFrameOrigin = link.substr(0, idx); + const iFrameOrigin = link.substring(0, idx); const iframe = document.createElement('iframe'); iframe.width = '0px'; iframe.height = '0px'; @@ -53,53 +53,60 @@ export const _silentLoginAsync = (configurationName:string, configuration:OidcCo iframe.setAttribute('src', link); document.body.appendChild(iframe); return new Promise((resolve, reject) => { - try { - let isResolved = false; - window.onmessage = (e: MessageEvent) => { - if (e.origin === iFrameOrigin && - e.source === iframe.contentWindow - ) { - const key = `${configurationName}_oidc_tokens:`; - const key_error = `${configurationName}_oidc_error:`; - const key_exception = `${configurationName}_oidc_exception:`; - const data = e.data; - if (data && typeof (data) === 'string') { - if (!isResolved) { - if (data.startsWith(key)) { - const result = JSON.parse(e.data.replace(key, '')); - publishEvent(eventNames.silentLoginAsync_end, {}); - iframe.remove(); - isResolved = true; - resolve(result); - } else if (data.startsWith(key_error)) { - const result = JSON.parse(e.data.replace(key_error, '')); - publishEvent(eventNames.silentLoginAsync_error, result); - iframe.remove(); - isResolved = true; - resolve({error: 'oidc_' + result.error, tokens: null, sessionState: null}); - } else if (data.startsWith(key_exception)) { - const result = JSON.parse(e.data.replace(key_exception, '')); - publishEvent(eventNames.silentLoginAsync_error, result); - iframe.remove(); - isResolved = true; - reject(new Error(result.error)); - } - + let isResolved = false; + + const clear = () => { + window.removeEventListener('message', listener); + iframe.remove(); + isResolved = true; + }; + + const listener = (e: MessageEvent) => { + if (e.origin === iFrameOrigin && + e.source === iframe.contentWindow + ) { + const key = `${configurationName}_oidc_tokens:`; + const key_error = `${configurationName}_oidc_error:`; + const key_exception = `${configurationName}_oidc_exception:`; + const data = e.data; + + if (data && typeof (data) === 'string') { + if (!isResolved) { + if (data.startsWith(key)) { + const result = JSON.parse(e.data.replace(key, '')); + publishEvent(eventNames.silentLoginAsync_end, {}); + resolve(result); + clear(); + } else if (data.startsWith(key_error)) { + const result = JSON.parse(e.data.replace(key_error, '')); + publishEvent(eventNames.silentLoginAsync_error, result); + resolve({error: 'oidc_' + result.error, tokens: null, sessionState: null}); + clear(); + } else if (data.startsWith(key_exception)) { + const result = JSON.parse(e.data.replace(key_exception, '')); + publishEvent(eventNames.silentLoginAsync_error, result); + reject(new Error(result.error)); + clear(); } + } } - }; + } + }; + + try { + window.addEventListener('message', listener); + const silentSigninTimeout = configuration.silent_login_timeout; setTimeout(() => { if (!isResolved) { + clear(); publishEvent(eventNames.silentLoginAsync_error, { reason: 'timeout' }); - iframe.remove(); - isResolved = true; reject(new Error('timeout')); } }, silentSigninTimeout); } catch (e) { - iframe.remove(); + clear(); publishEvent(eventNames.silentLoginAsync_error, e); reject(e); } From 7b2b21a9837210d0caaea9e16cfea9e9daeb8364 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 09:20:53 +0100 Subject: [PATCH 224/565] build(npm): bump rimraf from 5.0.1 to 5.0.5 (#1313) (release) Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.1 to 5.0.5. - [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/rimraf/compare/v5.0.1...v5.0.5) --- updated-dependencies: - dependency-name: rimraf dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 78 ++++++++++++++------------------ 2 files changed, 36 insertions(+), 44 deletions(-) diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e5cb3a44a..0e49f1310 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -60,7 +60,7 @@ "msw": "2.1.6", "react": "^18.2.0", "react-dom": "^18.2.0", - "rimraf": "5.0.1", + "rimraf": "5.0.5", "typescript": "5.3.3", "vite": "5.0.12", "vite-plugin-dts": "3.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b55c2708e..26a42f325 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.1.0(react-dom@18.2.0)(react@18.2.0) + version: 14.1.1(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -286,8 +286,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) rimraf: - specifier: 5.0.1 - version: 5.0.1 + specifier: 5.0.5 + version: 5.0.5 typescript: specifier: 5.3.3 version: 5.3.3 @@ -944,12 +944,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.1.0: - resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + /@next/env@14.1.1: + resolution: {integrity: sha512-7CnQyD5G8shHxQIIg3c7/pSeYFeMhsNbpU/bmvH7ZnDql7mNRgg8O2JZrhrc/soFnfBnKP4/xXNiiSIPn2w8gA==} dev: false - /@next/swc-darwin-arm64@14.1.0: - resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + /@next/swc-darwin-arm64@14.1.1: + resolution: {integrity: sha512-yDjSFKQKTIjyT7cFv+DqQfW5jsD+tVxXTckSe1KIouKk75t1qZmj/mV3wzdmFb0XHVGtyRjDMulfVG8uCKemOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -957,8 +957,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.0: - resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + /@next/swc-darwin-x64@14.1.1: + resolution: {integrity: sha512-KCQmBL0CmFmN8D64FHIZVD9I4ugQsDBBEJKiblXGgwn7wBCSe8N4Dx47sdzl4JAg39IkSN5NNrr8AniXLMb3aw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -966,8 +966,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.0: - resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + /@next/swc-linux-arm64-gnu@14.1.1: + resolution: {integrity: sha512-YDQfbWyW0JMKhJf/T4eyFr4b3tceTorQ5w2n7I0mNVTFOvu6CGEzfwT3RSAQGTi/FFMTFcuspPec/7dFHuP7Eg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -975,8 +975,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.0: - resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + /@next/swc-linux-arm64-musl@14.1.1: + resolution: {integrity: sha512-fiuN/OG6sNGRN/bRFxRvV5LyzLB8gaL8cbDH5o3mEiVwfcMzyE5T//ilMmaTrnA8HLMS6hoz4cHOu6Qcp9vxgQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -984,8 +984,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.0: - resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + /@next/swc-linux-x64-gnu@14.1.1: + resolution: {integrity: sha512-rv6AAdEXoezjbdfp3ouMuVqeLjE1Bin0AuE6qxE6V9g3Giz5/R3xpocHoAi7CufRR+lnkuUjRBn05SYJ83oKNQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -993,8 +993,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.0: - resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + /@next/swc-linux-x64-musl@14.1.1: + resolution: {integrity: sha512-YAZLGsaNeChSrpz/G7MxO3TIBLaMN8QWMr3X8bt6rCvKovwU7GqQlDu99WdvF33kI8ZahvcdbFsy4jAFzFX7og==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1002,8 +1002,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.0: - resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + /@next/swc-win32-arm64-msvc@14.1.1: + resolution: {integrity: sha512-1L4mUYPBMvVDMZg1inUYyPvFSduot0g73hgfD9CODgbr4xiTYe0VOMTZzaRqYJYBA9mana0x4eaAaypmWo1r5A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1011,8 +1011,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.0: - resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + /@next/swc-win32-ia32-msvc@14.1.1: + resolution: {integrity: sha512-jvIE9tsuj9vpbbXlR5YxrghRfMuG0Qm/nZ/1KDHc+y6FpnZ/apsgh+G6t15vefU0zp3WSpTMIdXRUsNl/7RSuw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1020,8 +1020,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.0: - resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + /@next/swc-win32-x64-msvc@14.1.1: + resolution: {integrity: sha512-S6K6EHDU5+1KrBDLko7/c1MNy/Ya73pIAmvKeFwsF4RmBFJSO7/7YeD4FnZ4iBdzE69PpQ4sOMU9ORKeNuxe8A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4214,8 +4214,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + /next@14.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-McrGJqlGSHeaz2yTRPkEucxQKe5Zq7uPwyeHNmJaZNY4wx9E9QdxmTp310agFRoMuIYgQrCrT3petg13fSVOww==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -4229,7 +4229,7 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.0 + '@next/env': 14.1.1 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001584 @@ -4239,15 +4239,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.0 - '@next/swc-darwin-x64': 14.1.0 - '@next/swc-linux-arm64-gnu': 14.1.0 - '@next/swc-linux-arm64-musl': 14.1.0 - '@next/swc-linux-x64-gnu': 14.1.0 - '@next/swc-linux-x64-musl': 14.1.0 - '@next/swc-win32-arm64-msvc': 14.1.0 - '@next/swc-win32-ia32-msvc': 14.1.0 - '@next/swc-win32-x64-msvc': 14.1.0 + '@next/swc-darwin-arm64': 14.1.1 + '@next/swc-darwin-x64': 14.1.1 + '@next/swc-linux-arm64-gnu': 14.1.1 + '@next/swc-linux-arm64-musl': 14.1.1 + '@next/swc-linux-x64-gnu': 14.1.1 + '@next/swc-linux-x64-musl': 14.1.1 + '@next/swc-win32-arm64-msvc': 14.1.1 + '@next/swc-win32-ia32-msvc': 14.1.1 + '@next/swc-win32-x64-msvc': 14.1.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4823,14 +4823,6 @@ packages: glob: 7.2.3 dev: true - /rimraf@5.0.1: - resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 10.3.10 - dev: true - /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} engines: {node: '>=14'} From da61894070a8129063ec93fd63ef7cdd37f980c9 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 4 Mar 2024 08:23:27 +0000 Subject: [PATCH 225/565] [skip ci] Update to version 7.19.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1745a5094..dd633bf17 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.0", + "version": "7.19.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 03ba240ff..56fe6c9af 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.0'; +export default '7.19.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 41d4c27ff..3b076d906 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.0", + "version": "7.19.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 03ba240ff..56fe6c9af 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.0'; +export default '7.19.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0e49f1310..a64d678b3 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.0", + "version": "7.19.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3358b0f853101399546cad3a6e3521ac1b2416c6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 4 Mar 2024 08:23:28 +0000 Subject: [PATCH 226/565] [skip ci] Generate changelog to version 7.19.1 --- CHANGELOG.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c53790851..0b2eaef8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ # Changelog -## 7.19.0 +## 7.19.1 + +- [7b2b21a](https://github.com/AxaFrance/oidc-client/commit/7b2b21a9837210d0caaea9e16cfea9e9daeb8364) - build(npm): bump rimraf from 5.0.1 to 5.0.5 (#1313) (release), 2024-03-04 by *dependabot[bot]* +- [d4c9ec6](https://github.com/AxaFrance/oidc-client/commit/d4c9ec6b8a4760c81f4d88bc72563cc810b52b00) - fix(oidc): when having multiple iframes, only the last one gets resolved (#1311) (alpha), 2024-02-28 by *Jean-Marc Rakotoarisoa* +- [db13d8b](https://github.com/AxaFrance/oidc-client/commit/db13d8bdfbd49e564452461aeefc6e3024ce4435) - doc(oidc-client-demo): fix workflow, 2024-02-23 by *Guillaume Chervet* +- [322c1f1](https://github.com/AxaFrance/oidc-client/commit/322c1f1fbd3563b27b01a6ca98c8d95eeef12038) - doc(oidc-client-demo): update content and CSP, 2024-02-23 by *Guillaume Chervet* +- [cf92792](https://github.com/AxaFrance/oidc-client/commit/cf92792db7ede5f35c3e2883f4353376e73ff7e3) - doc(oidc-client-demo): repair demo, 2024-02-23 by *Guillaume Chervet* +- [fa33e72](https://github.com/AxaFrance/oidc-client/commit/fa33e7250cd5d46c98940c999b8f701116f78446) - doc(oidc-client): update vanilla to add Hack game, 2024-02-23 by *Guillaume Chervet* + + +## v7.19.0 - [8f3940c](https://github.com/AxaFrance/oidc-client/commit/8f3940c42ad62264abfd61690777b602e0bdc31a) - feat(oidc): dpop inside serviceworker (#1306) (release), 2024-02-22 by *Guillaume Chervet* - [4a5887f](https://github.com/AxaFrance/oidc-client/commit/4a5887f5e7b3d739d709c7bb4fb7a007ccb051a1) - fix(oidc-service-worker): remove sw unecessary log, 2024-02-19 by *Guillaume Chervet* @@ -313,8 +323,3 @@ - [ac7f37b](https://github.com/AxaFrance/oidc-client/commit/ac7f37be28883edbe539eff02d0a6a054b2aab14) - build(npm): bump msw from 1.2.2 to 2.0.0 (#1165), 2023-10-29 by *dependabot[bot]* -## v7.7.2 - -- [41ecf9e](https://github.com/AxaFrance/oidc-client/commit/41ecf9e1752f291f0d8f96a979ab393f5aaeb885) - build(npm): bump @testing-library/dom from 9.3.1 to 9.3.3 (#1161), 2023-10-25 by *dependabot[bot]* - - From 95be8f79a3fc399b05322d0197ab674cf272326a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:10:07 +0100 Subject: [PATCH 227/565] build(npm): bump vitest from 1.2.2 to 1.3.1 (#1315) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 1.2.2 to 1.3.1. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v1.3.1/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/react-oidc-demo/package.json | 2 +- package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 104 +++++++++--------- 6 files changed, 58 insertions(+), 56 deletions(-) diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 5c34c3e21..0f4d4df08 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -36,7 +36,7 @@ "typescript": "5.3.3", "vite": "5.0.12", "vite-plugin-dts": "^3.6.4", - "vitest": "1.2.2" + "vitest": "1.3.1" }, "license": "MIT", "publishConfig": { diff --git a/package.json b/package.json index 887e64718..6a92fbee9 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "tslib": "^2.6.2", "tsx": "4.7.0", "typescript": "5.3.3", - "vitest": "1.2.2" + "vitest": "1.3.1" }, "engines": { "node": "16.* || >= 18.0.0" diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index dd633bf17..e0b25fb03 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -41,7 +41,7 @@ "typescript": "5.3.3", "vite": "5.0.12", "vite-plugin-dts": "^3.7.2", - "vitest": "1.2.2" + "vitest": "1.3.1" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3b076d906..a22965e98 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -33,7 +33,7 @@ "typescript": "5.3.3", "vite": "5.0.12", "vite-plugin-dts": "3.7.2", - "vitest": "1.2.2" + "vitest": "1.3.1" }, "keywords": [ "oidc", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index a64d678b3..0e3b4546b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -64,7 +64,7 @@ "typescript": "5.3.3", "vite": "5.0.12", "vite-plugin-dts": "3.7.2", - "vitest": "1.2.2" + "vitest": "1.3.1" }, "license": "MIT", "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26a42f325..8aa639a45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: 5.3.3 version: 5.3.3 vitest: - specifier: 1.2.2 - version: 1.2.2(jsdom@24.0.0) + specifier: 1.3.1 + version: 1.3.1(jsdom@24.0.0) examples/nextjs-demo: dependencies: @@ -91,7 +91,7 @@ importers: version: link:../../packages/oidc-client '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) '@testing-library/user-event': specifier: 14.5.2 version: 14.5.2(@testing-library/dom@9.3.4) @@ -132,7 +132,7 @@ importers: devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) @@ -167,8 +167,8 @@ importers: specifier: ^3.6.4 version: 3.6.4(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: 1.2.2 - version: 1.2.2(jsdom@24.0.0) + specifier: 1.3.1 + version: 1.3.1(jsdom@24.0.0) packages/oidc-client: dependencies: @@ -181,13 +181,13 @@ importers: version: 9.3.4 '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@vitest/coverage-v8': specifier: 1.2.2 - version: 1.2.2(vitest@1.2.2) + version: 1.2.2(vitest@1.3.1) cpy: specifier: 11.0.0 version: 11.0.0 @@ -207,14 +207,14 @@ importers: specifier: 3.7.2 version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: 1.2.2 - version: 1.2.2(jsdom@24.0.0) + specifier: 1.3.1 + version: 1.3.1(jsdom@24.0.0) packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': specifier: 1.2.2 - version: 1.2.2(vitest@1.2.2) + version: 1.2.2(vitest@1.3.1) cpy: specifier: 11.0.0 version: 11.0.0 @@ -234,8 +234,8 @@ importers: specifier: ^3.7.2 version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: 1.2.2 - version: 1.2.2(jsdom@24.0.0) + specifier: 1.3.1 + version: 1.3.1(jsdom@24.0.0) packages/react-oidc: dependencies: @@ -248,7 +248,7 @@ importers: devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.2.2) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) @@ -263,7 +263,7 @@ importers: version: 4.2.1(vite@5.0.12) '@vitest/coverage-v8': specifier: 1.2.2 - version: 1.2.2(vitest@1.2.2) + version: 1.2.2(vitest@1.3.1) cpy: specifier: 11.0.0 version: 11.0.0 @@ -298,8 +298,8 @@ importers: specifier: 3.7.2 version: 3.7.2(typescript@5.3.3)(vite@5.0.12) vitest: - specifier: 1.2.2 - version: 1.2.2(jsdom@24.0.0) + specifier: 1.3.1 + version: 1.3.1(jsdom@24.0.0) packages: @@ -1242,7 +1242,7 @@ packages: lz-string: 1.5.0 pretty-format: 27.5.1 - /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.2.2): + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.3.1): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -1272,7 +1272,7 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.2.2(jsdom@24.0.0) + vitest: 1.3.1(jsdom@24.0.0) /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} @@ -1634,7 +1634,7 @@ packages: - supports-color dev: true - /@vitest/coverage-v8@1.2.2(vitest@1.2.2): + /@vitest/coverage-v8@1.2.2(vitest@1.3.1): resolution: {integrity: sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==} peerDependencies: vitest: ^1.0.0 @@ -1652,39 +1652,39 @@ packages: std-env: 3.7.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.2.2(jsdom@24.0.0) + vitest: 1.3.1(jsdom@24.0.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@1.2.2: - resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} dependencies: - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 chai: 4.4.1 - /@vitest/runner@1.2.2: - resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.3.1 p-limit: 5.0.0 pathe: 1.1.2 - /@vitest/snapshot@1.2.2: - resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} dependencies: magic-string: 0.30.7 pathe: 1.1.2 pretty-format: 29.7.0 - /@vitest/spy@1.2.2: - resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} dependencies: tinyspy: 2.2.0 - /@vitest/utils@1.2.2: - resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -3853,6 +3853,9 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -5156,10 +5159,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} dependencies: - acorn: 8.11.3 + js-tokens: 8.0.3 /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} @@ -5465,8 +5468,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /vite-node@1.2.2: - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + /vite-node@1.3.1: + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -5568,15 +5571,15 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vitest@1.2.2(jsdom@24.0.0): - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + /vitest@1.3.1(jsdom@24.0.0): + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5593,13 +5596,12 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 acorn-walk: 8.3.2 - cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 @@ -5609,11 +5611,11 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 1.3.0 + strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 vite: 5.0.12(@types/node@20.11.16) - vite-node: 1.2.2 + vite-node: 1.3.1 why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 4240a38d5d08e9ba4a30268138e1ed67a0883a99 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Mar 2024 17:12:53 +0000 Subject: [PATCH 228/565] [skip ci] Update to version 7.19.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index e0b25fb03..13ad27890 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.1", + "version": "7.19.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 56fe6c9af..c257e4355 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.1'; +export default '7.19.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index a22965e98..ec5866d63 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.1", + "version": "7.19.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 56fe6c9af..c257e4355 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.1'; +export default '7.19.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0e3b4546b..59ba14983 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.1", + "version": "7.19.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 02a6c7492a5d46dd40652eb3176898f73bd1c5dc Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Mar 2024 17:12:55 +0000 Subject: [PATCH 229/565] [skip ci] Generate changelog to version 7.19.2 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b2eaef8f..9032697ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.19.1 +## 7.19.2 + +- [95be8f7](https://github.com/AxaFrance/oidc-client/commit/95be8f79a3fc399b05322d0197ab674cf272326a) - build(npm): bump vitest from 1.2.2 to 1.3.1 (#1315), 2024-03-07 by *dependabot[bot]* + + +## v7.19.1 - [7b2b21a](https://github.com/AxaFrance/oidc-client/commit/7b2b21a9837210d0caaea9e16cfea9e9daeb8364) - build(npm): bump rimraf from 5.0.1 to 5.0.5 (#1313) (release), 2024-03-04 by *dependabot[bot]* - [d4c9ec6](https://github.com/AxaFrance/oidc-client/commit/d4c9ec6b8a4760c81f4d88bc72563cc810b52b00) - fix(oidc): when having multiple iframes, only the last one gets resolved (#1311) (alpha), 2024-02-28 by *Jean-Marc Rakotoarisoa* @@ -318,8 +323,3 @@ - [1684abb](https://github.com/AxaFrance/oidc-client/commit/1684abba7d982ecbd2f30610eb140e2ce4549814) - feat(oidc-client): move fetch to oidc-client (#1175) (release), 2023-11-06 by *Guillaume Chervet* -## v7.7.3 - -- [ac7f37b](https://github.com/AxaFrance/oidc-client/commit/ac7f37be28883edbe539eff02d0a6a054b2aab14) - build(npm): bump msw from 1.2.2 to 2.0.0 (#1165), 2023-10-29 by *dependabot[bot]* - - From 397629d2c9e1d58efab96c000247382cfc94ce24 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 19:51:52 +0100 Subject: [PATCH 230/565] build(npm): bump vite from 5.0.12 to 5.1.5 (#1319) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.12 to 5.1.5. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.1.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/oidc-client-demo/package.json | 2 +- examples/react-oidc-demo/package.json | 2 +- .../oidc-client-service-worker/package.json | 2 +- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- pnpm-lock.yaml | 124 +++++++++--------- 6 files changed, 67 insertions(+), 67 deletions(-) diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 4655811b9..be0fc944f 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -32,6 +32,6 @@ "devDependencies": { "@types/node": "20.11.16", "cross-env": "^7.0.3", - "vite": " 5.0.12" + "vite": "5.1.5" } } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 0f4d4df08..c43382234 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -34,7 +34,7 @@ "cross-env": "^7.0.3", "jsdom": " 24.0.0", "typescript": "5.3.3", - "vite": "5.0.12", + "vite": "5.1.5", "vite-plugin-dts": "^3.6.4", "vitest": "1.3.1" }, diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 13ad27890..21e96ebd5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -39,7 +39,7 @@ "cpy-cli": "^5.0.0", "rimraf": "5.0.5", "typescript": "5.3.3", - "vite": "5.0.12", + "vite": "5.1.5", "vite-plugin-dts": "^3.7.2", "vitest": "1.3.1" }, diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index ec5866d63..8b58f799d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -31,7 +31,7 @@ "cpy-cli": "^5.0.0", "rimraf": "5.0.5", "typescript": "5.3.3", - "vite": "5.0.12", + "vite": "5.1.5", "vite-plugin-dts": "3.7.2", "vitest": "1.3.1" }, diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 59ba14983..26c5156f0 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -62,7 +62,7 @@ "react-dom": "^18.2.0", "rimraf": "5.0.5", "typescript": "5.3.3", - "vite": "5.0.12", + "vite": "5.1.5", "vite-plugin-dts": "3.7.2", "vitest": "1.3.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8aa639a45..4374a387d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.1.1(react-dom@18.2.0)(react@18.2.0) + version: 14.1.3(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -112,8 +112,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 vite: - specifier: ' 5.0.12' - version: 5.0.12(@types/node@20.11.16) + specifier: 5.1.5 + version: 5.1.5(@types/node@20.11.16) examples/react-oidc-demo: dependencies: @@ -144,7 +144,7 @@ importers: version: 18.2.54 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.0.12) + version: 4.2.1(vite@5.1.5) bootstrap: specifier: ^4.6.2 version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) @@ -161,11 +161,11 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: 5.0.12 - version: 5.0.12(@types/node@20.11.16) + specifier: 5.1.5 + version: 5.1.5(@types/node@20.11.16) vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@5.0.12) + version: 3.6.4(typescript@5.3.3)(vite@5.1.5) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -201,11 +201,11 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: 5.0.12 - version: 5.0.12(@types/node@20.11.16) + specifier: 5.1.5 + version: 5.1.5(@types/node@20.11.16) vite-plugin-dts: specifier: 3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.0.12) + version: 3.7.2(typescript@5.3.3)(vite@5.1.5) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -228,11 +228,11 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: 5.0.12 - version: 5.0.12(@types/node@20.11.16) + specifier: 5.1.5 + version: 5.1.5(@types/node@20.11.16) vite-plugin-dts: specifier: ^3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.0.12) + version: 3.7.2(typescript@5.3.3)(vite@5.1.5) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -260,7 +260,7 @@ importers: version: 18.2.39 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.0.12) + version: 4.2.1(vite@5.1.5) '@vitest/coverage-v8': specifier: 1.2.2 version: 1.2.2(vitest@1.3.1) @@ -292,11 +292,11 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: 5.0.12 - version: 5.0.12(@types/node@20.11.16) + specifier: 5.1.5 + version: 5.1.5(@types/node@20.11.16) vite-plugin-dts: specifier: 3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.0.12) + version: 3.7.2(typescript@5.3.3)(vite@5.1.5) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -944,12 +944,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.1.1: - resolution: {integrity: sha512-7CnQyD5G8shHxQIIg3c7/pSeYFeMhsNbpU/bmvH7ZnDql7mNRgg8O2JZrhrc/soFnfBnKP4/xXNiiSIPn2w8gA==} + /@next/env@14.1.3: + resolution: {integrity: sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ==} dev: false - /@next/swc-darwin-arm64@14.1.1: - resolution: {integrity: sha512-yDjSFKQKTIjyT7cFv+DqQfW5jsD+tVxXTckSe1KIouKk75t1qZmj/mV3wzdmFb0XHVGtyRjDMulfVG8uCKemOQ==} + /@next/swc-darwin-arm64@14.1.3: + resolution: {integrity: sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -957,8 +957,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.1: - resolution: {integrity: sha512-KCQmBL0CmFmN8D64FHIZVD9I4ugQsDBBEJKiblXGgwn7wBCSe8N4Dx47sdzl4JAg39IkSN5NNrr8AniXLMb3aw==} + /@next/swc-darwin-x64@14.1.3: + resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -966,8 +966,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.1: - resolution: {integrity: sha512-YDQfbWyW0JMKhJf/T4eyFr4b3tceTorQ5w2n7I0mNVTFOvu6CGEzfwT3RSAQGTi/FFMTFcuspPec/7dFHuP7Eg==} + /@next/swc-linux-arm64-gnu@14.1.3: + resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -975,8 +975,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.1: - resolution: {integrity: sha512-fiuN/OG6sNGRN/bRFxRvV5LyzLB8gaL8cbDH5o3mEiVwfcMzyE5T//ilMmaTrnA8HLMS6hoz4cHOu6Qcp9vxgQ==} + /@next/swc-linux-arm64-musl@14.1.3: + resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -984,8 +984,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.1: - resolution: {integrity: sha512-rv6AAdEXoezjbdfp3ouMuVqeLjE1Bin0AuE6qxE6V9g3Giz5/R3xpocHoAi7CufRR+lnkuUjRBn05SYJ83oKNQ==} + /@next/swc-linux-x64-gnu@14.1.3: + resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -993,8 +993,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.1: - resolution: {integrity: sha512-YAZLGsaNeChSrpz/G7MxO3TIBLaMN8QWMr3X8bt6rCvKovwU7GqQlDu99WdvF33kI8ZahvcdbFsy4jAFzFX7og==} + /@next/swc-linux-x64-musl@14.1.3: + resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1002,8 +1002,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.1: - resolution: {integrity: sha512-1L4mUYPBMvVDMZg1inUYyPvFSduot0g73hgfD9CODgbr4xiTYe0VOMTZzaRqYJYBA9mana0x4eaAaypmWo1r5A==} + /@next/swc-win32-arm64-msvc@14.1.3: + resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1011,8 +1011,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.1: - resolution: {integrity: sha512-jvIE9tsuj9vpbbXlR5YxrghRfMuG0Qm/nZ/1KDHc+y6FpnZ/apsgh+G6t15vefU0zp3WSpTMIdXRUsNl/7RSuw==} + /@next/swc-win32-ia32-msvc@14.1.3: + resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1020,8 +1020,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.1: - resolution: {integrity: sha512-S6K6EHDU5+1KrBDLko7/c1MNy/Ya73pIAmvKeFwsF4RmBFJSO7/7YeD4FnZ4iBdzE69PpQ4sOMU9ORKeNuxe8A==} + /@next/swc-win32-x64-msvc@14.1.3: + resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1618,7 +1618,7 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-react@4.2.1(vite@5.0.12): + /@vitejs/plugin-react@4.2.1(vite@5.1.5): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1629,7 +1629,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.1.5(@types/node@20.11.16) transitivePeerDependencies: - supports-color dev: true @@ -4217,8 +4217,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-McrGJqlGSHeaz2yTRPkEucxQKe5Zq7uPwyeHNmJaZNY4wx9E9QdxmTp310agFRoMuIYgQrCrT3petg13fSVOww==} + /next@14.1.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -4232,7 +4232,7 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.1 + '@next/env': 14.1.3 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001584 @@ -4242,15 +4242,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.1 - '@next/swc-darwin-x64': 14.1.1 - '@next/swc-linux-arm64-gnu': 14.1.1 - '@next/swc-linux-arm64-musl': 14.1.1 - '@next/swc-linux-x64-gnu': 14.1.1 - '@next/swc-linux-x64-musl': 14.1.1 - '@next/swc-win32-arm64-msvc': 14.1.1 - '@next/swc-win32-ia32-msvc': 14.1.1 - '@next/swc-win32-x64-msvc': 14.1.1 + '@next/swc-darwin-arm64': 14.1.3 + '@next/swc-darwin-x64': 14.1.3 + '@next/swc-linux-arm64-gnu': 14.1.3 + '@next/swc-linux-arm64-musl': 14.1.3 + '@next/swc-linux-x64-gnu': 14.1.3 + '@next/swc-linux-x64-musl': 14.1.3 + '@next/swc-win32-arm64-msvc': 14.1.3 + '@next/swc-win32-ia32-msvc': 14.1.3 + '@next/swc-win32-x64-msvc': 14.1.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4560,8 +4560,8 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -5477,7 +5477,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.1.5(@types/node@20.11.16) transitivePeerDependencies: - '@types/node' - less @@ -5488,7 +5488,7 @@ packages: - supports-color - terser - /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@5.0.12): + /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@5.1.5): resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5504,7 +5504,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.3.3 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.1.5(@types/node@20.11.16) vue-tsc: 1.8.25(typescript@5.3.3) transitivePeerDependencies: - '@types/node' @@ -5512,7 +5512,7 @@ packages: - supports-color dev: true - /vite-plugin-dts@3.7.2(typescript@5.3.3)(vite@5.0.12): + /vite-plugin-dts@3.7.2(typescript@5.3.3)(vite@5.1.5): resolution: {integrity: sha512-kg//1nDA01b8rufJf4TsvYN8LMkdwv0oBYpiQi6nRwpHyue+wTlhrBiqgipdFpMnW1oOYv6ywmzE5B0vg6vSEA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5528,7 +5528,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.3.3 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.1.5(@types/node@20.11.16) vue-tsc: 1.8.27(typescript@5.3.3) transitivePeerDependencies: - '@types/node' @@ -5536,8 +5536,8 @@ packages: - supports-color dev: true - /vite@5.0.12(@types/node@20.11.16): - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.1.5(@types/node@20.11.16): + resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5566,7 +5566,7 @@ packages: dependencies: '@types/node': 20.11.16 esbuild: 0.19.12 - postcss: 8.4.33 + postcss: 8.4.35 rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 @@ -5614,7 +5614,7 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.1.5(@types/node@20.11.16) vite-node: 1.3.1 why-is-node-running: 2.2.2 transitivePeerDependencies: From ee9d0b335c9f75b3d8f46b6a05489e84071a949c Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Mar 2024 18:54:28 +0000 Subject: [PATCH 231/565] [skip ci] Update to version 7.19.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 21e96ebd5..14c01e951 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.2", + "version": "7.19.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index c257e4355..b8d93a687 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.2'; +export default '7.19.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 8b58f799d..9e233319c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.2", + "version": "7.19.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index c257e4355..b8d93a687 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.2'; +export default '7.19.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 26c5156f0..3af76a38d 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.2", + "version": "7.19.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From d15454ecb6bc4da5b4f1a867c820a54f507671a1 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 7 Mar 2024 18:54:30 +0000 Subject: [PATCH 232/565] [skip ci] Generate changelog to version 7.19.3 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9032697ce..fc05e0daa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.19.2 +## 7.19.3 + +- [397629d](https://github.com/AxaFrance/oidc-client/commit/397629d2c9e1d58efab96c000247382cfc94ce24) - build(npm): bump vite from 5.0.12 to 5.1.5 (#1319), 2024-03-07 by *dependabot[bot]* + + +## v7.19.2 - [95be8f7](https://github.com/AxaFrance/oidc-client/commit/95be8f79a3fc399b05322d0197ab674cf272326a) - build(npm): bump vitest from 1.2.2 to 1.3.1 (#1315), 2024-03-07 by *dependabot[bot]* @@ -318,8 +323,3 @@ - [9549b9a](https://github.com/AxaFrance/oidc-client/commit/9549b9ae613d3cf357cb4b760fc8cc9e0af80c44) - doc(oidc-client): typo in method name, 2023-11-07 by *Guillaume Chervet* -## v7.8.0 - -- [1684abb](https://github.com/AxaFrance/oidc-client/commit/1684abba7d982ecbd2f30610eb140e2ce4549814) - feat(oidc-client): move fetch to oidc-client (#1175) (release), 2023-11-06 by *Guillaume Chervet* - - From be24bbab3d699ff003cb14302dedc3463b1f3a1b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 12 Mar 2024 21:07:38 +0100 Subject: [PATCH 233/565] refactor(all): update build libraries (release) --- examples/oidc-client-demo/package.json | 6 +- examples/react-oidc-demo/package.json | 10 +- .../oidc-client-service-worker/package.json | 10 +- packages/oidc-client/package.json | 10 +- packages/react-oidc/package.json | 10 +- pnpm-lock.yaml | 541 ++++++++++-------- 6 files changed, 331 insertions(+), 256 deletions(-) diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index be0fc944f..1595184da 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -7,7 +7,7 @@ "@testing-library/jest-dom": "6.4.2", "@testing-library/user-event": "14.5.2", "@types/jest": "29.5.12", - "typescript": "^5.3.3", + "typescript": "5.4.2", "web-vitals": "3.5.2" }, "scripts": { @@ -30,8 +30,8 @@ ] }, "devDependencies": { - "@types/node": "20.11.16", + "@types/node": "20.11.26", "cross-env": "^7.0.3", - "vite": "5.1.5" + "vite": "5.1.6" } } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index c43382234..a3ca38b62 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -21,21 +21,21 @@ "@axa-fr/react-oidc":"workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.21.1" + "react-router-dom": "^6.22.3" }, "devDependencies": { "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.2.1", "@testing-library/user-event": "14.5.2", - "@types/react": "18.2.54", + "@types/react": "18.2.65", "@vitejs/plugin-react": "4.2.1", "bootstrap": "^4.6.2", "copyfiles": "2.4.1", "cross-env": "^7.0.3", "jsdom": " 24.0.0", - "typescript": "5.3.3", - "vite": "5.1.5", - "vite-plugin-dts": "^3.6.4", + "typescript": "5.4.2", + "vite": "5.1.6", + "vite-plugin-dts": "3.7.3", "vitest": "1.3.1" }, "license": "MIT", diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 14c01e951..7a7fd677b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,13 +34,13 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "1.2.2", - "cpy": "11.0.0", + "@vitest/coverage-v8": "1.3.1", + "cpy": "11.0.1", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", - "typescript": "5.3.3", - "vite": "5.1.5", - "vite-plugin-dts": "^3.7.2", + "typescript": "5.4.2", + "vite": "5.1.6", + "vite-plugin-dts": "3.7.3", "vitest": "1.3.1" }, "publishConfig": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 9e233319c..065c08b6c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -26,13 +26,13 @@ "@testing-library/dom": "9.3.4", "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.2.1", - "@vitest/coverage-v8": "1.2.2", - "cpy": "11.0.0", + "@vitest/coverage-v8": "1.3.1", + "cpy": "11.0.1", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", - "typescript": "5.3.3", - "vite": "5.1.5", - "vite-plugin-dts": "3.7.2", + "typescript": "5.4.2", + "vite": "5.1.6", + "vite-plugin-dts": "3.7.3", "vitest": "1.3.1" }, "keywords": [ diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 3af76a38d..b61aa7a50 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -52,8 +52,8 @@ "@testing-library/user-event": "14.5.2", "@types/react": "^18.2.39", "@vitejs/plugin-react": "4.2.1", - "@vitest/coverage-v8": "1.2.2", - "cpy": "11.0.0", + "@vitest/coverage-v8": "1.3.1", + "cpy": "11.0.1", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "jsdom": "24.0.0", @@ -61,9 +61,9 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "5.0.5", - "typescript": "5.3.3", - "vite": "5.1.5", - "vite-plugin-dts": "3.7.2", + "typescript": "5.4.2", + "vite": "5.1.6", + "vite-plugin-dts": "3.7.3", "vitest": "1.3.1" }, "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4374a387d..17870fdd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,7 +67,7 @@ importers: version: 5.3.3 vitest: specifier: 1.3.1 - version: 1.3.1(jsdom@24.0.0) + version: 1.3.1 examples/nextjs-demo: dependencies: @@ -76,7 +76,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.1.3(react-dom@18.2.0)(react@18.2.0) + version: 14.1.0(react-dom@18.2.0)(react@18.2.0) react: specifier: latest version: 18.2.0 @@ -99,21 +99,21 @@ importers: specifier: 29.5.12 version: 29.5.12 typescript: - specifier: ^5.3.3 - version: 5.3.3 + specifier: 5.4.2 + version: 5.4.2 web-vitals: specifier: 3.5.2 version: 3.5.2 devDependencies: '@types/node': - specifier: 20.11.16 - version: 20.11.16 + specifier: 20.11.26 + version: 20.11.26 cross-env: specifier: ^7.0.3 version: 7.0.3 vite: - specifier: 5.1.5 - version: 5.1.5(@types/node@20.11.16) + specifier: 5.1.6 + version: 5.1.6(@types/node@20.11.26) examples/react-oidc-demo: dependencies: @@ -127,12 +127,12 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-router-dom: - specifier: ^6.21.1 - version: 6.21.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.22.3 + version: 6.22.3(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) + version: 6.4.2(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) @@ -140,11 +140,11 @@ importers: specifier: 14.5.2 version: 14.5.2(@testing-library/dom@9.3.4) '@types/react': - specifier: 18.2.54 - version: 18.2.54 + specifier: 18.2.65 + version: 18.2.65 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.1.5) + version: 4.2.1(vite@5.1.6) bootstrap: specifier: ^4.6.2 version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) @@ -158,14 +158,14 @@ importers: specifier: ' 24.0.0' version: 24.0.0 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.4.2 + version: 5.4.2 vite: - specifier: 5.1.5 - version: 5.1.5(@types/node@20.11.16) + specifier: 5.1.6 + version: 5.1.6(@types/node@20.11.26) vite-plugin-dts: - specifier: ^3.6.4 - version: 3.6.4(typescript@5.3.3)(vite@5.1.5) + specifier: 3.7.3 + version: 3.7.3(typescript@5.4.2)(vite@5.1.6) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -181,16 +181,16 @@ importers: version: 9.3.4 '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) + version: 6.4.2(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@vitest/coverage-v8': - specifier: 1.2.2 - version: 1.2.2(vitest@1.3.1) + specifier: 1.3.1 + version: 1.3.1(vitest@1.3.1) cpy: - specifier: 11.0.0 - version: 11.0.0 + specifier: 11.0.1 + version: 11.0.1 cpy-cli: specifier: ^5.0.0 version: 5.0.0 @@ -198,26 +198,26 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.4.2 + version: 5.4.2 vite: - specifier: 5.1.5 - version: 5.1.5(@types/node@20.11.16) + specifier: 5.1.6 + version: 5.1.6(@types/node@20.11.26) vite-plugin-dts: - specifier: 3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.1.5) + specifier: 3.7.3 + version: 3.7.3(typescript@5.4.2)(vite@5.1.6) vitest: specifier: 1.3.1 - version: 1.3.1(jsdom@24.0.0) + version: 1.3.1 packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 1.2.2 - version: 1.2.2(vitest@1.3.1) + specifier: 1.3.1 + version: 1.3.1(vitest@1.3.1) cpy: - specifier: 11.0.0 - version: 11.0.0 + specifier: 11.0.1 + version: 11.0.1 cpy-cli: specifier: ^5.0.0 version: 5.0.0 @@ -225,17 +225,17 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.4.2 + version: 5.4.2 vite: - specifier: 5.1.5 - version: 5.1.5(@types/node@20.11.16) + specifier: 5.1.6 + version: 5.1.6(@types/node@20.11.26) vite-plugin-dts: - specifier: ^3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.1.5) + specifier: 3.7.3 + version: 3.7.3(typescript@5.4.2)(vite@5.1.6) vitest: specifier: 1.3.1 - version: 1.3.1(jsdom@24.0.0) + version: 1.3.1 packages/react-oidc: dependencies: @@ -248,7 +248,7 @@ importers: devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) + version: 6.4.2(vitest@1.3.1) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) @@ -260,13 +260,13 @@ importers: version: 18.2.39 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.1.5) + version: 4.2.1(vite@5.1.6) '@vitest/coverage-v8': - specifier: 1.2.2 - version: 1.2.2(vitest@1.3.1) + specifier: 1.3.1 + version: 1.3.1(vitest@1.3.1) cpy: - specifier: 11.0.0 - version: 11.0.0 + specifier: 11.0.1 + version: 11.0.1 cpy-cli: specifier: ^5.0.0 version: 5.0.0 @@ -278,7 +278,7 @@ importers: version: 24.0.0 msw: specifier: 2.1.6 - version: 2.1.6(typescript@5.3.3) + version: 2.1.6(typescript@5.4.2) react: specifier: ^18.2.0 version: 18.2.0 @@ -289,14 +289,14 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.4.2 + version: 5.4.2 vite: - specifier: 5.1.5 - version: 5.1.5(@types/node@20.11.16) + specifier: 5.1.6 + version: 5.1.6(@types/node@20.11.26) vite-plugin-dts: - specifier: 3.7.2 - version: 3.7.2(typescript@5.3.3)(vite@5.1.5) + specifier: 3.7.3 + version: 3.7.3(typescript@5.4.2)(vite@5.1.6) vitest: specifier: 1.3.1 version: 1.3.1(jsdom@24.0.0) @@ -817,6 +817,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: false /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -831,9 +832,10 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.11.26 '@types/yargs': 17.0.32 chalk: 4.1.2 + dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -874,26 +876,6 @@ packages: - '@types/node' dev: true - /@microsoft/api-extractor@7.38.5: - resolution: {integrity: sha512-c/w2zfqBcBJxaCzpJNvFoouWewcYrUOfeu5ZkWCCIXTF9a/gXM85RGevEzlMAIEGM/kssAAZSXRJIZ3Q5vLFow==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.28.3 - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0 - '@rushstack/rig-package': 0.5.1 - '@rushstack/ts-command-line': 4.17.1 - colors: 1.2.5 - lodash: 4.17.21 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.0.4 - transitivePeerDependencies: - - '@types/node' - dev: true - /@microsoft/api-extractor@7.39.0: resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} hasBin: true @@ -944,12 +926,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.1.3: - resolution: {integrity: sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ==} + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} dev: false - /@next/swc-darwin-arm64@14.1.3: - resolution: {integrity: sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==} + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -957,8 +939,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.3: - resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -966,8 +948,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.3: - resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -975,8 +957,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.3: - resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -984,8 +966,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.3: - resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -993,8 +975,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.3: - resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1002,8 +984,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.3: - resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1011,8 +993,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.3: - resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1020,8 +1002,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.3: - resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1077,8 +1059,8 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@remix-run/router@1.14.1: - resolution: {integrity: sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==} + /@remix-run/router@1.15.3: + resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==} engines: {node: '>=14.0.0'} dev: false @@ -1272,7 +1254,40 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 + vitest: 1.3.1 + dev: false + + /@testing-library/jest-dom@6.4.2(vitest@1.3.1): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.23.9 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 vitest: 1.3.1(jsdom@24.0.0) + dev: true /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} @@ -1346,17 +1361,20 @@ packages: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: false /@types/istanbul-reports@3.0.4: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: false /@types/jest@29.5.12: resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: false /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1366,8 +1384,8 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/node@20.11.16: - resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} + /@types/node@20.11.26: + resolution: {integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==} dependencies: undici-types: 5.26.5 @@ -1378,7 +1396,7 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.54 + '@types/react': 18.2.65 dev: true /@types/react@18.2.39: @@ -1389,8 +1407,8 @@ packages: csstype: 3.1.2 dev: true - /@types/react@18.2.54: - resolution: {integrity: sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==} + /@types/react@18.2.65: + resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1407,6 +1425,7 @@ packages: /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: false /@types/statuses@2.0.4: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} @@ -1414,11 +1433,13 @@ packages: /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false /@types/yargs@17.0.32: resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -1618,7 +1639,7 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-react@4.2.1(vite@5.1.5): + /@vitejs/plugin-react@4.2.1(vite@5.1.6): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1629,15 +1650,15 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.1.5(@types/node@20.11.16) + vite: 5.1.6(@types/node@20.11.26) transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-v8@1.2.2(vitest@1.3.1): - resolution: {integrity: sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==} + /@vitest/coverage-v8@1.3.1(vitest@1.3.1): + resolution: {integrity: sha512-UuBnkSJUNE9rdHjDCPyJ4fYuMkoMtnghes1XohYa4At0MS3OQSAo97FrbwSLRshYsXThMZy1+ybD/byK5llyIg==} peerDependencies: - vitest: ^1.0.0 + vitest: 1.3.1 dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 @@ -1652,7 +1673,7 @@ packages: std-env: 3.7.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.3.1(jsdom@24.0.0) + vitest: 1.3.1 transitivePeerDependencies: - supports-color dev: true @@ -1710,15 +1731,6 @@ packages: path-browserify: 1.0.1 dev: true - /@vue/compiler-core@3.3.4: - resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} - dependencies: - '@babel/parser': 7.23.9 - '@vue/shared': 3.3.4 - estree-walker: 2.0.2 - source-map-js: 1.0.2 - dev: true - /@vue/compiler-core@3.4.15: resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} dependencies: @@ -1729,13 +1741,6 @@ packages: source-map-js: 1.0.2 dev: true - /@vue/compiler-dom@3.3.4: - resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} - dependencies: - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 - dev: true - /@vue/compiler-dom@3.4.15: resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} dependencies: @@ -1743,27 +1748,7 @@ packages: '@vue/shared': 3.4.15 dev: true - /@vue/language-core@1.8.25(typescript@5.3.3): - resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.3.4 - '@vue/shared': 3.3.4 - computeds: 0.0.1 - minimatch: 9.0.3 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - typescript: 5.3.3 - vue-template-compiler: 2.7.14 - dev: true - - /@vue/language-core@1.8.27(typescript@5.3.3): + /@vue/language-core@1.8.27(typescript@5.4.2): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' @@ -1779,14 +1764,10 @@ packages: minimatch: 9.0.3 muggle-string: 0.3.1 path-browserify: 1.0.1 - typescript: 5.3.3 + typescript: 5.4.2 vue-template-compiler: 2.7.16 dev: true - /@vue/shared@3.3.4: - resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} - dev: true - /@vue/shared@3.4.15: resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} dev: true @@ -1815,6 +1796,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} @@ -2007,6 +1989,7 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true /available-typed-arrays@1.0.6: resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} @@ -2189,6 +2172,7 @@ packages: /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + dev: false /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} @@ -2267,6 +2251,7 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} @@ -2354,8 +2339,8 @@ packages: p-map: 6.0.0 dev: true - /cpy@11.0.0: - resolution: {integrity: sha512-vA71mFQyIxCrqvP/9JBLCj05UJV/+WpvAxZK2/EiK5ndD090cjuChfJ3ExVVuZXHoTJ/3HLedOPYDWyxnNHjrg==} + /cpy@11.0.1: + resolution: {integrity: sha512-VIvf1QNOHnIZ5QT8zWxNJq+YYIpbFhgeMwnVngX+AhhUQd3Rns3x6gcvb0fGpNxZQ0q629mX6+GvDtvbO/Hutg==} engines: {node: '>=18'} dependencies: copy-file: 11.0.0 @@ -2390,6 +2375,7 @@ packages: engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 + dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -2405,6 +2391,7 @@ packages: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + dev: true /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -2434,6 +2421,7 @@ packages: /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -2492,6 +2480,7 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: true /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -2547,6 +2536,7 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + dev: true /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} @@ -2699,6 +2689,7 @@ packages: /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} + dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3099,6 +3090,7 @@ packages: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: false /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -3203,6 +3195,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -3427,6 +3420,7 @@ packages: engines: {node: '>=18'} dependencies: whatwg-encoding: 3.1.1 + dev: true /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3440,6 +3434,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} @@ -3449,6 +3444,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -3466,6 +3462,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3670,6 +3667,7 @@ packages: /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -3803,10 +3801,12 @@ packages: diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false /jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} @@ -3816,6 +3816,7 @@ packages: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} @@ -3830,17 +3831,19 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: false /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.26 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: false /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -3902,6 +3905,7 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -4101,12 +4105,14 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: true /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -4164,7 +4170,7 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@2.1.6(typescript@5.3.3): + /msw@2.1.6(typescript@5.4.2): resolution: {integrity: sha512-62NX1pdMa1C17U/6+SQjQFxwHx0bcWHzZoDN2mK97FvEttTkX9CyJqx3OcYYBpNykDx+segweaO4yxapjifj4g==} engines: {node: '>=18'} hasBin: true @@ -4192,7 +4198,7 @@ packages: path-to-regexp: 6.2.1 strict-event-emitter: 0.5.1 type-fest: 4.10.2 - typescript: 5.3.3 + typescript: 5.4.2 yargs: 17.7.2 dev: true @@ -4217,8 +4223,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} + /next@14.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -4232,7 +4238,7 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.3 + '@next/env': 14.1.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001584 @@ -4242,15 +4248,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.3 - '@next/swc-darwin-x64': 14.1.3 - '@next/swc-linux-arm64-gnu': 14.1.3 - '@next/swc-linux-arm64-musl': 14.1.3 - '@next/swc-linux-x64-gnu': 14.1.3 - '@next/swc-linux-x64-musl': 14.1.3 - '@next/swc-win32-arm64-msvc': 14.1.3 - '@next/swc-win32-ia32-msvc': 14.1.3 - '@next/swc-win32-x64-msvc': 14.1.3 + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4280,6 +4286,7 @@ packages: /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -4482,6 +4489,7 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: true /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -4616,13 +4624,16 @@ packages: /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: true /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4652,26 +4663,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.21.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QCNrtjtDPwHDO+AO21MJd7yIcr41UetYt5jzaB9Y1UYaPTCnVuJq6S748g1dE11OQlCFIQg+RtAA1SEZIyiBeA==} + /react-router-dom@6.22.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.14.1 + '@remix-run/router': 1.15.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.21.1(react@18.2.0) + react-router: 6.22.3(react@18.2.0) dev: false - /react-router@6.21.1(react@18.2.0): - resolution: {integrity: sha512-W0l13YlMTm1YrpVIOpjCADJqEUpz1vm+CMo47RuFX4Ftegwm6KOYsL5G3eiE52jnJpKvzm6uB/vTKTPKM8dmkA==} + /react-router@6.22.3(react@18.2.0): + resolution: {integrity: sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.14.1 + '@remix-run/router': 1.15.3 react: 18.2.0 dev: false @@ -4771,6 +4782,7 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -4858,6 +4870,7 @@ packages: /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -4905,12 +4918,14 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -5020,6 +5035,7 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: false /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5200,6 +5216,7 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true /synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} @@ -5270,12 +5287,14 @@ packages: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true /tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} dependencies: punycode: 2.3.1 + dev: true /ts-api-utils@1.2.0(typescript@5.3.3): resolution: {integrity: sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==} @@ -5387,14 +5406,14 @@ packages: is-typed-array: 1.1.13 dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} hasBin: true dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} hasBin: true @@ -5421,6 +5440,7 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} + dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -5449,6 +5469,7 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5477,7 +5498,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.5(@types/node@20.11.16) + vite: 5.1.6(@types/node@20.11.26) transitivePeerDependencies: - '@types/node' - less @@ -5488,8 +5509,8 @@ packages: - supports-color - terser - /vite-plugin-dts@3.6.4(typescript@5.3.3)(vite@5.1.5): - resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} + /vite-plugin-dts@3.7.3(typescript@5.4.2)(vite@5.1.6): + resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -5498,46 +5519,56 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.38.5 + '@microsoft/api-extractor': 7.39.0 '@rollup/pluginutils': 5.1.0 - '@vue/language-core': 1.8.25(typescript@5.3.3) + '@vue/language-core': 1.8.27(typescript@5.4.2) debug: 4.3.4 kolorist: 1.8.0 - typescript: 5.3.3 - vite: 5.1.5(@types/node@20.11.16) - vue-tsc: 1.8.25(typescript@5.3.3) + typescript: 5.4.2 + vite: 5.1.6(@types/node@20.11.26) + vue-tsc: 1.8.27(typescript@5.4.2) transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite-plugin-dts@3.7.2(typescript@5.3.3)(vite@5.1.5): - resolution: {integrity: sha512-kg//1nDA01b8rufJf4TsvYN8LMkdwv0oBYpiQi6nRwpHyue+wTlhrBiqgipdFpMnW1oOYv6ywmzE5B0vg6vSEA==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@5.1.5: + resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true peerDependencies: - typescript: '*' - vite: '*' + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 peerDependenciesMeta: - vite: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: optional: true dependencies: - '@microsoft/api-extractor': 7.39.0 - '@rollup/pluginutils': 5.1.0 - '@vue/language-core': 1.8.27(typescript@5.3.3) - debug: 4.3.4 - kolorist: 1.8.0 - typescript: 5.3.3 - vite: 5.1.5(@types/node@20.11.16) - vue-tsc: 1.8.27(typescript@5.3.3) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color - dev: true + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.9.6 + optionalDependencies: + fsevents: 2.3.3 - /vite@5.1.5(@types/node@20.11.16): - resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + /vite@5.1.6(@types/node@20.11.26): + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5564,14 +5595,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.26 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 - /vitest@1.3.1(jsdom@24.0.0): + /vitest@1.3.1: resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5605,7 +5636,6 @@ packages: chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 - jsdom: 24.0.0 local-pkg: 0.5.0 magic-string: 0.30.7 pathe: 1.1.2 @@ -5614,7 +5644,7 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.5(@types/node@20.11.16) + vite: 5.1.5 vite-node: 1.3.1 why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -5626,11 +5656,60 @@ packages: - supports-color - terser - /vue-template-compiler@2.7.14: - resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + /vitest@1.3.1(jsdom@24.0.0): + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - de-indent: 1.0.2 - he: 1.2.0 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + jsdom: 24.0.0 + local-pkg: 0.5.0 + magic-string: 0.30.7 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.6(@types/node@20.11.26) + vite-node: 1.3.1 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser dev: true /vue-template-compiler@2.7.16: @@ -5640,28 +5719,16 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.25(typescript@5.3.3): - resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} - hasBin: true - peerDependencies: - typescript: '*' - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.25(typescript@5.3.3) - semver: 7.6.0 - typescript: 5.3.3 - dev: true - - /vue-tsc@1.8.27(typescript@5.3.3): + /vue-tsc@1.8.27(typescript@5.4.2): resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.3.3) + '@vue/language-core': 1.8.27(typescript@5.4.2) semver: 7.6.0 - typescript: 5.3.3 + typescript: 5.4.2 dev: true /w3c-xmlserializer@5.0.0: @@ -5669,6 +5736,7 @@ packages: engines: {node: '>=18'} dependencies: xml-name-validator: 5.0.0 + dev: true /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -5683,16 +5751,19 @@ packages: /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + dev: true /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 + dev: true /whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + dev: true /whatwg-url@14.0.0: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} @@ -5700,6 +5771,7 @@ packages: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -5803,13 +5875,16 @@ packages: optional: true utf-8-validate: optional: true + dev: true /xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} + dev: true /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} From 065ce85c794cfb01065dab0f3ceb645bfdf6d3a5 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 12 Mar 2024 20:26:26 +0000 Subject: [PATCH 234/565] [skip ci] Update to version 7.19.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 7a7fd677b..1638efe9a 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.3", + "version": "7.19.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index b8d93a687..49f743586 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.3'; +export default '7.19.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 065c08b6c..f876cd947 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.3", + "version": "7.19.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index b8d93a687..49f743586 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.3'; +export default '7.19.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b61aa7a50..b8c5a5752 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.3", + "version": "7.19.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From b91113085e6a23e3288c7862d3737b7bd45554b3 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 12 Mar 2024 20:26:28 +0000 Subject: [PATCH 235/565] [skip ci] Generate changelog to version 7.19.5 --- CHANGELOG.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc05e0daa..cddbe4ca7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ # Changelog -## 7.19.3 +## 7.19.5 + +- [be24bba](https://github.com/AxaFrance/oidc-client/commit/be24bbab3d699ff003cb14302dedc3463b1f3a1b) - refactor(all): update build libraries (release), 2024-03-12 by *Guillaume Chervet* + + +## v7.19.4 + +- [7df257c](https://github.com/AxaFrance/oidc-client/commit/7df257ca7ba32a2605cd5d76881ea3aa50aba208) - refactor(all): update build libraries (release), 2024-03-12 by *Guillaume Chervet* + + +## v7.19.3 - [397629d](https://github.com/AxaFrance/oidc-client/commit/397629d2c9e1d58efab96c000247382cfc94ce24) - build(npm): bump vite from 5.0.12 to 5.1.5 (#1319), 2024-03-07 by *dependabot[bot]* @@ -310,16 +320,3 @@ - [5085e05](https://github.com/AxaFrance/oidc-client/commit/5085e05beb4c7a88fad1df61e11213b68672e7d9) - fix(sevice-worker): add URL normalization for getCurrentDatabaseDomain endpoints comparison (release) (#1196), 2023-11-17 by *meesvandongen* -## v7.9.1 - -- [7e0cb29](https://github.com/AxaFrance/oidc-client/commit/7e0cb297587e314451321c3ddd1b0e5f7e7e6c0e) - fix(logout): okta tokens null (release) (#1188), 2023-11-13 by *Guillaume Chervet* - - -## v7.9.0 - -- [b08cd59](https://github.com/AxaFrance/oidc-client/commit/b08cd594d2427170cde835dcff97d5be396952e6) - doc(FAQ): Update FAQ.md (release), 2023-11-12 by *Guillaume Chervet* -- [c54c7b9](https://github.com/AxaFrance/oidc-client/commit/c54c7b9f3447c0474b460649eb315c13f5f8b1da) - fix(service-worker): Reclaming all clients from SW after hard reload (#1149), 2023-11-12 by *VladimirPlatonenko* -- [dbcfec4](https://github.com/AxaFrance/oidc-client/commit/dbcfec46798b2137154dd33f31bf842f6b7730b8) - feat(oidc-client): enhance service worker flexibility (alpha) (#1180), 2023-11-12 by *Guillaume Chervet* -- [9549b9a](https://github.com/AxaFrance/oidc-client/commit/9549b9ae613d3cf357cb4b760fc8cc9e0af80c44) - doc(oidc-client): typo in method name, 2023-11-07 by *Guillaume Chervet* - - From b7568f8d73d21ba1b7cd4890bff2ad30941696e2 Mon Sep 17 00:00:00 2001 From: meesvandongen <35409045+meesvandongen@users.noreply.github.com> Date: Wed, 13 Mar 2024 12:22:05 +0100 Subject: [PATCH 236/565] fix(oidc-service-worker): normalize userinfo endpoint in service worker (#1320) (release) Co-authored-by: Mees van Dongen --- .../src/utils/__tests__/domains.spec.ts | 8 ++++++++ packages/oidc-client-service-worker/src/utils/domains.ts | 4 +--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index f2ab1e8fe..75aa7cf58 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -101,6 +101,14 @@ describe('domains', () => { expect(getCurrentDatabaseDomain(db, url, trustedDomains)).not.toBeNull(); }); + it('will not return null, url is the userinfo endpoint on other domain, default port is set', () => { + db['default'].oidcServerConfiguration!.userInfoEndpoint = + 'https://otherdomain.com:443/connect/userinfo'; + + const url = 'https://otherdomain.com/connect/userinfo'; + expect(getCurrentDatabaseDomain(db, url, null)).not.toBeNull(); + }); + it('will test urls against domains list if accessTokenDomains list is not present', () => { const trustedDomains: TrustedDomains = { default: { diff --git a/packages/oidc-client-service-worker/src/utils/domains.ts b/packages/oidc-client-service-worker/src/utils/domains.ts index 80533dc8c..586b01f06 100644 --- a/packages/oidc-client-service-worker/src/utils/domains.ts +++ b/packages/oidc-client-service-worker/src/utils/domains.ts @@ -36,8 +36,6 @@ export const getDomains = ( return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? []; }; - - export const getCurrentDatabaseDomain = ( database: Database, url: string, @@ -69,7 +67,7 @@ export const getCurrentDatabaseDomain = ( const domains = getDomains(trustedDomain, 'accessToken'); const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint - ? [oidcServerConfiguration.userInfoEndpoint, ...domains] + ? [normalizeUrl(oidcServerConfiguration.userInfoEndpoint), ...domains] : [...domains]; let hasToSendToken = false; From bbb1466528a76088669ba69d7fa12d91b9771c07 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 13 Mar 2024 11:25:21 +0000 Subject: [PATCH 237/565] [skip ci] Update to version 7.19.6 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1638efe9a..0966c6fe4 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.5", + "version": "7.19.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 49f743586..2ac453ee3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.5'; +export default '7.19.6'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f876cd947..81dd2c76d 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.5", + "version": "7.19.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 49f743586..2ac453ee3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.5'; +export default '7.19.6'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b8c5a5752..2282036ca 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.5", + "version": "7.19.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7b4580a9bc765c83b5de72e0ad85b14e33a286cd Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 13 Mar 2024 11:25:23 +0000 Subject: [PATCH 238/565] [skip ci] Generate changelog to version 7.19.6 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cddbe4ca7..12884a2e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.19.5 +## 7.19.6 + +- [b7568f8](https://github.com/AxaFrance/oidc-client/commit/b7568f8d73d21ba1b7cd4890bff2ad30941696e2) - fix(oidc-service-worker): normalize userinfo endpoint in service worker (#1320) (release), 2024-03-13 by *meesvandongen* + + +## v7.19.5 - [be24bba](https://github.com/AxaFrance/oidc-client/commit/be24bbab3d699ff003cb14302dedc3463b1f3a1b) - refactor(all): update build libraries (release), 2024-03-12 by *Guillaume Chervet* @@ -315,8 +320,3 @@ - [bf19dd0](https://github.com/AxaFrance/oidc-client/commit/bf19dd0cc975ea4524b0f68f9315625b3789801b) - fix(oidc-client): tokens refresh conflict multiple tabs (alpha), 2023-11-17 by *Guillaume Chervet* -## v7.9.2 - -- [5085e05](https://github.com/AxaFrance/oidc-client/commit/5085e05beb4c7a88fad1df61e11213b68672e7d9) - fix(sevice-worker): add URL normalization for getCurrentDatabaseDomain endpoints comparison (release) (#1196), 2023-11-17 by *meesvandongen* - - From c7793c9913128dbb82a60dff11261ca5b4749f0c Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 19 Mar 2024 20:54:52 +0100 Subject: [PATCH 239/565] feat(oidc-client): add dpop extras to claims (alpha) --- packages/oidc-client/src/oidc.ts | 7 +++++-- packages/oidc-client/src/oidcClient.ts | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index f2eff47fd..b468a641f 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -293,10 +293,13 @@ Please checkout that you are using OIDC hook inside a { + async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string, extras:StringMap= {}): Promise { const configuration = this.configuration; - const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(accessToken),}; + const claimsExtras = { + ath: await base64urlOfHashOfASCIIEncodingAsync(accessToken), + ...extras + }; const serviceWorker = await initWorkerAsync(configuration, this.configurationName); let demonstratingProofOfPossessionNonce:string; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 32a3c123c..2e2762014 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -67,8 +67,8 @@ export class OidcClient { return this._oidc.configuration; } - async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string) : Promise { - return this._oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url, method); + async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string, extras:StringMap= {}) : Promise { + return this._oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url, method, extras); } async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise { From 44d15be1c4d8f5069f15ddc5351e546fc5eb7730 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 22 Mar 2024 21:15:41 +0100 Subject: [PATCH 240/565] fix(oidc): userInfo 401 on first login (release) --- packages/oidc-client/src/login.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 7f37919bb..95547c304 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -193,7 +193,7 @@ export const loginCallbackAsync = (oidc:Oidc) => async (isSilentSignin = false) } if (serviceWorker) { - await serviceWorker.initAsync(redirectUri, 'syncTokensAsync', configuration); + await serviceWorker.initAsync(oidcServerConfiguration, 'syncTokensAsync', configuration); loginParams = serviceWorker.getLoginParams(); if(demonstratingProofOfPossessionNonce) { await serviceWorker.setDemonstratingProofOfPossessionNonce(demonstratingProofOfPossessionNonce); From b24473db202ff0d26c56dc13e7e51f388a4e7576 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 22 Mar 2024 20:18:51 +0000 Subject: [PATCH 241/565] [skip ci] Update to version 7.20.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0966c6fe4..fbc42813a 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.19.6", + "version": "7.20.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 2ac453ee3..f4679c23b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.19.6'; +export default '7.20.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 81dd2c76d..95398f66f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.19.6", + "version": "7.20.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 2ac453ee3..f4679c23b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.19.6'; +export default '7.20.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 2282036ca..f0cef5649 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.19.6", + "version": "7.20.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From db670958a66482c8e78933a3e0b9a97b021af38e Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 22 Mar 2024 20:18:52 +0000 Subject: [PATCH 242/565] [skip ci] Generate changelog to version 7.20.0 --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12884a2e6..3f37312af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.19.6 +## 7.20.0 + +- [44d15be](https://github.com/AxaFrance/oidc-client/commit/44d15be1c4d8f5069f15ddc5351e546fc5eb7730) - fix(oidc): userInfo 401 on first login (release), 2024-03-22 by *Guillaume Chervet* +- [c7793c9](https://github.com/AxaFrance/oidc-client/commit/c7793c9913128dbb82a60dff11261ca5b4749f0c) - feat(oidc-client): add dpop extras to claims (alpha), 2024-03-19 by *Guillaume Chervet* + + +## v7.19.6 - [b7568f8](https://github.com/AxaFrance/oidc-client/commit/b7568f8d73d21ba1b7cd4890bff2ad30941696e2) - fix(oidc-service-worker): normalize userinfo endpoint in service worker (#1320) (release), 2024-03-13 by *meesvandongen* @@ -314,9 +320,3 @@ - [56bde67](https://github.com/AxaFrance/oidc-client/commit/56bde67566f8203e9d62ae6e8b722c86a7b63cae) - doc(readme): Update README.md, 2023-11-27 by *Guillaume Chervet* -## v7.9.3 - -- [a80844c](https://github.com/AxaFrance/oidc-client/commit/a80844c2668066b083009043f1dd94fa196e1f18) - fix(service-worker): make sure URL is normalized when comparing with token endpoint and revocation endpoint (#1198) (release), 2023-11-24 by *meesvandongen* -- [bf19dd0](https://github.com/AxaFrance/oidc-client/commit/bf19dd0cc975ea4524b0f68f9315625b3789801b) - fix(oidc-client): tokens refresh conflict multiple tabs (alpha), 2023-11-17 by *Guillaume Chervet* - - From 9a3ad3a474a66cc77fa2c3eb3eafa42f167f1e45 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 24 Mar 2024 16:20:32 +0100 Subject: [PATCH 243/565] feature(oidc): token renew only when required (release) (#1327) --- .../react-oidc-demo/src/configurations.ts | 3 +- packages/oidc-client/README.md | 6 +++- packages/oidc-client/src/events.ts | 1 + packages/oidc-client/src/fetch.ts | 6 ++-- packages/oidc-client/src/index.ts | 9 +++-- packages/oidc-client/src/oidc.ts | 13 ++++--- packages/oidc-client/src/parseTokens.spec.ts | 6 ++++ packages/oidc-client/src/parseTokens.ts | 10 +++++- packages/oidc-client/src/renewTokens.ts | 33 ++++++++++++------ packages/oidc-client/src/types.ts | 6 ++++ packages/oidc-client/src/user.ts | 34 ++++--------------- packages/react-oidc/README.md | 4 +++ packages/react-oidc/src/ReactOidc.tsx | 3 +- packages/react-oidc/src/User.ts | 3 +- packages/react-oidc/src/index.ts | 3 +- 15 files changed, 83 insertions(+), 57 deletions(-) diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index 195191a54..eb1a58728 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -1,4 +1,4 @@ -import { TokenRenewMode } from '@axa-fr/react-oidc'; +import { TokenRenewMode, TokenAutomaticRenewMode } from '@axa-fr/react-oidc'; export const configurationIdentityServer = { client_id: 'interactive.public.short', @@ -16,6 +16,7 @@ export const configurationIdentityServer = { // monitor_session: true, extras: { youhou_demo: 'youhou' }, token_renew_mode: TokenRenewMode.access_token_invalid, + token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, demonstrating_proof_of_possession: false, }; diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index be012d1a7..35d18b10d 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -161,7 +161,7 @@ oidcClient.tryKeepExistingSessionAsync().then(() => {

@axa-fr/oidc-client demo

Loading

`; - return + return; } let tokens = oidcClient.tokens; @@ -226,6 +226,10 @@ const configuration = { authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" + token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, // Optional, default is TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration + // TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration: renew tokens automatically before they expire + // TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted: renew tokens automatically only when fetch is executed + // It requires you to use fetch given by oidcClient.fetchWithTokens(fetch) or to use oidcClient.getValidTokenAsync() logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access diff --git a/packages/oidc-client/src/events.ts b/packages/oidc-client/src/events.ts index 5cb31c05e..9a902a0b3 100644 --- a/packages/oidc-client/src/events.ts +++ b/packages/oidc-client/src/events.ts @@ -26,4 +26,5 @@ export const eventNames = { syncTokensAsync_lock_not_available: 'syncTokensAsync_lock_not_available', syncTokensAsync_end: 'syncTokensAsync_end', syncTokensAsync_error: 'syncTokensAsync_error', + tokensInvalidAndWaitingActionsToRefresh: 'tokensInvalidAndWaitingActionsToRefresh', }; diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts index 1cdfcd6fe..5d1fdc72a 100644 --- a/packages/oidc-client/src/fetch.ts +++ b/packages/oidc-client/src/fetch.ts @@ -1,8 +1,9 @@ import {Fetch} from "./types"; import {OidcClient} from "./oidcClient"; +import {getValidTokenAsync} from "./parseTokens"; // @ts-ignore -export const fetchWithTokens = (fetch: Fetch, oidcClient: OidcClient | null) : Fetch => async (...params: Parameters) :Promise => { +export const fetchWithTokens = (fetch: Fetch, oidcClient: Oidc | null) : Fetch => async (...params: Parameters) :Promise => { const [url, options, ...rest] = params; const optionTmp = options ? { ...options } : { method: 'GET' }; let headers = new Headers(); @@ -14,9 +15,8 @@ export const fetchWithTokens = (fetch: Fetch, oidcClient: OidcClient | null) : F const oidc = oidcClient; // @ts-ignore - const getValidToken = await oidc.getValidTokenAsync(); + const getValidToken = await getValidTokenAsync(oidc); const accessToken = getValidToken?.tokens?.accessToken; - if (!headers.has('Accept')) { headers.set('Accept', 'application/json'); } diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 2dc2a8c9c..4ad660aff 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -1,3 +1,5 @@ +import {ILOidcLocation} from "./location"; + export { getFetchDefault } from './oidc.js'; export { TokenRenewMode } from './parseTokens.js'; export { getParseQueryStringFromLocation, getPath } from './route-utils'; @@ -5,7 +7,10 @@ export type { AuthorityConfiguration, Fetch, OidcConfiguration, - StringMap, + StringMap } from './types.js'; -export { type ILOidcLocation, OidcLocation } from './location.js'; + +export { OidcLocation } from './location.js'; +export type { ILOidcLocation } from './location.js'; +export { TokenAutomaticRenewMode } from './types.js'; export { type OidcUserInfo, OidcClient } from './oidcClient.js'; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index b468a641f..56f4082c5 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -5,18 +5,16 @@ import {initSession} from './initSession.js'; import {defaultServiceWorkerUpdateRequireCallback, initWorkerAsync, sleepAsync} from './initWorker.js'; import {defaultLoginAsync, loginCallbackAsync} from './login.js'; import {destroyAsync, logoutAsync} from './logout.js'; -import {isTokensOidcValid, TokenRenewMode, Tokens,} from './parseTokens.js'; +import {TokenRenewMode, Tokens,} from './parseTokens.js'; import { autoRenewTokens, - renewTokensAndStartTimerAsync, - synchroniseTokensStatus, - syncTokensInfoAsync + renewTokensAndStartTimerAsync } from './renewTokens.js'; -import {fetchFromIssuer, performTokenRequestAsync} from './requests.js'; +import {fetchFromIssuer} from './requests.js'; import {getParseQueryStringFromLocation} from './route-utils.js'; -import defaultSilentLoginAsync, {_silentLoginAsync} from './silentLogin.js'; +import defaultSilentLoginAsync from './silentLogin.js'; import timer from './timer.js'; -import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap} from './types.js'; +import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap, TokenAutomaticRenewMode} from './types.js'; import {userInfoAsync} from './user.js'; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; import { @@ -112,6 +110,7 @@ export class Oidc { this.configuration = { ...configuration, silent_login_uri, + token_automatic_renew_mode: configuration.token_automatic_renew_mode ?? TokenAutomaticRenewMode.AutomaticBeforeTokenExpiration, monitor_session: configuration.monitor_session ?? false, refresh_time_before_tokens_expiration_in_second, silent_login_timeout: configuration.silent_login_timeout ?? 12000, diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 380f05d90..c58669a69 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -8,6 +8,8 @@ import { setTokens, TokenRenewMode } from "./parseTokens"; +import {StringMap, TokenAutomaticRenewMode} from "./types"; +import {sleepAsync} from "./initWorker"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -26,6 +28,10 @@ describe('ParseTokens test Suite', () => { expiresAt, issuedAt, }, + configuration: { token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticBeforeTokenExpiration}, + renewTokensAsync: async (extras: StringMap) => { + await sleepAsync({milliseconds:10}); + } }; const result = await getValidTokenAsync(oidc, 1, 1); expect(result.isTokensValid).toEqual(expectIsValidToken); diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index eec9e2ba1..82d2bfeff 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -1,4 +1,5 @@ import {sleepAsync} from './initWorker.js'; +import {OidcConfiguration, StringMap, TokenAutomaticRenewMode} from "./types"; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); @@ -174,6 +175,8 @@ export type ValidToken = { export interface OidcToken{ tokens?: Tokens; + configuration: { token_automatic_renew_mode?: TokenAutomaticRenewMode; }, + renewTokensAsync: (extras: StringMap) => Promise; } export const getValidTokenAsync = async (oidc: OidcToken, waitMs = 200, numberWait = 50): Promise => { @@ -182,7 +185,12 @@ export const getValidTokenAsync = async (oidc: OidcToken, waitMs = 200, numberWa return null; } while (!isTokensValid(oidc.tokens) && numberWaitTemp > 0) { - await sleepAsync({milliseconds: waitMs}); + if(oidc.configuration.token_automatic_renew_mode == TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted){ + await oidc.renewTokensAsync({}); + break; + } else { + await sleepAsync({milliseconds: waitMs}); + } numberWaitTemp = numberWaitTemp - 1; } const isValid = isTokensValid(oidc.tokens); diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 72762c61c..980789650 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -3,7 +3,7 @@ import {initWorkerAsync, sleepAsync} from './initWorker.js'; import Oidc from './oidc.js'; import {computeTimeLeft, isTokensOidcValid, setTokens, Tokens} from './parseTokens.js'; import timer from './timer.js'; -import {OidcConfiguration, StringMap} from './types.js'; +import {OidcConfiguration, StringMap, TokenAutomaticRenewMode} from './types.js'; import {_silentLoginAsync} from "./silentLogin"; import {performTokenRequestAsync} from "./requests"; import {eventNames} from "./events"; @@ -86,15 +86,16 @@ export const autoRenewTokens = (oidc:Oidc, expiresAt, extras:StringMap = null) = }; export const synchroniseTokensStatus ={ - 'SESSION_LOST': 'SESSION_LOST', - 'NOT_CONNECTED':'NOT_CONNECTED', - 'TOKENS_VALID':'TOKENS_VALID', - 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID': 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID', - 'LOGOUT_FROM_ANOTHER_TAB': 'LOGOUT_FROM_ANOTHER_TAB', - 'REQUIRE_SYNC_TOKENS': 'REQUIRE_SYNC_TOKENS' + FORCE_REFRESH: 'FORCE_REFRESH', + SESSION_LOST: 'SESSION_LOST', + NOT_CONNECTED:'NOT_CONNECTED', + TOKENS_VALID:'TOKENS_VALID', + TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID: 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID', + LOGOUT_FROM_ANOTHER_TAB: 'LOGOUT_FROM_ANOTHER_TAB', + REQUIRE_SYNC_TOKENS: 'REQUIRE_SYNC_TOKENS' }; -export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConfiguration, configurationName: string, currentTokens, forceRefresh = false) => { +export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConfiguration, configurationName: string, currentTokens: Tokens, forceRefresh = false) => { // Service Worker can be killed by the browser (when it wants,for example after 10 seconds of inactivity, so we retreieve the session if it happen) // const configuration = this.configuration; const nullNonce = { nonce: null }; @@ -147,8 +148,6 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf } - - const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = false, extras:StringMap = null, updateTokens) =>{ while (!navigator.onLine && document.hidden) { @@ -210,7 +209,6 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f if (index > 4) { if(isDocumentHidden){ - //oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); return { tokens: oidc.tokens, status: 'GIVE_UP' }; } else{ updateTokens(null); @@ -218,6 +216,7 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f return { tokens: null, status: 'SESSION_LOST' }; } } + try { const { status, tokens, nonce } = await syncTokensInfoAsync(oidc)(configuration, oidc.configurationName, oidc.tokens, forceRefresh); switch (status) { @@ -240,9 +239,21 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f oidc.publishEvent(eventNames.logout_from_another_tab, { status: 'session syncTokensAsync' }); return { tokens: null, status: 'LOGGED_OUT' }; case synchroniseTokensStatus.REQUIRE_SYNC_TOKENS: + + if(configuration.token_automatic_renew_mode == TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted && synchroniseTokensStatus.FORCE_REFRESH !== status ){ + oidc.publishEvent(eventNames.tokensInvalidAndWaitingActionsToRefresh, {}); + return { tokens: oidc.tokens, status: 'GIVE_UP' }; + } + oidc.publishEvent(eventNames.refreshTokensAsync_begin, { tryNumber: index }); return await localsilentLoginAsync(); default: { + + if(configuration.token_automatic_renew_mode == TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted && synchroniseTokensStatus.FORCE_REFRESH !== status ){ + oidc.publishEvent(eventNames.tokensInvalidAndWaitingActionsToRefresh, {}); + return { tokens: oidc.tokens, status: 'GIVE_UP' }; + } + oidc.publishEvent(eventNames.refreshTokensAsync_begin, { refreshToken: tokens.refreshToken, status, tryNumber: index }); if (!tokens.refreshToken) { return await localsilentLoginAsync(); diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index c823c772e..a816c4a31 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -6,6 +6,11 @@ export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAliv export type ServiceWorkerRegister = (serviceWorkerRelativeUrl:string) => Promise; export type ServiceWorkerActivate = () => boolean; +export enum TokenAutomaticRenewMode { + AutomaticBeforeTokenExpiration = 'AutomaticBeforeTokensExpiration', + AutomaticOnlyWhenFetchExecuted = 'AutomaticOnlyWhenFetchExecuted' +} + export type OidcConfiguration = { client_id: string; redirect_uri: string; @@ -18,6 +23,7 @@ export type OidcConfiguration = { authority_timeout_wellknowurl_in_millisecond?: number; authority_configuration?: AuthorityConfiguration; refresh_time_before_tokens_expiration_in_second?: number; + token_automatic_renew_mode?: TokenAutomaticRenewMode; token_request_timeout?: number; service_worker_relative_url?:string; service_worker_register?:ServiceWorkerRegister; diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index b523bab30..c01033d95 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -1,42 +1,22 @@ -import { sleepAsync } from './initWorker.js'; -import { isTokensValid } from './parseTokens.js'; import Oidc from "./oidc"; +import {fetchWithTokens} from "./fetch"; export const userInfoAsync = (oidc:Oidc) => async (noCache = false) => { if (oidc.userInfo != null && !noCache) { return oidc.userInfo; } - - // We wait the synchronisation before making a request - while (oidc.tokens && !isTokensValid(oidc.tokens)) { - await sleepAsync({milliseconds: 200}); - } - - if (!oidc.tokens) { - return null; - } - const accessToken = oidc.tokens.accessToken; - if (!accessToken) { - return null; - } - const configuration = oidc.configuration; const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); const url = oidcServerConfiguration.userInfoEndpoint; - const fetchUserInfo = async (accessToken) => { - const res = await fetch(url, { - headers: { - authorization: `Bearer ${accessToken}`, - }, - }); - - if (res.status !== 200) { + const fetchUserInfo = async () => { + const oidcFetch = fetchWithTokens(fetch, oidc); + const response = await oidcFetch(url); + if (response.status !== 200) { return null; } - - return res.json(); + return response.json(); }; - const userInfo = await fetchUserInfo(accessToken); + const userInfo = await fetchUserInfo(); oidc.userInfo = userInfo; return userInfo; }; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 1fee9a95f..17586e3c6 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -223,6 +223,10 @@ const configuration = { onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user with the same subject is logged out from another tab when session_monitor is active onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" + token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, // Optional, default is TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration + // TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration: renew tokens automatically before they expire + // TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted: renew tokens automatically only when fetch is executed + // It requires you to use fetch given by hook useOidcFetch(fetch) or HOC withOidcFetch(fetch)(Component) logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 805e183a1..f80acbb7e 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -127,11 +127,12 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) return state; }; -const idTokenInitialState = { idToken: null, idTokenPayload: null }; +const idTokenInitialState = { idToken: null, idTokenPayload: null}; const initIdToken = (configurationName: string) => { const getOidc = OidcClient.get; const oidc = getOidc(configurationName); + if (oidc.tokens) { const tokens = oidc.tokens; return { idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload }; diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index c972f25c2..fb25ad4ea 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -16,8 +16,7 @@ export type OidcUser = { export const useOidcUser = (configurationName = 'default') => { const [oidcUser, setOidcUser] = useState>({ user: null, status: OidcUserStatus.Unauthenticated }); const [oidcUserId, setOidcUserId] = useState(''); - - + useEffect(() => { const oidc = OidcClient.get(configurationName); let isMounted = true; diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index f967e4d8d..116041f13 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -8,5 +8,6 @@ export type { Fetch, OidcConfiguration, StringMap, + ILOidcLocation } from '@axa-fr/oidc-client'; -export { type OidcUserInfo, TokenRenewMode, OidcClient } from '@axa-fr/oidc-client'; +export { type OidcUserInfo, TokenRenewMode, OidcClient, TokenAutomaticRenewMode, OidcLocation } from '@axa-fr/oidc-client'; From 4c24244d7f1d205912cb3706ca6afe0e4cffae01 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 24 Mar 2024 15:23:11 +0000 Subject: [PATCH 244/565] [skip ci] Update to version 7.20.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index fbc42813a..ee443ae0a 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.20.0", + "version": "7.20.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f4679c23b..407969ea5 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.20.0'; +export default '7.20.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 95398f66f..f98b01ba4 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.20.0", + "version": "7.20.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f4679c23b..407969ea5 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.20.0'; +export default '7.20.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f0cef5649..bb8d175d4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.20.0", + "version": "7.20.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 51f6d124b059852fce7aad14330738fc541ea2ab Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 24 Mar 2024 15:23:13 +0000 Subject: [PATCH 245/565] [skip ci] Generate changelog to version 7.20.1 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f37312af..2181d4c73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.20.0 +## 7.20.1 + +- [9a3ad3a](https://github.com/AxaFrance/oidc-client/commit/9a3ad3a474a66cc77fa2c3eb3eafa42f167f1e45) - feature(oidc): token renew only when required (release) (#1327), 2024-03-24 by *Guillaume Chervet* + + +## v7.20.0 - [44d15be](https://github.com/AxaFrance/oidc-client/commit/44d15be1c4d8f5069f15ddc5351e546fc5eb7730) - fix(oidc): userInfo 401 on first login (release), 2024-03-22 by *Guillaume Chervet* - [c7793c9](https://github.com/AxaFrance/oidc-client/commit/c7793c9913128dbb82a60dff11261ca5b4749f0c) - feat(oidc-client): add dpop extras to claims (alpha), 2024-03-19 by *Guillaume Chervet* @@ -314,9 +319,3 @@ - [2fdfcb5](https://github.com/AxaFrance/oidc-client/commit/2fdfcb5ec727f0c6f5f86c4648b95ba4f265fc57) - Update README.md (#1210), 2023-11-29 by *Guillaume Chervet* -## v7.11.0 - -- [6751b5c](https://github.com/AxaFrance/oidc-client/commit/6751b5c3f0e1265e35ac9b4b20cb673657eea6b4) - feat(ci): add auto changelog (release), 2023-11-29 by *Guillaume Chervet* -- [56bde67](https://github.com/AxaFrance/oidc-client/commit/56bde67566f8203e9d62ae6e8b722c86a7b63cae) - doc(readme): Update README.md, 2023-11-27 by *Guillaume Chervet* - - From 8335b5a6f5c02d320d642a022ff3828513f5a43e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 28 Mar 2024 20:32:23 +0100 Subject: [PATCH 246/565] feat(dpop): add extras (alpha) (#1325) (release) * feat(dpop): add extras (alpha) * udpate readme --- packages/oidc-client/README.md | 3 ++- packages/oidc-client/src/index.ts | 5 +++++ packages/react-oidc/src/ReactOidc.tsx | 5 ++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 35d18b10d..b4904bdfb 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -402,9 +402,10 @@ export class OidcClient { * @param accessToken The access token to use. * @param url The url to use. * @param method The method to use. + * @param extras Additional parameters to send to the OIDC server during the demonstration of proof of possession request. * @returns A promise resolved with the proof of possession. */ - async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string): Promise; + async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string, extras:StringMap= {}): Promise; } ``` diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 4ad660aff..070d2b197 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -3,6 +3,11 @@ import {ILOidcLocation} from "./location"; export { getFetchDefault } from './oidc.js'; export { TokenRenewMode } from './parseTokens.js'; export { getParseQueryStringFromLocation, getPath } from './route-utils'; + +export type { + Tokens +} from './parseTokens.js'; + export type { AuthorityConfiguration, Fetch, diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index f80acbb7e..9a2aef457 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,6 +1,5 @@ -import { StringMap, OidcClient } from '@axa-fr/oidc-client'; +import { StringMap, OidcClient, Tokens } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; -import {Tokens} from "@axa-fr/oidc-client/dist/parseTokens"; const defaultConfigurationName = 'default'; @@ -86,7 +85,7 @@ export type OidcAccessToken = { } function getGenerateDemonstrationOfProofOfPossessionAsync(oidc: OidcClient, tokens: Tokens) { - return oidc.configuration.demonstrating_proof_of_possession ? (url: string, method: string) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method) : null; + return oidc.configuration.demonstrating_proof_of_possession ? (url: string, method: string, extras:StringMap={}) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method, extras) : null; } export const useOidcAccessToken = (configurationName = defaultConfigurationName) => { From 1c92712dab3df3c707d3a29653157f26c340c086 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 28 Mar 2024 19:35:15 +0000 Subject: [PATCH 247/565] [skip ci] Update to version 7.21.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ee443ae0a..9752cb820 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.20.1", + "version": "7.21.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 407969ea5..a6e42c8f0 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.20.1'; +export default '7.21.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index f98b01ba4..7bd821e61 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.20.1", + "version": "7.21.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 407969ea5..a6e42c8f0 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.20.1'; +export default '7.21.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index bb8d175d4..d687d5858 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.20.1", + "version": "7.21.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From ef1597ea2c6d41e8d61b6a27bc26f6ad40304a50 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 28 Mar 2024 19:35:17 +0000 Subject: [PATCH 248/565] [skip ci] Generate changelog to version 7.21.0 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2181d4c73..c4dee85a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.20.1 +## 7.21.0 + +- [8335b5a](https://github.com/AxaFrance/oidc-client/commit/8335b5a6f5c02d320d642a022ff3828513f5a43e) - feat(dpop): add extras (alpha) (#1325) (release), 2024-03-28 by *Guillaume Chervet* + + +## v7.20.1 - [9a3ad3a](https://github.com/AxaFrance/oidc-client/commit/9a3ad3a474a66cc77fa2c3eb3eafa42f167f1e45) - feature(oidc): token renew only when required (release) (#1327), 2024-03-24 by *Guillaume Chervet* @@ -313,9 +318,3 @@ - [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* -## v7.12.0 - -- [23217fe](https://github.com/AxaFrance/oidc-client/commit/23217fe3439500412eca9facc368e1ef5dfcb939) - feat(oidc-client): export OidcClient instance for client application (#1211) (release), 2023-11-29 by *Douglas Zaltron* -- [2fdfcb5](https://github.com/AxaFrance/oidc-client/commit/2fdfcb5ec727f0c6f5f86c4648b95ba4f265fc57) - Update README.md (#1210), 2023-11-29 by *Guillaume Chervet* - - From 032a00b501557fe6b5be48e83e4914051ee2c7f0 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 10 Apr 2024 07:59:41 +0200 Subject: [PATCH 249/565] feat(oidc): control dpop injection (release) (#1342) * feat(oidc): control dpop injection * fix (alpha) --- .../react-oidc-demo/public/OidcTrustedDomains.js | 4 +++- .../src/OidcServiceWorker.ts | 12 ++++++++++-- packages/oidc-client-service-worker/src/dpop.ts | 13 +++++++++++++ packages/oidc-client-service-worker/src/types.ts | 2 ++ .../src/utils/__tests__/domains.spec.ts | 1 + .../src/utils/__tests__/testHelper.ts | 1 + packages/oidc-client/README.md | 9 ++++++--- packages/oidc-client/src/fetch.ts | 4 ++-- packages/oidc-client/src/oidc.ts | 4 ++-- packages/oidc-client/src/oidcClient.ts | 6 +++--- packages/oidc-client/src/user.ts | 4 ++-- packages/react-oidc/README.md | 3 ++- packages/react-oidc/src/FetchToken.tsx | 12 ++++++------ packages/react-oidc/src/User.ts | 4 ++-- 14 files changed, 55 insertions(+), 24 deletions(-) diff --git a/examples/react-oidc-demo/public/OidcTrustedDomains.js b/examples/react-oidc-demo/public/OidcTrustedDomains.js index e7b4ee1c1..933b0f2bc 100644 --- a/examples/react-oidc-demo/public/OidcTrustedDomains.js +++ b/examples/react-oidc-demo/public/OidcTrustedDomains.js @@ -24,5 +24,7 @@ trustedDomains.config_separate_oidc_access_token_domains = { trustedDomains.config_with_dpop = { domains: ["https://demo.duendesoftware.com"], - demonstratingProofOfPossession: true }; + demonstratingProofOfPossession: true, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true +}; //# sourceMappingURL=OidcTrustedDomains.js.map \ No newline at end of file diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 22271eb52..cb3b7ba93 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -18,7 +18,7 @@ import {extractConfigurationNameFromCodeVerifier, replaceCodeVerifier} from './u import { normalizeUrl } from './utils/normalizeUrl'; import version from './version'; import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; -import {getDpopConfiguration} from "./dpop"; +import {getDpopConfiguration, getDpopOnlyWhenDpopHeaderPresent} from "./dpop"; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; // @ts-ignore @@ -97,7 +97,11 @@ const keepAliveAsync = async (event: FetchEvent) => { async function generateDpopAsync(originalRequest: Request, currentDatabase:OidcConfig|null, url: string, extrasClaims={} ) { const headersExtras = serializeHeaders(originalRequest.headers); - if (currentDatabase && currentDatabase.demonstratingProofOfPossessionConfiguration && currentDatabase.demonstratingProofOfPossessionJwkJson) { + if (currentDatabase && + currentDatabase.demonstratingProofOfPossessionConfiguration && + currentDatabase.demonstratingProofOfPossessionJwkJson && + (!currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent || currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent && headersExtras['dpop']) + ) { const dpopConfiguration = currentDatabase.demonstratingProofOfPossessionConfiguration; const jwk = currentDatabase.demonstratingProofOfPossessionJwkJson; headersExtras['dpop'] = await generateJwtDemonstratingProofOfPossessionAsync(self)(dpopConfiguration)(jwk, 'POST', url, extrasClaims); @@ -363,6 +367,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, }; currentDatabase = database[configurationName]; @@ -379,6 +384,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { currentDatabase.demonstratingProofOfPossessionNonce = null; currentDatabase.demonstratingProofOfPossessionJwkJson = null; currentDatabase.demonstratingProofOfPossessionConfiguration = null; + currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent = false; currentDatabase.status = data.data.status; port.postMessage({ configurationName }); return; @@ -398,6 +404,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { } currentDatabase.oidcServerConfiguration = oidcServerConfiguration; currentDatabase.oidcConfiguration = data.data.oidcConfiguration; + if(currentDatabase.demonstratingProofOfPossessionConfiguration == null ){ const demonstratingProofOfPossessionConfiguration = getDpopConfiguration(trustedDomains[configurationName]); @@ -407,6 +414,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { } currentDatabase.demonstratingProofOfPossessionConfiguration = demonstratingProofOfPossessionConfiguration; currentDatabase.demonstratingProofOfPossessionJwkJson = await generateJwkAsync(self)(demonstratingProofOfPossessionConfiguration.generateKeyAlgorithm); + currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent = getDpopOnlyWhenDpopHeaderPresent(trustedDomains[configurationName]) ?? false; } } diff --git a/packages/oidc-client-service-worker/src/dpop.ts b/packages/oidc-client-service-worker/src/dpop.ts index dfa516d1e..921c9f9ad 100644 --- a/packages/oidc-client-service-worker/src/dpop.ts +++ b/packages/oidc-client-service-worker/src/dpop.ts @@ -19,4 +19,17 @@ export const getDpopConfiguration = (trustedDomain: Domain[] | DomainDetails) => } return trustedDomain.demonstratingProofOfPossessionConfiguration ?? defaultDemonstratingProofOfPossessionConfiguration; +} + +export const getDpopOnlyWhenDpopHeaderPresent = (trustedDomain: Domain[] | DomainDetails) => { + + if(!isDpop(trustedDomain)) { + return null; + } + + if (Array.isArray(trustedDomain)) { + return null; + } + + return trustedDomain.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent ?? true; } \ No newline at end of file diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index ef3244671..dd687f4a1 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -6,6 +6,7 @@ export type DomainDetails = { convertAllRequestsToCorsExceptNavigate?: boolean, setAccessTokenToNavigateRequests?: boolean, demonstratingProofOfPossession?:boolean; + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent?:boolean; demonstratingProofOfPossessionConfiguration?: DemonstratingProofOfPossessionConfiguration; } @@ -84,6 +85,7 @@ export type OidcConfig = { setAccessTokenToNavigateRequests: boolean, demonstratingProofOfPossessionNonce: string | null; demonstratingProofOfPossessionJwkJson: string | null; + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: boolean; } export type IdTokenPayload = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 75aa7cf58..eea8e1a46 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -54,6 +54,7 @@ describe('domains', () => { demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, }, }; }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 6e30e61e2..fd960ba65 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -129,6 +129,7 @@ class OidcConfigBuilder { demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index b4904bdfb..576aadcbc 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -102,7 +102,8 @@ trustedDomains.config_show_access_token = { // DPoP (Demonstrating Proof of Possession) will be activated for the following domains trustedDomains.config_with_dpop = { domains: ["https://demo.duendesoftware.com"], - demonstratingProofOfPossession: true + demonstratingProofOfPossession: true, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true, // default value is false, inject DPOP token only when DPOP header is present // Optional, more details bellow /*demonstratingProofOfPossessionConfiguration: { importKeyAlgorithm: { @@ -386,16 +387,18 @@ export class OidcClient { /** * Retrieves a new fetch function that inject bearer tokens (also DPOP tokens). * @param fetch The current fetch function to use + * @param demonstrating_proof_of_possession Indicates whether the demonstration of proof of possession should be used. * @returns Fetch A new fectch function that inject bearer tokens (also DPOP tokens). */ - fetchWithTokens(fetch: Fetch): Fetch; + fetchWithTokens(fetch: Fetch, demonstrating_proof_of_possession=false): Fetch; /** * Retrieves OIDC user information. * @param noCache Indicates whether user information should be retrieved bypassing the cache. + * @param demonstrating_proof_of_possession Indicates whether the demonstration of proof of possession should be used. * @returns A promise resolved with the user information, or rejected with an error. */ - async userInfoAsync(noCache = false): Promise; + async userInfoAsync(noCache = false, demonstrating_proof_of_possession=false): Promise; /** * Generate Demonstration of proof of possession. diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts index 5d1fdc72a..1d33fc86d 100644 --- a/packages/oidc-client/src/fetch.ts +++ b/packages/oidc-client/src/fetch.ts @@ -3,7 +3,7 @@ import {OidcClient} from "./oidcClient"; import {getValidTokenAsync} from "./parseTokens"; // @ts-ignore -export const fetchWithTokens = (fetch: Fetch, oidcClient: Oidc | null) : Fetch => async (...params: Parameters) :Promise => { +export const fetchWithTokens = (fetch: Fetch, oidcClient: Oidc | null, demonstrating_proof_of_possession:boolean=false) : Fetch => async (...params: Parameters) :Promise => { const [url, options, ...rest] = params; const optionTmp = options ? { ...options } : { method: 'GET' }; let headers = new Headers(); @@ -21,7 +21,7 @@ export const fetchWithTokens = (fetch: Fetch, oidcClient: Oidc | null) : Fetch = headers.set('Accept', 'application/json'); } if (accessToken) { - if(oidc.configuration.demonstrating_proof_of_possession) { + if(oidc.configuration.demonstrating_proof_of_possession && demonstrating_proof_of_possession) { const demonstrationOdProofOfPossession = await oidc.generateDemonstrationOfProofOfPossessionAsync(accessToken, url.toString(), optionTmp.method); headers.set('Authorization', `PoP ${accessToken}`); headers.set('DPoP', demonstrationOdProofOfPossession); diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 56f4082c5..0398a05f7 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -332,11 +332,11 @@ Please checkout that you are using OIDC hook inside a = null; - userInfoAsync(noCache = false) { + userInfoAsync(noCache = false, demonstrating_proof_of_possession=false) { if (this.userInfoPromise !== null) { return this.userInfoPromise; } - this.userInfoPromise = userInfoAsync(this)(noCache); + this.userInfoPromise = userInfoAsync(this)(noCache, demonstrating_proof_of_possession); return this.userInfoPromise.then(result => { this.userInfoPromise = null; return result; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 2e2762014..7a799e17a 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -75,11 +75,11 @@ export class OidcClient { return getValidTokenAsync(this._oidc, waitMs, numberWait); } - fetchWithTokens(fetch: Fetch): Fetch { - return fetchWithTokens(fetch, this); + fetchWithTokens(fetch: Fetch, demonstrating_proof_of_possession:false): Fetch { + return fetchWithTokens(fetch, this, demonstrating_proof_of_possession); } - async userInfoAsync(noCache = false):Promise { + async userInfoAsync(noCache = false, demonstrating_proof_of_possession:boolean=false):Promise { return this._oidc.userInfoAsync(noCache); } } diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index c01033d95..361b59c9b 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -1,7 +1,7 @@ import Oidc from "./oidc"; import {fetchWithTokens} from "./fetch"; -export const userInfoAsync = (oidc:Oidc) => async (noCache = false) => { +export const userInfoAsync = (oidc:Oidc) => async (noCache = false, demonstrating_proof_of_possession=false) => { if (oidc.userInfo != null && !noCache) { return oidc.userInfo; } @@ -9,7 +9,7 @@ export const userInfoAsync = (oidc:Oidc) => async (noCache = false) => { const oidcServerConfiguration = await oidc.initAsync(configuration.authority, configuration.authority_configuration); const url = oidcServerConfiguration.userInfoEndpoint; const fetchUserInfo = async () => { - const oidcFetch = fetchWithTokens(fetch, oidc); + const oidcFetch = fetchWithTokens(fetch, oidc, demonstrating_proof_of_possession); const response = await oidcFetch(url); if (response.status !== 200) { return null; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 17586e3c6..5a02047ff 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -101,7 +101,8 @@ trustedDomains.config_show_access_token = { // DPoP (Demonstrating Proof of Possession) will be activated for the following domains trustedDomains.config_with_dpop = { domains: ["https://demo.duendesoftware.com"], - demonstratingProofOfPossession: true + demonstratingProofOfPossession: true, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true, // default value is false, inject DPOP token only when DPOP header is present // Optional, more details bellow /*demonstratingProofOfPossessionConfiguration: { importKeyAlgorithm: { diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index af94a512f..e311778e0 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -7,27 +7,27 @@ export interface ComponentWithOidcFetchProps { const defaultConfigurationName = 'default'; -const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null) => async (...params: Parameters) => { +const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null, demonstrating_proof_of_possession=false) => async (...params: Parameters) => { const oidc = getOidcWithConfigurationName(); - const newFetch = oidc.fetchWithTokens(fetch); + const newFetch = oidc.fetchWithTokens(fetch, demonstrating_proof_of_possession); return await newFetch(...params); }; -export const withOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName) => ( +export const withOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName, demonstrating_proof_of_possession:boolean=false) => ( WrappedComponent, ) => (props: ComponentWithOidcFetchProps) => { - const { fetch: newFetch } = useOidcFetch(fetch || props.fetch, configurationName); + const { fetch: newFetch } = useOidcFetch(fetch || props.fetch, configurationName, demonstrating_proof_of_possession); return ; }; -export const useOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName) => { +export const useOidcFetch = (fetch: Fetch = null, configurationName = defaultConfigurationName, demonstrating_proof_of_possession:boolean=false) => { const previousFetch = fetch || window.fetch; const getOidc = OidcClient.get; const memoizedFetchCallback = useCallback( (input: RequestInfo | URL, init?: RequestInit) => { const getOidcWithConfigurationName = () => getOidc(configurationName); - const newFetch = fetchWithToken(previousFetch, getOidcWithConfigurationName); + const newFetch = fetchWithToken(previousFetch, getOidcWithConfigurationName, demonstrating_proof_of_possession); return newFetch(input, init); }, [previousFetch, configurationName], diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index fb25ad4ea..d7693f748 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -13,7 +13,7 @@ export type OidcUser = { status: OidcUserStatus; } -export const useOidcUser = (configurationName = 'default') => { +export const useOidcUser = (configurationName = 'default', demonstrating_proof_of_possession=false) => { const [oidcUser, setOidcUser] = useState>({ user: null, status: OidcUserStatus.Unauthenticated }); const [oidcUserId, setOidcUserId] = useState(''); @@ -23,7 +23,7 @@ export const useOidcUser = (configuration if (oidc && oidc.tokens) { setOidcUser({ ...oidcUser, status: OidcUserStatus.Loading }); const isNoCache = oidcUserId !== ''; - oidc.userInfoAsync(isNoCache) + oidc.userInfoAsync(isNoCache, demonstrating_proof_of_possession) .then((info) => { if (isMounted) { // @ts-ignore From dcfcbda7352a8afee53d297b86802a7f51736608 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Apr 2024 06:02:30 +0000 Subject: [PATCH 250/565] [skip ci] Update to version 7.22.0 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 9752cb820..1bfc0e49e 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.21.0", + "version": "7.22.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index a6e42c8f0..595cf8eeb 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.21.0'; +export default '7.22.0'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 7bd821e61..97314ac0f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.21.0", + "version": "7.22.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index a6e42c8f0..595cf8eeb 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.21.0'; +export default '7.22.0'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index d687d5858..c982f7a70 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.21.0", + "version": "7.22.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From b42f5bb4a5f547b6f69783208ec6fc1f08e351ba Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Apr 2024 06:02:32 +0000 Subject: [PATCH 251/565] [skip ci] Generate changelog to version 7.22.0 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4dee85a1..f44a903c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.21.0 +## 7.22.0 + +- [032a00b](https://github.com/AxaFrance/oidc-client/commit/032a00b501557fe6b5be48e83e4914051ee2c7f0) - feat(oidc): control dpop injection (release) (#1342), 2024-04-10 by *Guillaume Chervet* + + +## v7.21.0 - [8335b5a](https://github.com/AxaFrance/oidc-client/commit/8335b5a6f5c02d320d642a022ff3828513f5a43e) - feat(dpop): add extras (alpha) (#1325) (release), 2024-03-28 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [cd575e7](https://github.com/AxaFrance/oidc-client/commit/cd575e716f4fbcb1ba09a76a1530a3ae23f08599) - fix(ci): last clean and test (release), 2023-11-29 by *Guillaume Chervet* -## v7.12.1 - -- [2b5aa6a](https://github.com/AxaFrance/oidc-client/commit/2b5aa6aba61bb35c7ae95102a34a8517c37607e5) - fix(ci): changelog in another commit (release), 2023-11-29 by *Guillaume Chervet* - - From be2465852e837b749abd3a86c5c0caa57a2ea8b6 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Mon, 15 Apr 2024 21:37:39 +0200 Subject: [PATCH 252/565] refactor(all): update libs (release) --- package.json | 24 +- .../oidc-client-service-worker/package.json | 10 +- packages/oidc-client/package.json | 14 +- packages/react-oidc/package.json | 16 +- pnpm-lock.yaml | 2218 ++++++++++++----- 5 files changed, 1587 insertions(+), 695 deletions(-) diff --git a/package.json b/package.json index 6a92fbee9..5202792e4 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,26 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.21.0", - "@typescript-eslint/parser": "6.21.0", - "eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "7.7.0", + "@typescript-eslint/parser": "7.7.0", + "eslint": "^9.0.0", "eslint-config-prettier": "9.1.0", "eslint-define-config": "2.1.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-jsx-a11y": "6.8.0", - "eslint-plugin-n": "16.6.2", + "eslint-plugin-n": "17.2.1", "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-prettier": "5.0.1", - "eslint-plugin-react": "7.33.2", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-react": "7.34.1", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-regexp": "^2.2.0", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-testing-library": "6.2.0", + "eslint-plugin-regexp": "2.5.0", + "eslint-plugin-simple-import-sort": "12.1.0", + "eslint-plugin-testing-library": "6.2.2", "prettier": "3.2.5", "tslib": "^2.6.2", - "tsx": "4.7.0", - "typescript": "5.3.3", - "vitest": "1.3.1" + "tsx": "4.7.2", + "typescript": "5.4.5", + "vitest": "1.5.0" }, "engines": { "node": "16.* || >= 18.0.0" diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1bfc0e49e..4d1fb7b33 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,14 +34,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "1.3.1", + "@vitest/coverage-v8": "1.5.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", - "typescript": "5.4.2", - "vite": "5.1.6", - "vite-plugin-dts": "3.7.3", - "vitest": "1.3.1" + "typescript": "5.4.5", + "vite": "5.2.8", + "vite-plugin-dts": "3.8.3", + "vitest": "1.5.0" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 97314ac0f..20ed6f814 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -23,17 +23,17 @@ "@axa-fr/oidc-client-service-worker": "workspace:*" }, "devDependencies": { - "@testing-library/dom": "9.3.4", + "@testing-library/dom": "10.0.0", "@testing-library/jest-dom": "6.4.2", - "@testing-library/react": "14.2.1", - "@vitest/coverage-v8": "1.3.1", + "@testing-library/react": "15.0.2", + "@vitest/coverage-v8": "1.5.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", "rimraf": "5.0.5", - "typescript": "5.4.2", - "vite": "5.1.6", - "vite-plugin-dts": "3.7.3", - "vitest": "1.3.1" + "typescript": "5.4.5", + "vite": "5.2.8", + "vite-plugin-dts": "3.8.3", + "vitest": "1.5.0" }, "keywords": [ "oidc", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index c982f7a70..e6c0d0353 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -48,23 +48,23 @@ }, "devDependencies": { "@testing-library/jest-dom": "6.4.2", - "@testing-library/react": "14.2.1", + "@testing-library/react": "15.0.2", "@testing-library/user-event": "14.5.2", - "@types/react": "^18.2.39", + "@types/react": "^18.2.78", "@vitejs/plugin-react": "4.2.1", - "@vitest/coverage-v8": "1.3.1", + "@vitest/coverage-v8": "1.5.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "jsdom": "24.0.0", - "msw": "2.1.6", + "msw": "2.2.13", "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "5.0.5", - "typescript": "5.4.2", - "vite": "5.1.6", - "vite-plugin-dts": "3.7.3", - "vitest": "1.3.1" + "typescript": "5.4.5", + "vite": "5.2.8", + "vite-plugin-dts": "3.8.3", + "vitest": "1.5.0" }, "license": "MIT", "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17870fdd9..dc3f5f7a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,50 +9,50 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.7.0 + version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 6.21.0 - version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.7.0 + version: 7.7.0(eslint@9.0.0)(typescript@5.4.5) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^9.0.0 + version: 9.0.0 eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@9.0.0) eslint-define-config: specifier: 2.1.0 version: 2.1.0 eslint-plugin-import: specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint@9.0.0) eslint-plugin-jsx-a11y: specifier: 6.8.0 - version: 6.8.0(eslint@8.56.0) + version: 6.8.0(eslint@9.0.0) eslint-plugin-n: - specifier: 16.6.2 - version: 16.6.2(eslint@8.56.0) + specifier: 17.2.1 + version: 17.2.1(eslint@9.0.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: - specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) + specifier: 5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5) eslint-plugin-react: - specifier: 7.33.2 - version: 7.33.2(eslint@8.56.0) + specifier: 7.34.1 + version: 7.34.1(eslint@9.0.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.56.0) + version: 4.6.0(eslint@9.0.0) eslint-plugin-regexp: - specifier: ^2.2.0 - version: 2.2.0(eslint@8.56.0) + specifier: 2.5.0 + version: 2.5.0(eslint@9.0.0) eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.56.0) + specifier: 12.1.0 + version: 12.1.0(eslint@9.0.0) eslint-plugin-testing-library: - specifier: 6.2.0 - version: 6.2.0(eslint@8.56.0)(typescript@5.3.3) + specifier: 6.2.2 + version: 6.2.2(eslint@9.0.0)(typescript@5.4.5) prettier: specifier: 3.2.5 version: 3.2.5 @@ -60,14 +60,14 @@ importers: specifier: ^2.6.2 version: 2.6.2 tsx: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.7.2 + version: 4.7.2 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.4.5 + version: 5.4.5 vitest: - specifier: 1.3.1 - version: 1.3.1 + specifier: 1.5.0 + version: 1.5.0 examples/nextjs-demo: dependencies: @@ -91,10 +91,10 @@ importers: version: link:../../packages/oidc-client '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.3.1) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@9.3.4) + version: 14.5.2(@testing-library/dom@10.0.0) '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -138,7 +138,7 @@ importers: version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@9.3.4) + version: 14.5.2(@testing-library/dom@10.0.0) '@types/react': specifier: 18.2.65 version: 18.2.65 @@ -162,7 +162,7 @@ importers: version: 5.4.2 vite: specifier: 5.1.6 - version: 5.1.6(@types/node@20.11.26) + version: 5.1.6 vite-plugin-dts: specifier: 3.7.3 version: 3.7.3(typescript@5.4.2)(vite@5.1.6) @@ -177,17 +177,17 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/dom': - specifier: 9.3.4 - version: 9.3.4 + specifier: 10.0.0 + version: 10.0.0 '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(vitest@1.3.1) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) '@testing-library/react': - specifier: 14.2.1 - version: 14.2.1(react-dom@18.2.0)(react@18.2.0) + specifier: 15.0.2 + version: 15.0.2(react-dom@18.2.0)(react@18.2.0) '@vitest/coverage-v8': - specifier: 1.3.1 - version: 1.3.1(vitest@1.3.1) + specifier: 1.5.0 + version: 1.5.0(vitest@1.5.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -198,23 +198,23 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: 5.4.5 + version: 5.4.5 vite: - specifier: 5.1.6 - version: 5.1.6(@types/node@20.11.26) + specifier: 5.2.8 + version: 5.2.8 vite-plugin-dts: - specifier: 3.7.3 - version: 3.7.3(typescript@5.4.2)(vite@5.1.6) + specifier: 3.8.3 + version: 3.8.3(typescript@5.4.5)(vite@5.2.8) vitest: - specifier: 1.3.1 - version: 1.3.1 + specifier: 1.5.0 + version: 1.5.0 packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 1.3.1 - version: 1.3.1(vitest@1.3.1) + specifier: 1.5.0 + version: 1.5.0(vitest@1.5.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -225,17 +225,17 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: 5.4.5 + version: 5.4.5 vite: - specifier: 5.1.6 - version: 5.1.6(@types/node@20.11.26) + specifier: 5.2.8 + version: 5.2.8 vite-plugin-dts: - specifier: 3.7.3 - version: 3.7.3(typescript@5.4.2)(vite@5.1.6) + specifier: 3.8.3 + version: 3.8.3(typescript@5.4.5)(vite@5.2.8) vitest: - specifier: 1.3.1 - version: 1.3.1 + specifier: 1.5.0 + version: 1.5.0 packages/react-oidc: dependencies: @@ -248,22 +248,22 @@ importers: devDependencies: '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(vitest@1.3.1) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) '@testing-library/react': - specifier: 14.2.1 - version: 14.2.1(react-dom@18.2.0)(react@18.2.0) + specifier: 15.0.2 + version: 15.0.2(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@9.3.4) + version: 14.5.2(@testing-library/dom@10.0.0) '@types/react': - specifier: ^18.2.39 - version: 18.2.39 + specifier: ^18.2.78 + version: 18.2.78 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.1.6) + version: 4.2.1(vite@5.2.8) '@vitest/coverage-v8': - specifier: 1.3.1 - version: 1.3.1(vitest@1.3.1) + specifier: 1.5.0 + version: 1.5.0(vitest@1.5.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -277,8 +277,8 @@ importers: specifier: 24.0.0 version: 24.0.0 msw: - specifier: 2.1.6 - version: 2.1.6(typescript@5.4.2) + specifier: 2.2.13 + version: 2.2.13(typescript@5.4.5) react: specifier: ^18.2.0 version: 18.2.0 @@ -289,17 +289,17 @@ importers: specifier: 5.0.5 version: 5.0.5 typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: 5.4.5 + version: 5.4.5 vite: - specifier: 5.1.6 - version: 5.1.6(@types/node@20.11.26) + specifier: 5.2.8 + version: 5.2.8 vite-plugin-dts: - specifier: 3.7.3 - version: 3.7.3(typescript@5.4.2)(vite@5.1.6) + specifier: 3.8.3 + version: 3.8.3(typescript@5.4.5)(vite@5.2.8) vitest: - specifier: 1.3.1 - version: 1.3.1(jsdom@24.0.0) + specifier: 1.5.0 + version: 1.5.0(jsdom@24.0.0) packages: @@ -316,7 +316,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 dev: true /@babel/code-frame@7.23.5: @@ -360,7 +360,7 @@ packages: dependencies: '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 dev: true @@ -562,6 +562,14 @@ packages: requiresBuild: true optional: true + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + optional: true + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -570,6 +578,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -578,6 +594,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -586,6 +610,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -594,6 +626,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -602,6 +642,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -610,6 +658,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -618,6 +674,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -626,6 +690,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -634,6 +706,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -642,6 +722,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -650,6 +738,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -658,6 +754,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -666,6 +770,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -674,6 +786,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -682,6 +802,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -690,6 +818,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -698,6 +834,14 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -706,6 +850,14 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -714,6 +866,14 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -722,6 +882,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -730,6 +898,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -738,13 +914,21 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 dev: true @@ -753,14 +937,14 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.0.1 + globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -770,16 +954,16 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -791,8 +975,45 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@inquirer/confirm@3.1.4: + resolution: {integrity: sha512-2z2RC0JyQCmggQfRxFnQitGp8YZgdM/AqcOuLaUtL0dZHFByk5jgtzxECX4z5MsH8aq2WzdLPI2AHmHOkh8eRA==} + engines: {node: '>=18'} + dependencies: + '@inquirer/core': 8.0.0 + '@inquirer/type': 1.3.0 + dev: true + + /@inquirer/core@8.0.0: + resolution: {integrity: sha512-RAszmjXj+grbT9yQ9B+me40LskytwBYPhyl6yHI8h+J5BmL0gNI3pdvBBFD6S9LV0lzhzfCRMBMH5UvuUPYzZQ==} + engines: {node: '>=18'} + dependencies: + '@inquirer/figures': 1.0.0 + '@inquirer/type': 1.3.0 + '@types/mute-stream': 0.0.4 + '@types/node': 20.12.7 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /@inquirer/figures@1.0.0: + resolution: {integrity: sha512-3fw+7+77/duTnMJTeSS44wneszghI4tkr0m0xdIJabbYRe36ElzmsqyboMZ1nFRon6sT+ckVvYDVjwapKv+2sw==} + engines: {node: '>=18'} + dev: true + + /@inquirer/type@1.3.0: + resolution: {integrity: sha512-RW4Zf6RCTnInRaOZuRHTqAUl+v6VJuQGglir7nW2BkT3OXOphMhkIFhvFRjorBx2l0VwtC/M4No8vYR65TdN9Q==} + engines: {node: '>=18'} dev: true /@isaacs/cliui@8.0.2: @@ -817,7 +1038,6 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 - dev: false /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -835,7 +1055,6 @@ packages: '@types/node': 20.11.26 '@types/yargs': 17.0.32 chalk: 4.1.2 - dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -843,7 +1062,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 dev: true /@jridgewell/resolve-uri@3.1.1: @@ -859,13 +1078,23 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@microsoft/api-extractor-model@7.28.13: + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2 + transitivePeerDependencies: + - '@types/node' + dev: true + /@microsoft/api-extractor-model@7.28.3: resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: @@ -896,6 +1125,27 @@ packages: - '@types/node' dev: true + /@microsoft/api-extractor@7.43.0: + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.13 + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2 + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0 + '@rushstack/ts-command-line': 4.19.1 + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + dev: true + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: @@ -914,8 +1164,8 @@ packages: engines: {node: '>=18'} dev: true - /@mswjs/interceptors@0.25.15: - resolution: {integrity: sha512-s4jdyxmq1eeftfDXJ7MUiK/jlvYaU8Sr75+42hHCVBrYez0k51RHbMitKIKdmsF92Q6gwhp8Sm1MmvdA9llpcg==} + /@mswjs/interceptors@0.26.15: + resolution: {integrity: sha512-HM47Lu1YFmnYHKMBynFfjCp0U/yRskHj/8QEJW0CBEPOlw8Gkmjfll+S9b8M7V5CNDw2/ciRxjjnWeaCiblSIQ==} engines: {node: '>=18'} dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -1078,6 +1328,13 @@ packages: picomatch: 2.3.1 dev: true + /@rollup/rollup-android-arm-eabi@4.14.3: + resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@rollup/rollup-android-arm-eabi@4.9.6: resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} cpu: [arm] @@ -1085,6 +1342,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-android-arm64@4.14.3: + resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@rollup/rollup-android-arm64@4.9.6: resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} cpu: [arm64] @@ -1092,6 +1356,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-darwin-arm64@4.14.3: + resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@rollup/rollup-darwin-arm64@4.9.6: resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} cpu: [arm64] @@ -1099,6 +1370,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-darwin-x64@4.14.3: + resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@rollup/rollup-darwin-x64@4.9.6: resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} cpu: [x64] @@ -1106,6 +1384,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.14.3: + resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} cpu: [arm] @@ -1113,23 +1398,72 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + /@rollup/rollup-linux-arm-musleabihf@4.14.3: + resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.14.3: + resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] + /@rollup/rollup-linux-arm64-musl@4.14.3: + resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: + resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.14.3: + resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.14.3: + resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.14.3: + resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} + cpu: [x64] os: [linux] requiresBuild: true optional: true @@ -1141,6 +1475,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-x64-musl@4.14.3: + resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-x64-musl@4.9.6: resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} cpu: [x64] @@ -1148,6 +1489,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.14.3: + resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.9.6: resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} cpu: [arm64] @@ -1155,6 +1503,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.14.3: + resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.9.6: resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} cpu: [ia32] @@ -1162,6 +1517,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-x64-msvc@4.14.3: + resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.9.6: resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} cpu: [x64] @@ -1186,6 +1548,22 @@ packages: z-schema: 5.0.5 dev: true + /@rushstack/node-core-library@4.0.2: + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + dev: true + /@rushstack/rig-package@0.5.1: resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} dependencies: @@ -1193,6 +1571,25 @@ packages: strip-json-comments: 3.1.1 dev: true + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/terminal@0.10.0: + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2 + supports-color: 8.1.1 + dev: true + /@rushstack/ts-command-line@4.17.1: resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} dependencies: @@ -1202,6 +1599,17 @@ packages: string-argv: 0.3.2 dev: true + /@rushstack/ts-command-line@4.19.1: + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + dependencies: + '@rushstack/terminal': 0.10.0 + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1211,6 +1619,19 @@ packages: tslib: 2.6.2 dev: false + /@testing-library/dom@10.0.0: + resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} + engines: {node: '>=18'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.9 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + /@testing-library/dom@9.3.4: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} @@ -1223,8 +1644,9 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.3.1): + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.5.0): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -1254,8 +1676,7 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.3.1 - dev: false + vitest: 1.5.0 /@testing-library/jest-dom@6.4.2(vitest@1.3.1): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} @@ -1303,13 +1724,27 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + /@testing-library/react@15.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5mzIpuytB1ctpyywvyaY2TAAUQVCZIGqwiqFQf6u9lvj/SJQepGUzNV18Xpk+NLCaCE2j7CWrZE0tEf9xLZYiQ==} + engines: {node: '>=18'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.23.9 + '@testing-library/dom': 10.0.0 + '@types/react-dom': 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@testing-library/user-event@14.5.2(@testing-library/dom@10.0.0): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.0.0 /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1361,20 +1796,17 @@ packages: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 - dev: false /@types/istanbul-reports@3.0.4: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 - dev: false /@types/jest@29.5.12: resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 - dev: false /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1384,11 +1816,23 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/mute-stream@0.0.4: + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + dependencies: + '@types/node': 20.11.26 + dev: true + /@types/node@20.11.26: resolution: {integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==} dependencies: undici-types: 5.26.5 + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true @@ -1396,22 +1840,21 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.65 + '@types/react': 18.2.78 dev: true - /@types/react@18.2.39: - resolution: {integrity: sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==} + /@types/react@18.2.65: + resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 dev: true - /@types/react@18.2.65: - resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} + /@types/react@18.2.78: + resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} dependencies: '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 csstype: 3.1.2 dev: true @@ -1423,70 +1866,75 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: false /@types/statuses@2.0.4: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} dev: true + /@types/wrap-ansi@3.0.0: + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + dev: true + /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false /@types/yargs@17.0.32: resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 - dev: false - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/type-utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 9.0.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.2.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4 - eslint: 8.56.0 - typescript: 5.3.3 + eslint: 9.0.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -1499,30 +1947,30 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.7.0: + resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.2.0(typescript@5.3.3) - typescript: 5.3.3 + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -1532,12 +1980,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.7.0: + resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1552,47 +2000,47 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): + resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.2.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 9.0.0 eslint-scope: 5.1.1 semver: 7.6.0 transitivePeerDependencies: @@ -1600,19 +2048,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - eslint: 8.56.0 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -1627,19 +2075,31 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.7.0: + resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.7.0 eslint-visitor-keys: 3.4.3 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@vitejs/plugin-react@4.2.1(vite@5.1.6): + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.1.6 + transitivePeerDependencies: + - supports-color dev: true - /@vitejs/plugin-react@4.2.1(vite@5.1.6): + /@vitejs/plugin-react@4.2.1(vite@5.2.8): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1650,30 +2110,30 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.1.6(@types/node@20.11.26) + vite: 5.2.8 transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-v8@1.3.1(vitest@1.3.1): - resolution: {integrity: sha512-UuBnkSJUNE9rdHjDCPyJ4fYuMkoMtnghes1XohYa4At0MS3OQSAo97FrbwSLRshYsXThMZy1+ybD/byK5llyIg==} + /@vitest/coverage-v8@1.5.0(vitest@1.5.0): + resolution: {integrity: sha512-1igVwlcqw1QUMdfcMlzzY4coikSIBN944pkueGi0pawrX5I5Z+9hxdTR+w3Sg6Q3eZhvdMAs8ZaF9JuTG1uYOQ==} peerDependencies: - vitest: 1.3.1 + vitest: 1.5.0 dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 debug: 4.3.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 + istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.6 magic-string: 0.30.7 magicast: 0.3.3 picocolors: 1.0.0 std-env: 3.7.0 + strip-literal: 2.0.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 - vitest: 1.3.1 + vitest: 1.5.0 transitivePeerDependencies: - supports-color dev: true @@ -1684,6 +2144,14 @@ packages: '@vitest/spy': 1.3.1 '@vitest/utils': 1.3.1 chai: 4.4.1 + dev: true + + /@vitest/expect@1.5.0: + resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + dependencies: + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + chai: 4.4.1 /@vitest/runner@1.3.1: resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} @@ -1691,11 +2159,27 @@ packages: '@vitest/utils': 1.3.1 p-limit: 5.0.0 pathe: 1.1.2 + dev: true + + /@vitest/runner@1.5.0: + resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + dependencies: + '@vitest/utils': 1.5.0 + p-limit: 5.0.0 + pathe: 1.1.2 /@vitest/snapshot@1.3.1: resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} dependencies: - magic-string: 0.30.7 + magic-string: 0.30.9 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/snapshot@1.5.0: + resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + dependencies: + magic-string: 0.30.9 pathe: 1.1.2 pretty-format: 29.7.0 @@ -1703,6 +2187,12 @@ packages: resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} dependencies: tinyspy: 2.2.0 + dev: true + + /@vitest/spy@1.5.0: + resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + dependencies: + tinyspy: 2.2.0 /@vitest/utils@1.3.1: resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} @@ -1711,6 +2201,15 @@ packages: estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 + dev: true + + /@vitest/utils@1.5.0: + resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} @@ -1738,7 +2237,7 @@ packages: '@vue/shared': 3.4.15 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: true /@vue/compiler-dom@3.4.15: @@ -1761,13 +2260,33 @@ packages: '@vue/compiler-dom': 3.4.15 '@vue/shared': 3.4.15 computeds: 0.0.1 - minimatch: 9.0.3 + minimatch: 9.0.4 muggle-string: 0.3.1 path-browserify: 1.0.1 typescript: 5.4.2 vue-template-compiler: 2.7.16 dev: true + /@vue/language-core@1.8.27(typescript@5.4.5): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.15 + '@vue/shared': 3.4.15 + computeds: 0.0.1 + minimatch: 9.0.4 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.4.5 + vue-template-compiler: 2.7.16 + dev: true + /@vue/shared@3.4.15: resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} dev: true @@ -1852,14 +2371,6 @@ packages: engines: {node: '>=12'} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -1874,6 +2385,7 @@ packages: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.2 + dev: true /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -1884,8 +2396,9 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-array-buffer: 3.0.4 + dev: true /array-includes@3.1.7: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} @@ -1914,6 +2427,18 @@ packages: is-string: 1.0.7 dev: true + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -1945,6 +2470,15 @@ packages: es-shim-unscopables: 1.0.2 dev: true + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + /array.prototype.tosorted@1.1.3: resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: @@ -1960,13 +2494,13 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 dev: true /arrify@3.0.0: @@ -1994,6 +2528,14 @@ packages: /available-typed-arrays@1.0.6: resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true /axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} @@ -2010,23 +2552,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - /bootstrap@4.6.2(jquery@3.7.1)(popper.js@1.16.1): resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} peerDependencies: @@ -2067,24 +2592,6 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.3) dev: true - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.6.0 - dev: true - /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -2102,6 +2609,18 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.3 set-function-length: 1.2.0 + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + 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.2 + dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2145,34 +2664,14 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - dev: false /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} @@ -2181,21 +2680,14 @@ packages: escape-string-regexp: 5.0.0 dev: true - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - /cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: true - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} dev: true /client-only@0.0.1: @@ -2219,11 +2711,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -2393,6 +2880,33 @@ packages: whatwg-url: 14.0.0 dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true @@ -2450,17 +2964,12 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.14 + dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -2468,6 +2977,16 @@ packages: get-intrinsic: 1.2.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -2476,6 +2995,7 @@ packages: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 + dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -2504,13 +3024,6 @@ packages: esutils: 2.0.3 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -2533,6 +3046,14 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2556,7 +3077,7 @@ packages: has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 internal-slot: 1.0.6 is-array-buffer: 3.0.4 is-callable: 1.2.7 @@ -2583,13 +3104,73 @@ packages: which-typed-array: 1.1.14 dev: true + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + dev: true /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} @@ -2603,6 +3184,7 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 + dev: true /es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} @@ -2618,9 +3200,36 @@ packages: has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.0 + dev: true + + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 dev: true /es-set-tostringtag@2.0.2: @@ -2629,13 +3238,22 @@ packages: dependencies: get-intrinsic: 1.2.3 has-tostringtag: 1.0.2 - hasown: 2.0.0 + hasown: 2.0.2 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -2677,6 +3295,36 @@ packages: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2689,7 +3337,6 @@ packages: /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -2701,22 +3348,22 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@8.56.0): + /eslint-compat-utils@0.1.2(eslint@9.0.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.56.0 + eslint: 9.0.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@9.0.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 9.0.0 dev: true /eslint-define-config@2.1.0: @@ -2734,7 +3381,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2755,27 +3402,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 8.56.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + /eslint-plugin-es-x@7.5.0(eslint@9.0.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.56.0 - eslint-compat-utils: 0.1.2(eslint@8.56.0) + eslint: 9.0.0 + eslint-compat-utils: 0.1.2(eslint@9.0.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0)(eslint@9.0.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -2785,16 +3432,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -2810,7 +3457,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@9.0.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: @@ -2826,7 +3473,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.15 - eslint: 8.56.0 + eslint: 9.0.0 hasown: 2.0.0 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -2835,23 +3482,20 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-n@16.6.2(eslint@8.56.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + /eslint-plugin-n@17.2.1(eslint@9.0.0): + resolution: {integrity: sha512-uW1+df2bo06kR7ix6nB614RUlvjRPrYxlaX832O6e1MCJp4V7YozEdvMgCYuvn4ltnjPu1FVYhQ2KRrmTNoJfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - builtins: 5.0.1 - eslint: 8.56.0 - eslint-plugin-es-x: 7.5.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + enhanced-resolve: 5.16.0 + eslint: 9.0.0 + eslint-plugin-es-x: 7.5.0(eslint@9.0.0) get-tsconfig: 4.7.2 - globals: 13.24.0 + globals: 14.0.0 ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 + minimatch: 9.0.3 semver: 7.6.0 dev: true @@ -2860,8 +3504,8 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): - resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2874,34 +3518,36 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.56.0 - eslint-config-prettier: 9.1.0(eslint@8.56.0) + eslint: 9.0.0 + eslint-config-prettier: 9.1.0(eslint@9.0.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + /eslint-plugin-react-hooks@4.6.0(eslint@9.0.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.56.0 + eslint: 9.0.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.56.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.34.1(eslint@9.0.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.7 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 + es-iterator-helpers: 1.0.18 + eslint: 9.0.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -2915,38 +3561,38 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-regexp@2.2.0(eslint@8.56.0): - resolution: {integrity: sha512-0kwpiWiLRVBkVr3oIRQLl196sXP/NF6DQFefv9jtR4ZOgQR+6WID2pIZ0I+wIt54qgBPwBB7Gm2a+ueh8/WsFQ==} + /eslint-plugin-regexp@2.5.0(eslint@9.0.0): + resolution: {integrity: sha512-I7vKcP0o75WS5SHiVNXN+Eshq49sbrweMQIuqSL3AId9AwDe9Dhbfug65vw64LxmOd4v+yf5l5Xt41y9puiq0g==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 8.56.0 + eslint: 9.0.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.56.0): - resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} + /eslint-plugin-simple-import-sort@12.1.0(eslint@9.0.0): + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.56.0 + eslint: 9.0.0 dev: true - /eslint-plugin-testing-library@6.2.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} + /eslint-plugin-testing-library@6.2.2(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 transitivePeerDependencies: - supports-color - typescript @@ -2960,9 +3606,9 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -2973,41 +3619,42 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -3020,13 +3667,13 @@ packages: - supports-color dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.0.0 dev: true /esquery@1.5.0: @@ -3090,16 +3737,6 @@ packages: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 - dev: false - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3134,18 +3771,11 @@ packages: reusify: 1.0.4 dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true /fill-range@7.0.1: @@ -3162,13 +3792,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.2.9 keyv: 4.5.4 - rimraf: 3.0.2 dev: true /flatted@3.2.9: @@ -3179,6 +3808,7 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: true /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -3219,19 +3849,21 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -3254,7 +3886,19 @@ packages: function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -3268,6 +3912,15 @@ packages: get-intrinsic: 1.2.3 dev: true + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + /get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: @@ -3295,7 +3948,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -3316,11 +3969,9 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} dev: true /globalthis@1.0.3: @@ -3356,7 +4007,8 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 + dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -3372,6 +4024,7 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -3385,26 +4038,49 @@ packages: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.3 + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: true /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -3450,13 +4126,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -3464,10 +4133,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -3511,34 +4176,23 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - dev: true - /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.3 - hasown: 2.0.0 + hasown: 2.0.2 + side-channel: 1.0.4 + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 side-channel: 1.0.4 + dev: true /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -3546,13 +4200,15 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.2 + dev: true /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -3565,36 +4221,32 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.2 - - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 dev: true /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 dev: true /is-date-object@1.0.5: @@ -3602,6 +4254,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -3633,19 +4286,20 @@ packages: is-extglob: 2.1.1 dev: true - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + /is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true @@ -3655,6 +4309,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -3673,16 +4328,26 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -3693,32 +4358,30 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true /is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.14 - dev: true - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + which-typed-array: 1.1.15 dev: true /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-weakset@2.0.2: @@ -3726,6 +4389,7 @@ packages: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.3 + dev: true /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -3737,6 +4401,7 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3755,13 +4420,13 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + /istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} engines: {node: '>=10'} dependencies: + '@jridgewell/trace-mapping': 0.3.25 debug: 4.3.4 istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true @@ -3801,12 +4466,10 @@ packages: diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: false /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false /jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} @@ -3816,7 +4479,6 @@ packages: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: false /jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} @@ -3831,7 +4493,6 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: false /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} @@ -3843,7 +4504,6 @@ packages: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: false /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -4020,14 +4680,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -4067,12 +4719,18 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: true /make-dir@4.0.0: @@ -4114,11 +4772,6 @@ packages: mime-db: 1.52.0 dev: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4127,6 +4780,12 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -4140,6 +4799,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true @@ -4170,35 +4836,34 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@2.1.6(typescript@5.4.2): - resolution: {integrity: sha512-62NX1pdMa1C17U/6+SQjQFxwHx0bcWHzZoDN2mK97FvEttTkX9CyJqx3OcYYBpNykDx+segweaO4yxapjifj4g==} + /msw@2.2.13(typescript@5.4.5): + resolution: {integrity: sha512-ljFf1xZsU0b4zv1l7xzEmC6OZA6yD06hcx0H+dc8V0VypaP3HGYJa1rMLjQbBWl32ptGhcfwcPCWDB1wjmsftw==} engines: {node: '>=18'} hasBin: true requiresBuild: true peerDependencies: - typescript: '>= 4.7.x <= 5.3.x' + typescript: '>= 4.7.x' peerDependenciesMeta: typescript: optional: true dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 + '@inquirer/confirm': 3.1.4 '@mswjs/cookies': 1.1.0 - '@mswjs/interceptors': 0.25.15 + '@mswjs/interceptors': 0.26.15 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.4 chalk: 4.1.2 - chokidar: 3.5.3 graphql: 16.8.1 headers-polyfill: 4.0.2 - inquirer: 8.2.6 is-node-process: 1.2.0 outvariant: 1.4.2 path-to-regexp: 6.2.1 strict-event-emitter: 0.5.1 type-fest: 4.10.2 - typescript: 5.4.2 + typescript: 5.4.5 yargs: 17.7.2 dev: true @@ -4206,8 +4871,9 @@ packages: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /nanoid@3.3.7: @@ -4273,11 +4939,6 @@ packages: readable-stream: 1.0.34 dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - /npm-run-path@5.2.0: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4295,6 +4956,7 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -4302,10 +4964,12 @@ packages: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 + dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -4315,6 +4979,7 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true /object.entries@1.1.7: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} @@ -4366,13 +5031,6 @@ packages: wrappy: 1.0.2 dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -4391,26 +5049,6 @@ packages: type-check: 0.4.0 dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - /outvariant@1.4.2: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} dev: true @@ -4559,13 +5197,18 @@ packages: deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: false /postcss@8.4.35: @@ -4574,7 +5217,16 @@ packages: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 + dev: true + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -4713,22 +5365,6 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -4774,6 +5410,17 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 + dev: true + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.1 + dev: true /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -4818,26 +5465,11 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} engines: {node: '>=14'} @@ -4846,6 +5478,31 @@ packages: glob: 10.3.10 dev: true + /rollup@4.14.3: + resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.14.3 + '@rollup/rollup-android-arm64': 4.14.3 + '@rollup/rollup-darwin-arm64': 4.14.3 + '@rollup/rollup-darwin-x64': 4.14.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.3 + '@rollup/rollup-linux-arm-musleabihf': 4.14.3 + '@rollup/rollup-linux-arm64-gnu': 4.14.3 + '@rollup/rollup-linux-arm64-musl': 4.14.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3 + '@rollup/rollup-linux-riscv64-gnu': 4.14.3 + '@rollup/rollup-linux-s390x-gnu': 4.14.3 + '@rollup/rollup-linux-x64-gnu': 4.14.3 + '@rollup/rollup-linux-x64-musl': 4.14.3 + '@rollup/rollup-win32-arm64-msvc': 4.14.3 + '@rollup/rollup-win32-ia32-msvc': 4.14.3 + '@rollup/rollup-win32-x64-msvc': 4.14.3 + fsevents: 2.3.3 + /rollup@4.9.6: resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4869,12 +5526,7 @@ packages: fsevents: 2.3.3 /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true /run-parallel@1.2.0: @@ -4883,12 +5535,6 @@ packages: queue-microtask: 1.2.3 dev: true - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.2 - dev: true - /safe-array-concat@1.1.0: resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} @@ -4899,12 +5545,18 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true /safe-regex-test@1.0.2: @@ -4916,6 +5568,15 @@ packages: is-regex: 1.1.4 dev: true + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -4971,6 +5632,19 @@ packages: get-intrinsic: 1.2.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 + dev: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + 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 + dev: true /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} @@ -4979,6 +5653,7 @@ packages: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 + dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -4996,14 +5671,11 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.3 object-inspect: 1.13.1 + dev: true /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -5017,8 +5689,8 @@ packages: engines: {node: '>=12'} dev: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} /source-map@0.6.1: @@ -5035,7 +5707,6 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - dev: false /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5053,6 +5724,7 @@ packages: engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.6 + dev: true /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} @@ -5109,6 +5781,16 @@ packages: es-abstract: 1.22.3 dev: true + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: @@ -5117,6 +5799,14 @@ packages: es-abstract: 1.22.3 dev: true + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: @@ -5125,6 +5815,15 @@ packages: es-abstract: 1.22.3 dev: true + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true @@ -5135,12 +5834,6 @@ packages: safe-buffer: 5.1.2 dev: true - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5209,6 +5902,13 @@ packages: dependencies: has-flag: 4.0.0 + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -5226,6 +5926,11 @@ packages: tslib: 2.6.2 dev: true + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5246,28 +5951,22 @@ packages: xtend: 4.0.2 dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} /tinypool@0.8.2: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} + dev: true + + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} /tinyspy@2.2.0: resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -5296,13 +5995,13 @@ packages: punycode: 2.3.1 dev: true - /ts-api-utils@1.2.0(typescript@5.3.3): - resolution: {integrity: sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==} - engines: {node: '>=18'} + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.5 dev: true /tsconfig-paths@3.15.0: @@ -5321,18 +6020,18 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.3.3): + /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.3 + typescript: 5.4.5 dev: true - /tsx@4.7.0: - resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + /tsx@4.7.2: + resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} engines: {node: '>=18.0.0'} hasBin: true dependencies: @@ -5353,11 +6052,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5377,6 +6071,15 @@ packages: is-typed-array: 1.1.13 dev: true + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} @@ -5387,6 +6090,17 @@ packages: is-typed-array: 1.1.13 dev: true + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} @@ -5398,6 +6112,18 @@ packages: is-typed-array: 1.1.13 dev: true + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -5406,6 +6132,18 @@ packages: is-typed-array: 1.1.13 dev: true + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + /typescript@5.3.3: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} @@ -5417,13 +6155,19 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -5475,15 +6219,6 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.22 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - /validator@13.9.0: resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} @@ -5498,7 +6233,28 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@20.11.26) + vite: 5.2.8 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-node@1.5.0: + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.2.8 transitivePeerDependencies: - '@types/node' - less @@ -5525,7 +6281,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 typescript: 5.4.2 - vite: 5.1.6(@types/node@20.11.26) + vite: 5.1.6 vue-tsc: 1.8.27(typescript@5.4.2) transitivePeerDependencies: - '@types/node' @@ -5533,8 +6289,33 @@ packages: - supports-color dev: true - /vite@5.1.5: - resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + /vite-plugin-dts@3.8.3(typescript@5.4.5)(vite@5.2.8): + resolution: {integrity: sha512-yRHiRosQw7MXdOhmcrVI+kRiB8YEShbSxnADNteK4eZGdEoyOkMHihvO5XOAVlOq8ng9sIqu8vVefDK1zcj3qw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.43.0 + '@rollup/pluginutils': 5.1.0 + '@vue/language-core': 1.8.27(typescript@5.4.5) + debug: 4.3.4 + kolorist: 1.8.0 + magic-string: 0.30.9 + typescript: 5.4.5 + vite: 5.2.8 + vue-tsc: 1.8.27(typescript@5.4.5) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + + /vite@5.1.6: + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5562,7 +6343,7 @@ packages: optional: true dependencies: esbuild: 0.19.12 - postcss: 8.4.35 + postcss: 8.4.38 rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 @@ -5601,8 +6382,43 @@ packages: rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 + dev: true + + /vite@5.2.8: + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.14.3 + optionalDependencies: + fsevents: 2.3.3 - /vitest@1.3.1: + /vitest@1.3.1(jsdom@24.0.0): resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5636,6 +6452,7 @@ packages: chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 + jsdom: 24.0.0 local-pkg: 0.5.0 magic-string: 0.30.7 pathe: 1.1.2 @@ -5644,7 +6461,7 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.5 + vite: 5.1.6 vite-node: 1.3.1 why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -5655,16 +6472,17 @@ packages: - sugarss - supports-color - terser + dev: true - /vitest@1.3.1(jsdom@24.0.0): - resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + /vitest@1.5.0: + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.1 - '@vitest/ui': 1.3.1 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5681,16 +6499,15 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.3.1 - '@vitest/runner': 1.3.1 - '@vitest/snapshot': 1.3.1 - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 - jsdom: 24.0.0 local-pkg: 0.5.0 magic-string: 0.30.7 pathe: 1.1.2 @@ -5698,9 +6515,64 @@ packages: std-env: 3.7.0 strip-literal: 2.0.0 tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.6(@types/node@20.11.26) - vite-node: 1.3.1 + tinypool: 0.8.4 + vite: 5.1.6 + vite-node: 1.5.0 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + /vitest@1.5.0(jsdom@24.0.0): + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + jsdom: 24.0.0 + local-pkg: 0.5.0 + magic-string: 0.30.9 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.4 + vite: 5.2.8 + vite-node: 1.5.0 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -5731,6 +6603,18 @@ packages: typescript: 5.4.2 dev: true + /vue-tsc@1.8.27(typescript@5.4.5): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.4.5) + semver: 7.6.0 + typescript: 5.4.5 + dev: true + /w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -5738,12 +6622,6 @@ packages: xml-name-validator: 5.0.0 dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - /web-vitals@3.5.2: resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} dev: false @@ -5781,6 +6659,7 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true /which-builtin-type@1.1.3: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} @@ -5807,6 +6686,7 @@ packages: is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 + dev: true /which-typed-array@1.1.14: resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} @@ -5817,6 +6697,18 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 + dev: true + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} From a6225ff347d625440f25982e7ed40c2fcf8d3ed4 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 15 Apr 2024 19:40:46 +0000 Subject: [PATCH 253/565] [skip ci] Update to version 7.22.1 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 4d1fb7b33..1d83d60bc 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.0", + "version": "7.22.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 595cf8eeb..970cbb81e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.0'; +export default '7.22.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 20ed6f814..50496066c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.0", + "version": "7.22.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 595cf8eeb..970cbb81e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.0'; +export default '7.22.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e6c0d0353..96101a086 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.0", + "version": "7.22.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 7fc84b0c7f7b2aaf2942e32486fe326e2620a18d Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 15 Apr 2024 19:40:47 +0000 Subject: [PATCH 254/565] [skip ci] Generate changelog to version 7.22.1 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f44a903c5..a710a8a1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.0 +## 7.22.1 + +- [be24658](https://github.com/AxaFrance/oidc-client/commit/be2465852e837b749abd3a86c5c0caa57a2ea8b6) - refactor(all): update libs (release), 2024-04-15 by *Guillaume Chervet* + + +## v7.22.0 - [032a00b](https://github.com/AxaFrance/oidc-client/commit/032a00b501557fe6b5be48e83e4914051ee2c7f0) - feat(oidc): control dpop injection (release) (#1342), 2024-04-10 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [59a9c46](https://github.com/AxaFrance/oidc-client/commit/59a9c468b4fa9eb9694b1f3921eb545daf1f58f8) - fix(ci): exclude author GitHub from changelog (release), 2023-11-29 by *Guillaume Chervet* -## v7.12.2 - -- [cd575e7](https://github.com/AxaFrance/oidc-client/commit/cd575e716f4fbcb1ba09a76a1530a3ae23f08599) - fix(ci): last clean and test (release), 2023-11-29 by *Guillaume Chervet* - - From b17217d6b829dee3b28f444fda099fce9c94bc41 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Apr 2024 21:55:08 +0200 Subject: [PATCH 255/565] fix(react-oidc): unused var in User.txs (release) --- packages/react-oidc/src/User.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index d7693f748..a1212fbf0 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -34,8 +34,7 @@ export const useOidcUser = (configuration } else { setOidcUser({ user: null, status: OidcUserStatus.Unauthenticated }); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { + const newSubscriptionId = oidc.subscribeEvents((name: string) => { if (name === OidcClient.eventNames.logout_from_another_tab || name === OidcClient.eventNames.logout_from_same_tab) { if (isMounted) { setOidcUser({ user: null, status: OidcUserStatus.Unauthenticated }); From 788e65fdfad056ca04c1ff522177dea948489a63 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Apr 2024 20:01:20 +0000 Subject: [PATCH 256/565] [skip ci] Update to version 7.22.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1d83d60bc..4a226cd68 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.1", + "version": "7.22.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 970cbb81e..311400940 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.1'; +export default '7.22.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 50496066c..5bdaad6c5 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.1", + "version": "7.22.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 970cbb81e..311400940 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.1'; +export default '7.22.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 96101a086..6778e8955 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.1", + "version": "7.22.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From c555370d34f1e3903a0eff19f42b4c6c3d5e2781 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Apr 2024 20:01:22 +0000 Subject: [PATCH 257/565] [skip ci] Generate changelog to version 7.22.2 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a710a8a1d..dc1ff4abb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.1 +## 7.22.2 + +- [b17217d](https://github.com/AxaFrance/oidc-client/commit/b17217d6b829dee3b28f444fda099fce9c94bc41) - fix(react-oidc): unused var in User.txs (release), 2024-04-16 by *Guillaume Chervet* + + +## v7.22.1 - [be24658](https://github.com/AxaFrance/oidc-client/commit/be2465852e837b749abd3a86c5c0caa57a2ea8b6) - refactor(all): update libs (release), 2024-04-15 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [9373765](https://github.com/AxaFrance/oidc-client/commit/9373765eafb4ef8dcba904772d558ab5bb40f17c) - fix(ci): remove duplicate, 2023-11-29 by *Guillaume Chervet* -## v7.12.3 - -- [59a9c46](https://github.com/AxaFrance/oidc-client/commit/59a9c468b4fa9eb9694b1f3921eb545daf1f58f8) - fix(ci): exclude author GitHub from changelog (release), 2023-11-29 by *Guillaume Chervet* - - From 5af807548e35c64da74fc3547e35c8ec512399ba Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 18 Apr 2024 21:09:02 +0200 Subject: [PATCH 258/565] fix(all): types import in index.ts for all typescript (release) --- packages/oidc-client/src/index.ts | 4 ++-- packages/react-oidc/src/index.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 070d2b197..a5f0906b2 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -1,4 +1,3 @@ -import {ILOidcLocation} from "./location"; export { getFetchDefault } from './oidc.js'; export { TokenRenewMode } from './parseTokens.js'; @@ -18,4 +17,5 @@ export type { export { OidcLocation } from './location.js'; export type { ILOidcLocation } from './location.js'; export { TokenAutomaticRenewMode } from './types.js'; -export { type OidcUserInfo, OidcClient } from './oidcClient.js'; +export { OidcClient } from './oidcClient.js'; +export type { OidcUserInfo } from './oidcClient.js'; diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index 116041f13..ebfb520e6 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -10,4 +10,5 @@ export type { StringMap, ILOidcLocation } from '@axa-fr/oidc-client'; -export { type OidcUserInfo, TokenRenewMode, OidcClient, TokenAutomaticRenewMode, OidcLocation } from '@axa-fr/oidc-client'; +export { TokenRenewMode, OidcClient, TokenAutomaticRenewMode, OidcLocation } from '@axa-fr/oidc-client'; +export type { OidcUserInfo } from '@axa-fr/oidc-client'; From 723491b80b6a0717655fa9ff3bf062e8cef13333 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 18 Apr 2024 19:15:13 +0000 Subject: [PATCH 259/565] [skip ci] Update to version 7.22.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 4a226cd68..92f36f9b0 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.2", + "version": "7.22.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 311400940..dcaa4f9a5 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.2'; +export default '7.22.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 5bdaad6c5..b73b7434b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.2", + "version": "7.22.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 311400940..dcaa4f9a5 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.2'; +export default '7.22.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6778e8955..95b3728c9 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.2", + "version": "7.22.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 5e21bcb7a3a1ec3264efdd6001b40470ad1fb9e4 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 18 Apr 2024 19:15:14 +0000 Subject: [PATCH 260/565] [skip ci] Generate changelog to version 7.22.3 --- CHANGELOG.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc1ff4abb..1ebfe899e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.2 +## 7.22.3 + +- [5af8075](https://github.com/AxaFrance/oidc-client/commit/5af807548e35c64da74fc3547e35c8ec512399ba) - fix(all): types import in index.ts for all typescript (release), 2024-04-18 by *Guillaume Chervet* + + +## v7.22.2 - [b17217d](https://github.com/AxaFrance/oidc-client/commit/b17217d6b829dee3b28f444fda099fce9c94bc41) - fix(react-oidc): unused var in User.txs (release), 2024-04-16 by *Guillaume Chervet* @@ -311,10 +316,3 @@ - [bf53fa8](https://github.com/AxaFrance/oidc-client/commit/bf53fa803a6414b99e1520154c11d66c4958e62b) - build(npm): bump tslib from 2.6.1 to 2.6.2 (#1218), 2023-11-29 by *dependabot[bot]* -## v7.12.4 - -- [59efae4](https://github.com/AxaFrance/oidc-client/commit/59efae45029593579d2dc377093777f8ef940537) - build(npm): bump eslint from 8.46.0 to 8.54.0 (#1219), 2023-11-29 by *dependabot[bot]* -- [283e7d9](https://github.com/AxaFrance/oidc-client/commit/283e7d9e02dcd0795489c9c4d24b9abcbb0e4b39) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2023-11-29 by *Guillaume Chervet* -- [9373765](https://github.com/AxaFrance/oidc-client/commit/9373765eafb4ef8dcba904772d558ab5bb40f17c) - fix(ci): remove duplicate, 2023-11-29 by *Guillaume Chervet* - - From 64c76e0b1f4fccf1c0ed93269a0307212be9d661 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 23 Apr 2024 03:28:06 +0200 Subject: [PATCH 261/565] feature(oidc):preload user (release) (#1352) * feature(oidc):preload user (alpha) * fix (alpha) * fix (alpha) --- examples/react-oidc-demo/src/Profile.tsx | 2 ++ examples/react-oidc-demo/src/configurations.ts | 1 + packages/oidc-client/src/keepSession.ts | 6 ++++++ packages/oidc-client/src/login.ts | 3 +++ packages/oidc-client/src/oidc.ts | 1 + packages/oidc-client/src/oidcClient.ts | 6 +++++- packages/oidc-client/src/types.ts | 1 + packages/react-oidc/src/User.ts | 17 ++++++++++++----- 8 files changed, 31 insertions(+), 6 deletions(-) diff --git a/examples/react-oidc-demo/src/Profile.tsx b/examples/react-oidc-demo/src/Profile.tsx index 4a510d6bd..1a767f3a5 100644 --- a/examples/react-oidc-demo/src/Profile.tsx +++ b/examples/react-oidc-demo/src/Profile.tsx @@ -8,6 +8,8 @@ interface OidcUserRoleInfo extends OidcUserInfo{ const DisplayUserInfo = () => { const { oidcUser, oidcUserLoadingState, reloadOidcUser } = useOidcUser(); + console.log('oidcUser', oidcUser); + console.log('oidcUserLoadingState', oidcUserLoadingState); switch (oidcUserLoadingState) { case OidcUserStatus.Loading: return

User Information are loading

; diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index eb1a58728..16efca83f 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -18,6 +18,7 @@ export const configurationIdentityServer = { token_renew_mode: TokenRenewMode.access_token_invalid, token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, demonstrating_proof_of_possession: false, + preload_user_info: true }; export const configurationIdentityServer1 = { diff --git a/packages/oidc-client/src/keepSession.ts b/packages/oidc-client/src/keepSession.ts index 881f03320..e863229cd 100644 --- a/packages/oidc-client/src/keepSession.ts +++ b/packages/oidc-client/src/keepSession.ts @@ -28,6 +28,9 @@ export const tryKeepSessionAsync = async (oidc: Oidc) =>{ const sessionState = await serviceWorker.getSessionStateAsync(); // @ts-ignore await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); + if(configuration.preload_user_info){ + await oidc.userInfoAsync(); + } oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: true, message: 'tokens inside ServiceWorker are valid', @@ -55,6 +58,9 @@ export const tryKeepSessionAsync = async (oidc: Oidc) =>{ const sessionState = await session.getSessionStateAsync(); // @ts-ignore await oidc.startCheckSessionAsync(oidcServerConfiguration.check_session_iframe, configuration.client_id, sessionState); + if(configuration.preload_user_info){ + await oidc.userInfoAsync(); + } oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: true, message: 'tokens inside storage are valid', diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 95547c304..4614eebb3 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -207,6 +207,9 @@ export const loginCallbackAsync = (oidc:Oidc) => async (isSilentSignin = false) } await oidc.startCheckSessionAsync(oidcServerConfiguration.checkSessionIframe, clientId, sessionState, isSilentSignin); + if(configuration.preload_user_info){ + await oidc.userInfoAsync(); + } oidc.publishEvent(eventNames.loginCallbackAsync_end, {}); return { tokens: formattedTokens, diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 0398a05f7..36f42bc37 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -121,6 +121,7 @@ export class Oidc { service_worker_update_require_callback, service_worker_activate: configuration.service_worker_activate ?? activateServiceWorker, demonstrating_proof_of_possession_configuration: configuration.demonstrating_proof_of_possession_configuration ?? defaultDemonstratingProofOfPossessionConfiguration, + preload_user_info: configuration.preload_user_info ?? false, }; this.getFetch = getFetch ?? getFetchDefault; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 7a799e17a..59a293dbe 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -80,7 +80,11 @@ export class OidcClient { } async userInfoAsync(noCache = false, demonstrating_proof_of_possession:boolean=false):Promise { - return this._oidc.userInfoAsync(noCache); + return this._oidc.userInfoAsync(noCache, demonstrating_proof_of_possession); + } + + userInfo():T { + return this._oidc.userInfo; } } diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index a816c4a31..a2dd29267 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -40,6 +40,7 @@ export type OidcConfiguration = { logout_tokens_to_invalidate?:Array; demonstrating_proof_of_possession?:boolean; demonstrating_proof_of_possession_configuration?: DemonstratingProofOfPossessionConfiguration; + preload_user_info?:boolean; }; export interface DemonstratingProofOfPossessionConfiguration { diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index a1212fbf0..53490a08b 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -14,16 +14,22 @@ export type OidcUser = { } export const useOidcUser = (configurationName = 'default', demonstrating_proof_of_possession=false) => { - const [oidcUser, setOidcUser] = useState>({ user: null, status: OidcUserStatus.Unauthenticated }); - const [oidcUserId, setOidcUserId] = useState(''); + const oidc = OidcClient.get(configurationName); + const user = oidc.userInfo(); + const [oidcUser, setOidcUser] = useState>({ user: user, status: user ? OidcUserStatus.Loaded : OidcUserStatus.Unauthenticated }); + const [oidcUserId, setOidcUserId] = useState(user ? 1 : 0); + const [oidcPreviousUserId, setPreviousOidcUserId] = useState(user ? 1 : 0); useEffect(() => { const oidc = OidcClient.get(configurationName); let isMounted = true; if (oidc && oidc.tokens) { + const isCache = oidcUserId === oidcPreviousUserId; + if(isCache && oidc.userInfo()) { + return; + } setOidcUser({ ...oidcUser, status: OidcUserStatus.Loading }); - const isNoCache = oidcUserId !== ''; - oidc.userInfoAsync(isNoCache, demonstrating_proof_of_possession) + oidc.userInfoAsync(!isCache, demonstrating_proof_of_possession) .then((info) => { if (isMounted) { // @ts-ignore @@ -31,6 +37,7 @@ export const useOidcUser = (configuration } }) .catch(() => setOidcUser({ ...oidcUser, status: OidcUserStatus.LoadingError })); + setPreviousOidcUserId(oidcUserId); } else { setOidcUser({ user: null, status: OidcUserStatus.Unauthenticated }); } @@ -48,7 +55,7 @@ export const useOidcUser = (configuration }, [oidcUserId]); const reloadOidcUser = () => { - setOidcUserId(oidcUserId + ' '); + setOidcUserId(oidcUserId+1); }; return { oidcUser: oidcUser.user, oidcUserLoadingState: oidcUser.status, reloadOidcUser }; From a942873662cf4c99b4a09d9cdb311a6c269d86df Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Apr 2024 01:30:46 +0000 Subject: [PATCH 262/565] [skip ci] Update to version 7.22.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 92f36f9b0..47a1858e8 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.3", + "version": "7.22.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index dcaa4f9a5..37784eb89 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.3'; +export default '7.22.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b73b7434b..3f37e5d7c 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.3", + "version": "7.22.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index dcaa4f9a5..37784eb89 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.3'; +export default '7.22.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 95b3728c9..6a1fd1681 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.3", + "version": "7.22.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 1dd3b419d8678ff67f0c509740bf1d64ae61e045 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Apr 2024 01:30:48 +0000 Subject: [PATCH 263/565] [skip ci] Generate changelog to version 7.22.4 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ebfe899e..e89ca6f8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.3 +## 7.22.4 + +- [64c76e0](https://github.com/AxaFrance/oidc-client/commit/64c76e0b1f4fccf1c0ed93269a0307212be9d661) - feature(oidc):preload user (release) (#1352), 2024-04-23 by *Guillaume Chervet* + + +## v7.22.3 - [5af8075](https://github.com/AxaFrance/oidc-client/commit/5af807548e35c64da74fc3547e35c8ec512399ba) - fix(all): types import in index.ts for all typescript (release), 2024-04-18 by *Guillaume Chervet* @@ -311,8 +316,3 @@ - [55b318e](https://github.com/AxaFrance/oidc-client/commit/55b318e1c31fe6a7d1be106e99b14db35e4f4229) - build(npm): bump @types/node from 18.17.1 to 20.10.1 (#1217), 2023-11-29 by *dependabot[bot]* -## v7.12.5 - -- [bf53fa8](https://github.com/AxaFrance/oidc-client/commit/bf53fa803a6414b99e1520154c11d66c4958e62b) - build(npm): bump tslib from 2.6.1 to 2.6.2 (#1218), 2023-11-29 by *dependabot[bot]* - - From d764b2bd7319711c49a393c1fd3496d054661065 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 18 May 2024 21:50:42 +0200 Subject: [PATCH 264/565] refatcor(all): update librairies --- examples/nextjs-demo/components/layout.js | 5 +- examples/nextjs-demo/pages/index.js | 13 +- examples/react-oidc-demo/src/Home.tsx | 4 +- package.json | 14 +- .../oidc-client-service-worker/package.json | 10 +- packages/oidc-client/package.json | 16 +- packages/react-oidc/package.json | 22 +- pnpm-lock.yaml | 738 +++++++++--------- 8 files changed, 429 insertions(+), 393 deletions(-) diff --git a/examples/nextjs-demo/components/layout.js b/examples/nextjs-demo/components/layout.js index b476e7ddc..911b8090c 100644 --- a/examples/nextjs-demo/components/layout.js +++ b/examples/nextjs-demo/components/layout.js @@ -3,11 +3,12 @@ import { useRouter } from 'next/router'; import React from 'react'; const configuration = { - client_id: 'interactive.public.short', + client_id: 'interactive.public', redirect_uri: 'http://localhost:3001/#authentication/callback', silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', + authority: 'https://demo.duendesoftware.com', + preload_user_info: 'true', }; const onEvent=(configurationName, eventName, data )=>{ diff --git a/examples/nextjs-demo/pages/index.js b/examples/nextjs-demo/pages/index.js index 679fae649..60f18e231 100644 --- a/examples/nextjs-demo/pages/index.js +++ b/examples/nextjs-demo/pages/index.js @@ -1,8 +1,19 @@ -import { OidcSecure, OidcUserStatus,useOidcAccessToken, useOidcIdToken, useOidcUser} from '@axa-fr/react-oidc'; +import {OidcSecure, OidcUserStatus, useOidc, useOidcAccessToken, useOidcIdToken, useOidcUser} from '@axa-fr/react-oidc'; import Head from 'next/head'; +const isBrowser = () => typeof window !== "undefined"; + const DisplayUserInfo = () => { const{ oidcUser, oidcUserLoadingState } = useOidcUser(); + const { isAuthenticated } = useOidc(); + console.log( + "isBrowser: " + + isBrowser() + + ", isAuthenticated: " + + isAuthenticated + + ", oidcUser: " + ); + console.log(oidcUser); switch (oidcUserLoadingState){ case OidcUserStatus.Loading: diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index b8c035158..b8b43dd5b 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -1,4 +1,4 @@ -import { useOidc } from '@axa-fr/react-oidc'; +import {useOidc, useOidcUser} from '@axa-fr/react-oidc'; import React, {useEffect} from 'react'; import {useNavigate} from "react-router-dom"; @@ -12,6 +12,8 @@ import {useNavigate} from "react-router-dom"; export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); + const{ oidcUser, oidcUserLoadingState } = useOidcUser(); + console.log(oidcUser, oidcUserLoadingState) const navigate = useNavigate(); const navigateProfile = () => { diff --git a/package.json b/package.json index 5202792e4..e067fd542 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,26 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "7.7.0", - "@typescript-eslint/parser": "7.7.0", - "eslint": "^9.0.0", + "@typescript-eslint/eslint-plugin": "7.9.0", + "@typescript-eslint/parser": "7.9.0", + "eslint": "9.3.0", "eslint-config-prettier": "9.1.0", "eslint-define-config": "2.1.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-jsx-a11y": "6.8.0", - "eslint-plugin-n": "17.2.1", + "eslint-plugin-n": "17.7.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-prettier": "5.1.3", "eslint-plugin-react": "7.34.1", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "4.6.2", "eslint-plugin-regexp": "2.5.0", "eslint-plugin-simple-import-sort": "12.1.0", "eslint-plugin-testing-library": "6.2.2", "prettier": "3.2.5", "tslib": "^2.6.2", - "tsx": "4.7.2", + "tsx": "4.10.5", "typescript": "5.4.5", - "vitest": "1.5.0" + "vitest": "1.6.0" }, "engines": { "node": "16.* || >= 18.0.0" diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 47a1858e8..5f3b16574 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,14 +34,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "1.5.0", + "@vitest/coverage-v8": "1.6.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", - "rimraf": "5.0.5", + "rimraf": "5.0.7", "typescript": "5.4.5", - "vite": "5.2.8", - "vite-plugin-dts": "3.8.3", - "vitest": "1.5.0" + "vite": "5.2.11", + "vite-plugin-dts": "3.9.1", + "vitest": "1.6.0" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3f37e5d7c..6df062e78 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -23,17 +23,17 @@ "@axa-fr/oidc-client-service-worker": "workspace:*" }, "devDependencies": { - "@testing-library/dom": "10.0.0", - "@testing-library/jest-dom": "6.4.2", - "@testing-library/react": "15.0.2", - "@vitest/coverage-v8": "1.5.0", + "@testing-library/dom": "10.1.0", + "@testing-library/jest-dom": "6.4.5", + "@testing-library/react": "15.0.7", + "@vitest/coverage-v8": "1.6.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", - "rimraf": "5.0.5", + "rimraf": "5.0.7", "typescript": "5.4.5", - "vite": "5.2.8", - "vite-plugin-dts": "3.8.3", - "vitest": "1.5.0" + "vite": "5.2.11", + "vite-plugin-dts": "3.9.1", + "vitest": "1.6.0" }, "keywords": [ "oidc", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6a1fd1681..28b1015ed 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -47,24 +47,24 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@testing-library/jest-dom": "6.4.2", - "@testing-library/react": "15.0.2", + "@testing-library/jest-dom": "6.4.5", + "@testing-library/react": "15.0.7", "@testing-library/user-event": "14.5.2", - "@types/react": "^18.2.78", + "@types/react": "18.3.2", "@vitejs/plugin-react": "4.2.1", - "@vitest/coverage-v8": "1.5.0", + "@vitest/coverage-v8": "1.6.0", "cpy": "11.0.1", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "jsdom": "24.0.0", - "msw": "2.2.13", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "rimraf": "5.0.5", + "msw": "2.3.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "rimraf": "5.0.7", "typescript": "5.4.5", - "vite": "5.2.8", - "vite-plugin-dts": "3.8.3", - "vitest": "1.5.0" + "vite": "5.2.11", + "vite-plugin-dts": "3.9.1", + "vitest": "1.6.0" }, "license": "MIT", "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc3f5f7a4..361fe0449 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,50 +9,50 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 7.7.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5) + specifier: 7.9.0 + version: 7.9.0(@typescript-eslint/parser@7.9.0)(eslint@9.3.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 7.7.0 - version: 7.7.0(eslint@9.0.0)(typescript@5.4.5) + specifier: 7.9.0 + version: 7.9.0(eslint@9.3.0)(typescript@5.4.5) eslint: - specifier: ^9.0.0 - version: 9.0.0 + specifier: 9.3.0 + version: 9.3.0 eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.0.0) + version: 9.1.0(eslint@9.3.0) eslint-define-config: specifier: 2.1.0 version: 2.1.0 eslint-plugin-import: specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint@9.0.0) + version: 2.29.1(@typescript-eslint/parser@7.9.0)(eslint@9.3.0) eslint-plugin-jsx-a11y: specifier: 6.8.0 - version: 6.8.0(eslint@9.0.0) + version: 6.8.0(eslint@9.3.0) eslint-plugin-n: - specifier: 17.2.1 - version: 17.2.1(eslint@9.0.0) + specifier: 17.7.0 + version: 17.7.0(eslint@9.3.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: 5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.3.0)(prettier@3.2.5) eslint-plugin-react: specifier: 7.34.1 - version: 7.34.1(eslint@9.0.0) + version: 7.34.1(eslint@9.3.0) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@9.0.0) + specifier: 4.6.2 + version: 4.6.2(eslint@9.3.0) eslint-plugin-regexp: specifier: 2.5.0 - version: 2.5.0(eslint@9.0.0) + version: 2.5.0(eslint@9.3.0) eslint-plugin-simple-import-sort: specifier: 12.1.0 - version: 12.1.0(eslint@9.0.0) + version: 12.1.0(eslint@9.3.0) eslint-plugin-testing-library: specifier: 6.2.2 - version: 6.2.2(eslint@9.0.0)(typescript@5.4.5) + version: 6.2.2(eslint@9.3.0)(typescript@5.4.5) prettier: specifier: 3.2.5 version: 3.2.5 @@ -60,14 +60,14 @@ importers: specifier: ^2.6.2 version: 2.6.2 tsx: - specifier: 4.7.2 - version: 4.7.2 + specifier: 4.10.5 + version: 4.10.5 typescript: specifier: 5.4.5 version: 5.4.5 vitest: - specifier: 1.5.0 - version: 1.5.0 + specifier: 1.6.0 + version: 1.6.0(jsdom@24.0.0) examples/nextjs-demo: dependencies: @@ -76,13 +76,13 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.1.0(react-dom@18.2.0)(react@18.2.0) + version: 14.1.0(react-dom@18.3.1)(react@18.3.1) react: specifier: latest - version: 18.2.0 + version: 18.3.1 react-dom: specifier: latest - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) examples/oidc-client-demo: dependencies: @@ -91,10 +91,10 @@ importers: version: link:../../packages/oidc-client '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) + version: 6.4.2(@types/jest@29.5.12)(vitest@1.6.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.0.0) + version: 14.5.2(@testing-library/dom@10.1.0) '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -138,7 +138,7 @@ importers: version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.0.0) + version: 14.5.2(@testing-library/dom@10.1.0) '@types/react': specifier: 18.2.65 version: 18.2.65 @@ -177,17 +177,17 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/dom': - specifier: 10.0.0 - version: 10.0.0 + specifier: 10.1.0 + version: 10.1.0 '@testing-library/jest-dom': - specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) + specifier: 6.4.5 + version: 6.4.5(vitest@1.6.0) '@testing-library/react': - specifier: 15.0.2 - version: 15.0.2(react-dom@18.2.0)(react@18.2.0) + specifier: 15.0.7 + version: 15.0.7(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@vitest/coverage-v8': - specifier: 1.5.0 - version: 1.5.0(vitest@1.5.0) + specifier: 1.6.0 + version: 1.6.0(vitest@1.6.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -195,26 +195,26 @@ importers: specifier: ^5.0.0 version: 5.0.0 rimraf: - specifier: 5.0.5 - version: 5.0.5 + specifier: 5.0.7 + version: 5.0.7 typescript: specifier: 5.4.5 version: 5.4.5 vite: - specifier: 5.2.8 - version: 5.2.8 + specifier: 5.2.11 + version: 5.2.11 vite-plugin-dts: - specifier: 3.8.3 - version: 3.8.3(typescript@5.4.5)(vite@5.2.8) + specifier: 3.9.1 + version: 3.9.1(typescript@5.4.5)(vite@5.2.11) vitest: - specifier: 1.5.0 - version: 1.5.0 + specifier: 1.6.0 + version: 1.6.0(jsdom@24.0.0) packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 1.5.0 - version: 1.5.0(vitest@1.5.0) + specifier: 1.6.0 + version: 1.6.0(vitest@1.6.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -222,20 +222,20 @@ importers: specifier: ^5.0.0 version: 5.0.0 rimraf: - specifier: 5.0.5 - version: 5.0.5 + specifier: 5.0.7 + version: 5.0.7 typescript: specifier: 5.4.5 version: 5.4.5 vite: - specifier: 5.2.8 - version: 5.2.8 + specifier: 5.2.11 + version: 5.2.11 vite-plugin-dts: - specifier: 3.8.3 - version: 3.8.3(typescript@5.4.5)(vite@5.2.8) + specifier: 3.9.1 + version: 3.9.1(typescript@5.4.5)(vite@5.2.11) vitest: - specifier: 1.5.0 - version: 1.5.0 + specifier: 1.6.0 + version: 1.6.0(jsdom@24.0.0) packages/react-oidc: dependencies: @@ -247,23 +247,23 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/jest-dom': - specifier: 6.4.2 - version: 6.4.2(@types/jest@29.5.12)(vitest@1.5.0) + specifier: 6.4.5 + version: 6.4.5(vitest@1.6.0) '@testing-library/react': - specifier: 15.0.2 - version: 15.0.2(react-dom@18.2.0)(react@18.2.0) + specifier: 15.0.7 + version: 15.0.7(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.0.0) + version: 14.5.2(@testing-library/dom@10.1.0) '@types/react': - specifier: ^18.2.78 - version: 18.2.78 + specifier: 18.3.2 + version: 18.3.2 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@5.2.8) + version: 4.2.1(vite@5.2.11) '@vitest/coverage-v8': - specifier: 1.5.0 - version: 1.5.0(vitest@1.5.0) + specifier: 1.6.0 + version: 1.6.0(vitest@1.6.0) cpy: specifier: 11.0.1 version: 11.0.1 @@ -277,29 +277,29 @@ importers: specifier: 24.0.0 version: 24.0.0 msw: - specifier: 2.2.13 - version: 2.2.13(typescript@5.4.5) + specifier: 2.3.0 + version: 2.3.0(typescript@5.4.5) react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: ^18.3.1 + version: 18.3.1 react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) rimraf: - specifier: 5.0.5 - version: 5.0.5 + specifier: 5.0.7 + version: 5.0.7 typescript: specifier: 5.4.5 version: 5.4.5 vite: - specifier: 5.2.8 - version: 5.2.8 + specifier: 5.2.11 + version: 5.2.11 vite-plugin-dts: - specifier: 3.8.3 - version: 3.8.3(typescript@5.4.5)(vite@5.2.8) + specifier: 3.9.1 + version: 3.9.1(typescript@5.4.5)(vite@5.2.11) vitest: - specifier: 1.5.0 - version: 1.5.0(jsdom@24.0.0) + specifier: 1.6.0 + version: 1.6.0(jsdom@24.0.0) packages: @@ -560,6 +560,7 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true + dev: true optional: true /@esbuild/aix-ppc64@0.20.2: @@ -576,6 +577,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm64@0.20.2: @@ -592,6 +594,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.20.2: @@ -608,6 +611,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.20.2: @@ -624,6 +628,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.20.2: @@ -640,6 +645,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.20.2: @@ -656,6 +662,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.20.2: @@ -672,6 +679,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.20.2: @@ -688,6 +696,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.20.2: @@ -704,6 +713,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.20.2: @@ -720,6 +730,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.20.2: @@ -736,6 +747,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.20.2: @@ -752,6 +764,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.20.2: @@ -768,6 +781,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.20.2: @@ -784,6 +798,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.20.2: @@ -800,6 +815,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.20.2: @@ -816,6 +832,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.20.2: @@ -832,6 +849,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.20.2: @@ -848,6 +866,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.20.2: @@ -864,6 +883,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.20.2: @@ -880,6 +900,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.20.2: @@ -896,6 +917,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.20.2: @@ -912,6 +934,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.20.2: @@ -922,13 +945,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.3.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.0.0 + eslint: 9.3.0 eslint-visitor-keys: 3.4.3 dev: true @@ -937,8 +960,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@3.0.2: - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + /@eslint/eslintrc@3.1.0: + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 @@ -954,13 +977,13 @@ packages: - supports-color dev: true - /@eslint/js@9.0.0: - resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + /@eslint/js@9.3.0: + resolution: {integrity: sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@humanwhocodes/config-array@0.12.3: - resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} + /@humanwhocodes/config-array@0.13.0: + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -979,6 +1002,11 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true + /@humanwhocodes/retry@0.3.0: + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + dev: true + /@inquirer/confirm@3.1.4: resolution: {integrity: sha512-2z2RC0JyQCmggQfRxFnQitGp8YZgdM/AqcOuLaUtL0dZHFByk5jgtzxECX4z5MsH8aq2WzdLPI2AHmHOkh8eRA==} engines: {node: '>=18'} @@ -1038,6 +1066,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: false /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -1055,6 +1084,7 @@ packages: '@types/node': 20.11.26 '@types/yargs': 17.0.32 chalk: 4.1.2 + dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -1164,8 +1194,8 @@ packages: engines: {node: '>=18'} dev: true - /@mswjs/interceptors@0.26.15: - resolution: {integrity: sha512-HM47Lu1YFmnYHKMBynFfjCp0U/yRskHj/8QEJW0CBEPOlw8Gkmjfll+S9b8M7V5CNDw2/ciRxjjnWeaCiblSIQ==} + /@mswjs/interceptors@0.29.1: + resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} engines: {node: '>=18'} dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -1340,6 +1370,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-android-arm64@4.14.3: @@ -1354,6 +1385,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-arm64@4.14.3: @@ -1368,6 +1400,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-x64@4.14.3: @@ -1382,6 +1415,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.14.3: @@ -1396,6 +1430,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-musleabihf@4.14.3: @@ -1417,6 +1452,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.14.3: @@ -1431,6 +1467,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: @@ -1452,6 +1489,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-s390x-gnu@4.14.3: @@ -1473,6 +1511,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-musl@4.14.3: @@ -1487,6 +1526,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.14.3: @@ -1501,6 +1541,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.14.3: @@ -1515,6 +1556,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.14.3: @@ -1529,6 +1571,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@rushstack/node-core-library@3.62.0: @@ -1619,8 +1662,8 @@ packages: tslib: 2.6.2 dev: false - /@testing-library/dom@10.0.0: - resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} + /@testing-library/dom@10.1.0: + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} engines: {node: '>=18'} dependencies: '@babel/code-frame': 7.23.5 @@ -1646,7 +1689,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.5.0): + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.6.0): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -1676,7 +1719,8 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.5.0 + vitest: 1.6.0(jsdom@24.0.0) + dev: false /@testing-library/jest-dom@6.4.2(vitest@1.3.1): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} @@ -1710,6 +1754,38 @@ packages: vitest: 1.3.1(jsdom@24.0.0) dev: true + /@testing-library/jest-dom@6.4.5(vitest@1.6.0): + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.23.9 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + vitest: 1.6.0(jsdom@24.0.0) + dev: true + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} engines: {node: '>=14'} @@ -1724,27 +1800,32 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/react@15.0.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5mzIpuytB1ctpyywvyaY2TAAUQVCZIGqwiqFQf6u9lvj/SJQepGUzNV18Xpk+NLCaCE2j7CWrZE0tEf9xLZYiQ==} + /@testing-library/react@15.0.7(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==} engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.0.0 react: ^18.0.0 react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.9 - '@testing-library/dom': 10.0.0 + '@testing-library/dom': 10.1.0 + '@types/react': 18.3.2 '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@10.0.0): + /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 10.0.0 + '@testing-library/dom': 10.1.0 /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1791,22 +1872,26 @@ packages: /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false /@types/istanbul-lib-report@3.0.3: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: false /@types/istanbul-reports@3.0.4: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: false /@types/jest@29.5.12: resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: false /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1840,7 +1925,7 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.78 + '@types/react': 18.3.2 dev: true /@types/react@18.2.65: @@ -1851,8 +1936,8 @@ packages: csstype: 3.1.2 dev: true - /@types/react@18.2.78: - resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} + /@types/react@18.3.2: + resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} dependencies: '@types/prop-types': 15.7.5 csstype: 3.1.2 @@ -1866,12 +1951,9 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true - /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: false /@types/statuses@2.0.4: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} @@ -1883,14 +1965,16 @@ packages: /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false /@types/yargs@17.0.32: resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5): - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + /@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0)(eslint@9.3.0)(typescript@5.4.5): + resolution: {integrity: sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1901,25 +1985,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 9.0.0 + '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/type-utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 + eslint: 9.3.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + /@typescript-eslint/parser@7.9.0(eslint@9.3.0)(typescript@5.4.5): + resolution: {integrity: sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1928,12 +2010,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 - eslint: 9.0.0 + eslint: 9.3.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -1947,16 +2029,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + /@typescript-eslint/scope-manager@7.9.0: + resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 dev: true - /@typescript-eslint/type-utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + /@typescript-eslint/type-utils@7.9.0(eslint@9.3.0)(typescript@5.4.5): + resolution: {integrity: sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1965,10 +2047,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.0.0 + eslint: 9.3.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -1980,8 +2062,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + /@typescript-eslint/types@7.9.0: + resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true @@ -2006,8 +2088,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + /@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5): + resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -2015,8 +2097,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2028,19 +2110,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@9.0.0)(typescript@5.4.5): + /@typescript-eslint/utils@5.62.0(eslint@9.3.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - eslint: 9.0.0 + eslint: 9.3.0 eslint-scope: 5.1.1 semver: 7.6.0 transitivePeerDependencies: @@ -2048,20 +2130,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + /@typescript-eslint/utils@7.9.0(eslint@9.3.0)(typescript@5.4.5): + resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - eslint: 9.0.0 - semver: 7.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + eslint: 9.3.0 transitivePeerDependencies: - supports-color - typescript @@ -2075,11 +2154,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + /@typescript-eslint/visitor-keys@7.9.0: + resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 7.9.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2099,7 +2178,7 @@ packages: - supports-color dev: true - /@vitejs/plugin-react@4.2.1(vite@5.2.8): + /@vitejs/plugin-react@4.2.1(vite@5.2.11): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2110,15 +2189,15 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.2.8 + vite: 5.2.11 transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-v8@1.5.0(vitest@1.5.0): - resolution: {integrity: sha512-1igVwlcqw1QUMdfcMlzzY4coikSIBN944pkueGi0pawrX5I5Z+9hxdTR+w3Sg6Q3eZhvdMAs8ZaF9JuTG1uYOQ==} + /@vitest/coverage-v8@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} peerDependencies: - vitest: 1.5.0 + vitest: 1.6.0 dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 @@ -2127,13 +2206,13 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.6 - magic-string: 0.30.7 + magic-string: 0.30.9 magicast: 0.3.3 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 2.0.0 test-exclude: 6.0.0 - vitest: 1.5.0 + vitest: 1.6.0(jsdom@24.0.0) transitivePeerDependencies: - supports-color dev: true @@ -2146,11 +2225,11 @@ packages: chai: 4.4.1 dev: true - /@vitest/expect@1.5.0: - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 /@vitest/runner@1.3.1: @@ -2161,10 +2240,10 @@ packages: pathe: 1.1.2 dev: true - /@vitest/runner@1.5.0: - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: - '@vitest/utils': 1.5.0 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 @@ -2176,8 +2255,8 @@ packages: pretty-format: 29.7.0 dev: true - /@vitest/snapshot@1.5.0: - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: magic-string: 0.30.9 pathe: 1.1.2 @@ -2189,8 +2268,8 @@ packages: tinyspy: 2.2.0 dev: true - /@vitest/spy@1.5.0: - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: tinyspy: 2.2.0 @@ -2203,8 +2282,8 @@ packages: pretty-format: 29.7.0 dev: true - /@vitest/utils@1.5.0: - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -2315,7 +2394,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} @@ -2523,7 +2601,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true /available-typed-arrays@1.0.6: resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} @@ -2672,6 +2749,7 @@ packages: /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + dev: false /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} @@ -2738,7 +2816,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: true /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} @@ -2862,7 +2939,6 @@ packages: engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 - dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -2878,7 +2954,6 @@ packages: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - dev: true /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} @@ -2935,7 +3010,6 @@ packages: /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -3000,7 +3074,6 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: true /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -3057,7 +3130,6 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - dev: true /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} @@ -3294,6 +3366,7 @@ packages: '@esbuild/win32-arm64': 0.19.12 '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + dev: true /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} @@ -3337,6 +3410,7 @@ packages: /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} + dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3348,22 +3422,22 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@9.0.0): + /eslint-compat-utils@0.1.2(eslint@9.3.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.0.0 + eslint: 9.3.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.0.0): + /eslint-config-prettier@9.1.0(eslint@9.3.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.0.0 + eslint: 9.3.0 dev: true /eslint-define-config@2.1.0: @@ -3381,7 +3455,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@9.3.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3402,27 +3476,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 9.0.0 + eslint: 9.3.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@9.0.0): + /eslint-plugin-es-x@7.5.0(eslint@9.3.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) '@eslint-community/regexpp': 4.10.0 - eslint: 9.0.0 - eslint-compat-utils: 0.1.2(eslint@9.0.0) + eslint: 9.3.0 + eslint-compat-utils: 0.1.2(eslint@9.3.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0)(eslint@9.0.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.9.0)(eslint@9.3.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3432,16 +3506,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.0.0 + eslint: 9.3.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@9.0.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@9.3.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -3457,7 +3531,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@9.0.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@9.3.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: @@ -3473,7 +3547,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.15 - eslint: 9.0.0 + eslint: 9.3.0 hasown: 2.0.0 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -3482,20 +3556,20 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-n@17.2.1(eslint@9.0.0): - resolution: {integrity: sha512-uW1+df2bo06kR7ix6nB614RUlvjRPrYxlaX832O6e1MCJp4V7YozEdvMgCYuvn4ltnjPu1FVYhQ2KRrmTNoJfg==} + /eslint-plugin-n@17.7.0(eslint@9.3.0): + resolution: {integrity: sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) enhanced-resolve: 5.16.0 - eslint: 9.0.0 - eslint-plugin-es-x: 7.5.0(eslint@9.0.0) + eslint: 9.3.0 + eslint-plugin-es-x: 7.5.0(eslint@9.3.0) get-tsconfig: 4.7.2 - globals: 14.0.0 + globals: 15.2.0 ignore: 5.3.1 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 dev: true @@ -3504,7 +3578,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.3.0)(prettier@3.2.5): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3518,23 +3592,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.0.0 - eslint-config-prettier: 9.1.0(eslint@9.0.0) + eslint: 9.3.0 + eslint-config-prettier: 9.1.0(eslint@9.3.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@9.0.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + /eslint-plugin-react-hooks@4.6.2(eslint@9.3.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.0.0 + eslint: 9.3.0 dev: true - /eslint-plugin-react@7.34.1(eslint@9.0.0): + /eslint-plugin-react@7.34.1(eslint@9.3.0): resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: @@ -3547,7 +3621,7 @@ packages: array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 es-iterator-helpers: 1.0.18 - eslint: 9.0.0 + eslint: 9.3.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -3561,38 +3635,38 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-regexp@2.5.0(eslint@9.0.0): + /eslint-plugin-regexp@2.5.0(eslint@9.3.0): resolution: {integrity: sha512-I7vKcP0o75WS5SHiVNXN+Eshq49sbrweMQIuqSL3AId9AwDe9Dhbfug65vw64LxmOd4v+yf5l5Xt41y9puiq0g==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.0.0 + eslint: 9.3.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@12.1.0(eslint@9.0.0): + /eslint-plugin-simple-import-sort@12.1.0(eslint@9.3.0): resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 9.0.0 + eslint: 9.3.0 dev: true - /eslint-plugin-testing-library@6.2.2(eslint@9.0.0)(typescript@5.4.5): + /eslint-plugin-testing-library@6.2.2(eslint@9.3.0)(typescript@5.4.5): resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.0.0)(typescript@5.4.5) - eslint: 9.0.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.3.0)(typescript@5.4.5) + eslint: 9.3.0 transitivePeerDependencies: - supports-color - typescript @@ -3624,17 +3698,18 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@9.0.0: - resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + /eslint@9.3.0: + resolution: {integrity: sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.0.0 - '@humanwhocodes/config-array': 0.12.3 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.3.0 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 @@ -3650,7 +3725,6 @@ packages: file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -3737,6 +3811,7 @@ packages: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3825,7 +3900,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -3927,6 +4001,12 @@ packages: resolve-pkg-maps: 1.0.0 dev: true + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3974,6 +4054,11 @@ packages: engines: {node: '>=18'} dev: true + /globals@15.2.0: + resolution: {integrity: sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==} + engines: {node: '>=18'} + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4096,7 +4181,6 @@ packages: engines: {node: '>=18'} dependencies: whatwg-encoding: 3.1.1 - dev: true /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -4110,7 +4194,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} @@ -4120,7 +4203,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -4131,7 +4213,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -4322,7 +4403,6 @@ packages: /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4466,10 +4546,12 @@ packages: diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false /jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} @@ -4479,6 +4561,7 @@ packages: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} @@ -4493,6 +4576,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: false /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} @@ -4504,6 +4588,7 @@ packages: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: false /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -4565,7 +4650,6 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -4718,6 +4802,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /magic-string@0.30.9: resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} @@ -4763,14 +4848,12 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -4792,13 +4875,6 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -4836,8 +4912,8 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@2.2.13(typescript@5.4.5): - resolution: {integrity: sha512-ljFf1xZsU0b4zv1l7xzEmC6OZA6yD06hcx0H+dc8V0VypaP3HGYJa1rMLjQbBWl32ptGhcfwcPCWDB1wjmsftw==} + /msw@2.3.0(typescript@5.4.5): + resolution: {integrity: sha512-cDr1q/QTMzaWhY8n9lpGhceY209k29UZtdTgJ3P8Bzne3TSMchX2EM/ldvn4ATLOktpCefCU2gcEgzHc31GTPw==} engines: {node: '>=18'} hasBin: true requiresBuild: true @@ -4851,7 +4927,7 @@ packages: '@bundled-es-modules/statuses': 1.0.1 '@inquirer/confirm': 3.1.4 '@mswjs/cookies': 1.1.0 - '@mswjs/interceptors': 0.26.15 + '@mswjs/interceptors': 0.29.1 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.4 @@ -4889,7 +4965,7 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.0(react-dom@18.2.0)(react@18.2.0): + /next@14.1.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true @@ -4910,9 +4986,9 @@ packages: caniuse-lite: 1.0.30001584 graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.1.0 '@next/swc-darwin-x64': 14.1.0 @@ -4947,7 +5023,6 @@ packages: /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5127,7 +5202,6 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 - dev: true /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -5276,16 +5350,13 @@ packages: /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - dev: true /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5300,6 +5371,15 @@ packages: react: 18.2.0 scheduler: 0.23.0 + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true @@ -5344,6 +5424,12 @@ packages: dependencies: loose-envify: 1.4.0 + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: @@ -5429,7 +5515,6 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -5470,9 +5555,9 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf@5.0.5: - resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} - engines: {node: '>=14'} + /rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} hasBin: true dependencies: glob: 10.3.10 @@ -5524,10 +5609,10 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.9.6 '@rollup/rollup-win32-x64-msvc': 4.9.6 fsevents: 2.3.3 + dev: true /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5579,20 +5664,23 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 - dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + /scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} @@ -5707,6 +5795,7 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: false /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5873,7 +5962,7 @@ packages: dependencies: js-tokens: 8.0.3 - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx@5.1.1(react@18.3.1): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5887,7 +5976,7 @@ packages: optional: true dependencies: client-only: 0.0.1 - react: 18.2.0 + react: 18.3.1 dev: false /supports-color@5.5.0: @@ -5916,7 +6005,6 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true /synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} @@ -5986,14 +6074,12 @@ packages: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true /tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} dependencies: punycode: 2.3.1 - dev: true /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -6030,13 +6116,13 @@ packages: typescript: 5.4.5 dev: true - /tsx@4.7.2: - resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} + /tsx@4.10.5: + resolution: {integrity: sha512-twDSbf7Gtea4I2copqovUiNTEDrT8XNFXsuHpfGbdpW/z9ZW4fTghzzhAG0WfrCuJmJiOEY1nLIjq4u3oujRWQ==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.19.12 - get-tsconfig: 4.7.2 + esbuild: 0.20.2 + get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 dev: true @@ -6184,7 +6270,6 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -6213,7 +6298,6 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6233,7 +6317,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.8 + vite: 5.2.11 transitivePeerDependencies: - '@types/node' - less @@ -6245,8 +6329,8 @@ packages: - terser dev: true - /vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + /vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -6254,7 +6338,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.8 + vite: 5.2.11 transitivePeerDependencies: - '@types/node' - less @@ -6289,8 +6373,8 @@ packages: - supports-color dev: true - /vite-plugin-dts@3.8.3(typescript@5.4.5)(vite@5.2.8): - resolution: {integrity: sha512-yRHiRosQw7MXdOhmcrVI+kRiB8YEShbSxnADNteK4eZGdEoyOkMHihvO5XOAVlOq8ng9sIqu8vVefDK1zcj3qw==} + /vite-plugin-dts@3.9.1(typescript@5.4.5)(vite@5.2.11): + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6306,7 +6390,7 @@ packages: kolorist: 1.8.0 magic-string: 0.30.9 typescript: 5.4.5 - vite: 5.2.8 + vite: 5.2.11 vue-tsc: 1.8.27(typescript@5.4.5) transitivePeerDependencies: - '@types/node' @@ -6347,6 +6431,7 @@ packages: rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 + dev: true /vite@5.1.6(@types/node@20.11.26): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} @@ -6384,8 +6469,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.2.8: - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + /vite@5.2.11: + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6474,15 +6559,15 @@ packages: - terser dev: true - /vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + /vitest@1.6.0(jsdom@24.0.0): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -6499,65 +6584,11 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.7 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.4 - vite: 5.1.6 - vite-node: 1.5.0 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - /vitest@1.5.0(jsdom@24.0.0): - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 @@ -6571,8 +6602,8 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.4 - vite: 5.2.8 - vite-node: 1.5.0 + vite: 5.2.11 + vite-node: 1.6.0 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6582,7 +6613,6 @@ packages: - sugarss - supports-color - terser - dev: true /vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} @@ -6620,7 +6650,6 @@ packages: engines: {node: '>=18'} dependencies: xml-name-validator: 5.0.0 - dev: true /web-vitals@3.5.2: resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} @@ -6629,19 +6658,16 @@ packages: /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - dev: true /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 - dev: true /whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - dev: true /whatwg-url@14.0.0: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} @@ -6649,7 +6675,6 @@ packages: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 - dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6767,16 +6792,13 @@ packages: optional: true utf-8-validate: optional: true - dev: true /xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} - dev: true /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} From 8d9fd9550a74a771936f0e686eb31fe271cd912b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 19 May 2024 15:24:19 +0200 Subject: [PATCH 265/565] fix(oidc): user loaded 401 when preload true and not serviceworder mode (release) --- examples/react-oidc-demo/src/configurations.ts | 2 +- packages/oidc-client/src/login.ts | 3 --- packages/oidc-client/src/oidc.ts | 3 +++ 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index 16efca83f..4447f3a8b 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -9,7 +9,7 @@ export const configurationIdentityServer = { authority: 'https://demo.duendesoftware.com', // authority_time_cache_wellknowurl_in_second: 60* 60, refresh_time_before_tokens_expiration_in_second: 40, - service_worker_relative_url: '/OidcServiceWorker.js', + // service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, // storage: localStorage, // silent_login_timeout: 3333000 diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 4614eebb3..95547c304 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -207,9 +207,6 @@ export const loginCallbackAsync = (oidc:Oidc) => async (isSilentSignin = false) } await oidc.startCheckSessionAsync(oidcServerConfiguration.checkSessionIframe, clientId, sessionState, isSilentSignin); - if(configuration.preload_user_info){ - await oidc.userInfoAsync(); - } oidc.publishEvent(eventNames.loginCallbackAsync_end, {}); return { tokens: formattedTokens, diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 36f42bc37..b5b8e9079 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -283,6 +283,9 @@ Please checkout that you are using OIDC hook inside a Date: Sun, 19 May 2024 13:27:10 +0000 Subject: [PATCH 266/565] [skip ci] Update to version 7.22.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 5f3b16574..ce062d0fe 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.4", + "version": "7.22.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 37784eb89..5724d3602 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.4'; +export default '7.22.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6df062e78..b645e88d7 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.4", + "version": "7.22.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 37784eb89..5724d3602 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.4'; +export default '7.22.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 28b1015ed..33db3f1c3 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.4", + "version": "7.22.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 14fa1410a70b83fd517ce76eec5c94599c082b4f Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 19 May 2024 13:27:12 +0000 Subject: [PATCH 267/565] [skip ci] Generate changelog to version 7.22.5 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e89ca6f8a..b8beee3c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.22.4 +## 7.22.5 + +- [8d9fd95](https://github.com/AxaFrance/oidc-client/commit/8d9fd9550a74a771936f0e686eb31fe271cd912b) - fix(oidc): user loaded 401 when preload true and not serviceworder mode (release), 2024-05-19 by *Guillaume Chervet* +- [d764b2b](https://github.com/AxaFrance/oidc-client/commit/d764b2bd7319711c49a393c1fd3496d054661065) - refatcor(all): update librairies, 2024-05-18 by *Guillaume Chervet* + + +## v7.22.4 - [64c76e0](https://github.com/AxaFrance/oidc-client/commit/64c76e0b1f4fccf1c0ed93269a0307212be9d661) - feature(oidc):preload user (release) (#1352), 2024-04-23 by *Guillaume Chervet* @@ -311,8 +317,3 @@ - [7a53f73](https://github.com/AxaFrance/oidc-client/commit/7a53f73bf03b85be9248379f21def37ee34bd415) - build(npm): bump @types/react from 18.2.17 to 18.2.39 (#1215), 2023-11-29 by *dependabot[bot]* -## v7.12.6 - -- [55b318e](https://github.com/AxaFrance/oidc-client/commit/55b318e1c31fe6a7d1be106e99b14db35e4f4229) - build(npm): bump @types/node from 18.17.1 to 20.10.1 (#1217), 2023-11-29 by *dependabot[bot]* - - From c49a8572702c485c9a089b0f9aa11eb4bc6e7f1d Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 22 May 2024 08:42:24 +0200 Subject: [PATCH 268/565] refactor(test): add missing logout test case --- packages/oidc-client/src/logout.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index 5d18d8705..c6b9e8ff5 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -12,6 +12,7 @@ describe('Logout test suite', () => { {logout_tokens_to_invalidate:['refresh_token'],extras:null, expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short"], expectedFinalUrl}, {logout_tokens_to_invalidate:['access_token'],extras:null, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short"], expectedFinalUrl}, {logout_tokens_to_invalidate:[],extras:null, expectedResults: [], expectedFinalUrl}, + {logout_tokens_to_invalidate:[],extras: {"id_token_hint": undefined}, expectedResults: [], expectedFinalUrl: "http://api/connect/endsession?post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out" }, {logout_tokens_to_invalidate:[],extras: {"no_reload:oidc":"true"}, expectedResults: [], expectedFinalUrl:""}, {logout_tokens_to_invalidate:['refresh_token'],extras:{"client_secret:revoke_refresh_token":"secret"}, expectedResults: ["token=abdc&token_type_hint=refresh_token&client_id=interactive.public.short&client_secret=secret"], expectedFinalUrl}, {logout_tokens_to_invalidate:['access_token'],extras:{"client_secret:revoke_access_token":"secret"}, expectedResults: ["token=abcd&token_type_hint=access_token&client_id=interactive.public.short&client_secret=secret"], expectedFinalUrl}, From bcba15b412063d139c0902de117b0516150c13a2 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 22 May 2024 22:04:08 +0200 Subject: [PATCH 269/565] fix(react-oidc): compatibility with react 19 (release) (#1372) * fix(react-oidc): compatibility with react 19 --- README.md | 2 +- examples/react-oidc-demo/package.json | 12 +- packages/react-oidc/vite.config.ts | 5 +- pnpm-lock.yaml | 408 ++------------------------ 4 files changed, 39 insertions(+), 388 deletions(-) diff --git a/README.md b/README.md index 038c38352..4b40a3ce1 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up-to-date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : ```sh "scripts": { ... diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index a3ca38b62..ecfece789 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -24,19 +24,19 @@ "react-router-dom": "^6.22.3" }, "devDependencies": { - "@testing-library/jest-dom": "6.4.2", - "@testing-library/react": "14.2.1", + "@testing-library/jest-dom": "6.4.5", + "@testing-library/react": "15.0.7", "@testing-library/user-event": "14.5.2", - "@types/react": "18.2.65", + "@types/react": "18.3.2", "@vitejs/plugin-react": "4.2.1", "bootstrap": "^4.6.2", "copyfiles": "2.4.1", "cross-env": "^7.0.3", "jsdom": " 24.0.0", - "typescript": "5.4.2", + "typescript": "5.4.5", "vite": "5.1.6", - "vite-plugin-dts": "3.7.3", - "vitest": "1.3.1" + "vite-plugin-dts": "3.9.1", + "vitest": "1.6.0" }, "license": "MIT", "publishConfig": { diff --git a/packages/react-oidc/vite.config.ts b/packages/react-oidc/vite.config.ts index 04536f12c..7b4ed8c80 100644 --- a/packages/react-oidc/vite.config.ts +++ b/packages/react-oidc/vite.config.ts @@ -17,7 +17,10 @@ export default defineConfig({ fileName: 'index', }, rollupOptions: { - external: [...dependencies], + external: [ + ...dependencies, + 'react/jsx-runtime' + ], output: { globals: { react: 'React', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 361fe0449..f30bc04c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,17 +131,17 @@ importers: version: 6.22.3(react-dom@18.2.0)(react@18.2.0) devDependencies: '@testing-library/jest-dom': - specifier: 6.4.2 - version: 6.4.2(vitest@1.3.1) + specifier: 6.4.5 + version: 6.4.5(vitest@1.6.0) '@testing-library/react': - specifier: 14.2.1 - version: 14.2.1(react-dom@18.2.0)(react@18.2.0) + specifier: 15.0.7 + version: 15.0.7(@types/react@18.3.2)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 version: 14.5.2(@testing-library/dom@10.1.0) '@types/react': - specifier: 18.2.65 - version: 18.2.65 + specifier: 18.3.2 + version: 18.3.2 '@vitejs/plugin-react': specifier: 4.2.1 version: 4.2.1(vite@5.1.6) @@ -158,17 +158,17 @@ importers: specifier: ' 24.0.0' version: 24.0.0 typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: 5.4.5 + version: 5.4.5 vite: specifier: 5.1.6 version: 5.1.6 vite-plugin-dts: - specifier: 3.7.3 - version: 3.7.3(typescript@5.4.2)(vite@5.1.6) + specifier: 3.9.1 + version: 3.9.1(typescript@5.4.5)(vite@5.1.6) vitest: - specifier: 1.3.1 - version: 1.3.1(jsdom@24.0.0) + specifier: 1.6.0 + version: 1.6.0(jsdom@24.0.0) packages/oidc-client: dependencies: @@ -1125,36 +1125,6 @@ packages: - '@types/node' dev: true - /@microsoft/api-extractor-model@7.28.3: - resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.39.0: - resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.28.3 - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0 - '@rushstack/rig-package': 0.5.1 - '@rushstack/ts-command-line': 4.17.1 - colors: 1.2.5 - lodash: 4.17.21 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.3.3 - transitivePeerDependencies: - - '@types/node' - dev: true - /@microsoft/api-extractor@7.43.0: resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} hasBin: true @@ -1574,23 +1544,6 @@ packages: dev: true optional: true - /@rushstack/node-core-library@3.62.0: - resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - z-schema: 5.0.5 - dev: true - /@rushstack/node-core-library@4.0.2: resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: @@ -1607,13 +1560,6 @@ packages: z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.5.1: - resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} - dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 - dev: true - /@rushstack/rig-package@0.5.2: resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} dependencies: @@ -1633,15 +1579,6 @@ packages: supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.17.1: - resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.2 - dev: true - /@rushstack/ts-command-line@4.19.1: resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} dependencies: @@ -1675,20 +1612,6 @@ packages: lz-string: 1.5.0 pretty-format: 27.5.1 - /@testing-library/dom@9.3.4: - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.9 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.6.0): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -1722,38 +1645,6 @@ packages: vitest: 1.6.0(jsdom@24.0.0) dev: false - /@testing-library/jest-dom@6.4.2(vitest@1.3.1): - resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true - dependencies: - '@adobe/css-tools': 4.3.3 - '@babel/runtime': 7.23.9 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - vitest: 1.3.1(jsdom@24.0.0) - dev: true - /@testing-library/jest-dom@6.4.5(vitest@1.6.0): resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -1786,15 +1677,20 @@ packages: vitest: 1.6.0(jsdom@24.0.0) dev: true - /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} - engines: {node: '>=14'} + /@testing-library/react@15.0.7(@types/react@18.3.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==} + engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.0.0 react: ^18.0.0 react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.9 - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.1.0 + '@types/react': 18.3.2 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1928,14 +1824,6 @@ packages: '@types/react': 18.3.2 dev: true - /@types/react@18.2.65: - resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: true - /@types/react@18.3.2: resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} dependencies: @@ -1943,10 +1831,6 @@ packages: csstype: 3.1.2 dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: true - /@types/semver@7.5.6: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true @@ -2217,14 +2101,6 @@ packages: - supports-color dev: true - /@vitest/expect@1.3.1: - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.4.1 - dev: true - /@vitest/expect@1.6.0: resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: @@ -2232,14 +2108,6 @@ packages: '@vitest/utils': 1.6.0 chai: 4.4.1 - /@vitest/runner@1.3.1: - resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} - dependencies: - '@vitest/utils': 1.3.1 - p-limit: 5.0.0 - pathe: 1.1.2 - dev: true - /@vitest/runner@1.6.0: resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: @@ -2247,14 +2115,6 @@ packages: p-limit: 5.0.0 pathe: 1.1.2 - /@vitest/snapshot@1.3.1: - resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} - dependencies: - magic-string: 0.30.9 - pathe: 1.1.2 - pretty-format: 29.7.0 - dev: true - /@vitest/snapshot@1.6.0: resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: @@ -2262,26 +2122,11 @@ packages: pathe: 1.1.2 pretty-format: 29.7.0 - /@vitest/spy@1.3.1: - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} - dependencies: - tinyspy: 2.2.0 - dev: true - /@vitest/spy@1.6.0: resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: tinyspy: 2.2.0 - /@vitest/utils@1.3.1: - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - /@vitest/utils@1.6.0: resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: @@ -2326,26 +2171,6 @@ packages: '@vue/shared': 3.4.15 dev: true - /@vue/language-core@1.8.27(typescript@5.4.2): - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.15 - '@vue/shared': 3.4.15 - computeds: 0.0.1 - minimatch: 9.0.4 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - typescript: 5.4.2 - vue-template-compiler: 2.7.16 - dev: true - /@vue/language-core@1.8.27(typescript@5.4.5): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: @@ -2459,12 +2284,6 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - dependencies: - deep-equal: 2.2.2 - dev: true - /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -2806,11 +2625,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: true - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -3017,29 +2831,6 @@ packages: dependencies: type-detect: 4.0.8 - /deep-equal@2.2.2: - resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.5 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.3 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.14 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -3244,20 +3035,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - /es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: @@ -4275,14 +4052,6 @@ packages: side-channel: 1.0.4 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.2 - dev: true - /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -4797,13 +4566,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - /magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.9: resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} @@ -5033,14 +4795,6 @@ packages: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -5808,13 +5562,6 @@ packages: /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.6 - dev: true - /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -6042,11 +5789,6 @@ packages: /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} - engines: {node: '>=14.0.0'} - dev: true - /tinypool@0.8.4: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} @@ -6230,12 +5972,6 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -6308,27 +6044,6 @@ packages: engines: {node: '>= 0.10'} dev: true - /vite-node@1.3.1: - resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6349,8 +6064,8 @@ packages: - supports-color - terser - /vite-plugin-dts@3.7.3(typescript@5.4.2)(vite@5.1.6): - resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} + /vite-plugin-dts@3.9.1(typescript@5.4.5)(vite@5.1.6): + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6359,14 +6074,15 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.39.0 + '@microsoft/api-extractor': 7.43.0 '@rollup/pluginutils': 5.1.0 - '@vue/language-core': 1.8.27(typescript@5.4.2) + '@vue/language-core': 1.8.27(typescript@5.4.5) debug: 4.3.4 kolorist: 1.8.0 - typescript: 5.4.2 + magic-string: 0.30.9 + typescript: 5.4.5 vite: 5.1.6 - vue-tsc: 1.8.27(typescript@5.4.2) + vue-tsc: 1.8.27(typescript@5.4.5) transitivePeerDependencies: - '@types/node' - rollup @@ -6503,62 +6219,6 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vitest@1.3.1(jsdom@24.0.0): - resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.1 - '@vitest/ui': 1.3.1 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@vitest/expect': 1.3.1 - '@vitest/runner': 1.3.1 - '@vitest/snapshot': 1.3.1 - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - jsdom: 24.0.0 - local-pkg: 0.5.0 - magic-string: 0.30.7 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.6 - vite-node: 1.3.1 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vitest@1.6.0(jsdom@24.0.0): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6621,18 +6281,6 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.27(typescript@5.4.2): - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} - hasBin: true - peerDependencies: - typescript: '*' - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.2) - semver: 7.6.0 - typescript: 5.4.2 - dev: true - /vue-tsc@1.8.27(typescript@5.4.5): resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true From e8ad44f823fe89e28c6616ed3f63a1ff28554386 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 22 May 2024 20:06:40 +0000 Subject: [PATCH 270/565] [skip ci] Update to version 7.22.6 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index ce062d0fe..99fd66e4d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.5", + "version": "7.22.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 5724d3602..f217ff774 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.5'; +export default '7.22.6'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b645e88d7..845cdf319 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.5", + "version": "7.22.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 5724d3602..f217ff774 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.5'; +export default '7.22.6'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 33db3f1c3..963a95428 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.5", + "version": "7.22.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 630b4faed4ff275712f2f2ae00be64f8587cfc4b Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 22 May 2024 20:06:42 +0000 Subject: [PATCH 271/565] [skip ci] Generate changelog to version 7.22.6 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8beee3c3..a4450bf79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.22.5 +## 7.22.6 + +- [bcba15b](https://github.com/AxaFrance/oidc-client/commit/bcba15b412063d139c0902de117b0516150c13a2) - fix(react-oidc): compatibility with react 19 (release) (#1372), 2024-05-22 by *Guillaume Chervet* +- [c49a857](https://github.com/AxaFrance/oidc-client/commit/c49a8572702c485c9a089b0f9aa11eb4bc6e7f1d) - refactor(test): add missing logout test case, 2024-05-22 by *Guillaume Chervet* + + +## v7.22.5 - [8d9fd95](https://github.com/AxaFrance/oidc-client/commit/8d9fd9550a74a771936f0e686eb31fe271cd912b) - fix(oidc): user loaded 401 when preload true and not serviceworder mode (release), 2024-05-19 by *Guillaume Chervet* - [d764b2b](https://github.com/AxaFrance/oidc-client/commit/d764b2bd7319711c49a393c1fd3496d054661065) - refatcor(all): update librairies, 2024-05-18 by *Guillaume Chervet* @@ -312,8 +318,3 @@ - [53fd1f1](https://github.com/AxaFrance/oidc-client/commit/53fd1f1c093430f7e60eb43bc4a9a4fccebefe73) - build(npm): bump jsdom from 22.1.0 to 23.0.0 (#1220), 2023-11-29 by *dependabot[bot]* -## v7.12.7 - -- [7a53f73](https://github.com/AxaFrance/oidc-client/commit/7a53f73bf03b85be9248379f21def37ee34bd415) - build(npm): bump @types/react from 18.2.17 to 18.2.39 (#1215), 2023-11-29 by *dependabot[bot]* - - From 0bfabd41d67cad57415905b7ce729ee4fe85c8b4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 7 Jun 2024 06:53:49 +0200 Subject: [PATCH 272/565] fix(oidc): session lost to quickly (alpha) (#1381) --- packages/oidc-client/src/renewTokens.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 980789650..882eb06cb 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -150,9 +150,8 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = false, extras:StringMap = null, updateTokens) =>{ - while (!navigator.onLine && document.hidden) { - await sleepAsync({milliseconds: 1000}); - oidc.publishEvent(eventNames.refreshTokensAsync, { message: 'wait because navigator is offline and hidden' }); + if (!navigator.onLine && document.hidden) { + return { tokens: oidc.tokens, status: 'GIVE_UP' }; } let numberTryOnline = 6; while (!navigator.onLine && numberTryOnline > 0) { @@ -206,16 +205,6 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f return await synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens); } }; - - if (index > 4) { - if(isDocumentHidden){ - return { tokens: oidc.tokens, status: 'GIVE_UP' }; - } else{ - updateTokens(null); - oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); - return { tokens: null, status: 'SESSION_LOST' }; - } - } try { const { status, tokens, nonce } = await syncTokensInfoAsync(oidc)(configuration, oidc.configurationName, oidc.tokens, forceRefresh); From 9f4cbf414e1b41f448b2a36d759a035786d26668 Mon Sep 17 00:00:00 2001 From: meesvandongen <35409045+meesvandongen@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:26:50 +0900 Subject: [PATCH 273/565] fix(oidc): 2 readmes with the same name (release) (#1377) * remove all readmes * re-add readme --- readme.md | 181 ------------------------------------------------------ 1 file changed, 181 deletions(-) delete mode 100644 readme.md diff --git a/readme.md b/readme.md deleted file mode 100644 index 038c38352..000000000 --- a/readme.md +++ /dev/null @@ -1,181 +0,0 @@ -# @axa-fr/oidc-client - -[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) -[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Coverage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) - - -

- Sample React Oicd -

- -- [About](#about) -- [Getting Started](#getting-started) -- [Run The Demos](#run-the-demos) -- [How It Works](#how-it-works) -- Packages - - [`@axa-fr/oidc-client`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Foidc-client.svg)](https://badge.fury.io/js/%40axa-fr%2Foidc-client) - - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) - - `@axa-fr/svelte-oidc` : we are looking for contributor - - `@axa-fr/vue-oidc` : we are looking for contributor - - `@axa-fr/angular-oidc` : we are looking for contributor -- [FAQ](#FAQ) -- [Migrations](#migrations) -- [Contribute](#contribute) - -## About - -**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. -**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. -**@axa-fr/react-oidc** is for **React** (compatible next.js, etc.), we expect soon to provide one for **Vue**, **Angular** and **Svelte**. - -Demos: -- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) -- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ - - -**@axa-fr/oidc-client** is: - -- **Secure** : - - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) - - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** : Unpacked Size on npm is **274 kB** -- **Simple** - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file -- **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website -- **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure). - - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. - -Works perfectly well with: - -- [Auth0](https://auth0.com/) -- [Duende Identity Server](https://duendesoftware.com/) -- Azure AD -- Google -- AWS -- [Keycloak](https://www.keycloak.org/) -- etc., all OIDC providers - - -## Getting Started - -### Getting Started with @axa-fr/oidc-client - -```sh -npm install @axa-fr/oidc-client --save - -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` - -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : -```sh - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" - }, -``` - -More documentation : - -- [`@axa-fr/oidc-client`](./packages/oidc-client#readme) - -### Getting Started with @axa-fr/react-oidc - -```sh -npm install @axa-fr/react-oidc --save - -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` - -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : -```sh - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" - }, -``` - -More documentation : - -- [`@axa-fr/react-oidc`](./packages/react-oidc#readme) - -## Run The Demos - -```sh -git clone https://github.com/AxaFrance/oidc-client.git - -cd oidc-client -pnpm install - -# oidc client demo -cd examples/oidc-client-demo -pnpm install -pnpm start -# then navigate to http://localhost:5174 - -# react vite demo -cd examples/react-oidc-demo -pnpm install -pnpm start -# then navigate to http://localhost:4200 - -# react NextJS demo -cd examples/nextjs-demo -pnpm install -pnpm run dev -# then navigate to http://localhost:3001 -``` - -## How It Works - -

- Schema Authorization Code Grant with pcke flow on the using service worker -
- The service worker catch access_token and refresh_token that will never be accessible to the client. -

- - -These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. -Internally for "`@axa-fr/react-oidc`", native History API is used to be router library agnostic. - -More information about OIDC : - -- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) -- [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -- [English: youtube react-oidc introduction](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) -- [French: youtube react-oidc introduction](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) - -## FAQ - -- Frequented Asked Question [`FAQ`](./FAQ.md) - -## Migrations - -- Migrating from v3 to v4 [`guide`](./MIGRATION_GUIDE_V3_TO_V4.md) -- Migrating from v3 to v5 [`guide`](./MIGRATION_GUIDE_V3_TO_V5.md) -- Migrating from v4 to v5 [`guide`](./MIGRATION_GUIDE_V4_TO_V5.md) -- Migrating from v5 to v6 [`guide`](./MIGRATION_GUIDE_V5_TO_V6.md) -- Migrating from v6 to v7 [`guide`](./MIGRATION_GUIDE_V6_TO_V7.md) - -## Contribute - -- [How to run the solution and to contribute](./CONTRIBUTING.md) -- [Please respect our code of conduct](./CODE_OF_CONDUCT.md) From 4685d6182d3dadde54d6b5eb28940a11c1b6ba0a Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 7 Jun 2024 07:29:30 +0000 Subject: [PATCH 274/565] [skip ci] Update to version 7.22.7 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 99fd66e4d..9c82d11bd 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.6", + "version": "7.22.7", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f217ff774..fbdee0f56 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.6'; +export default '7.22.7'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 845cdf319..937dbf858 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.6", + "version": "7.22.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f217ff774..fbdee0f56 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.6'; +export default '7.22.7'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 963a95428..599cf218e 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.6", + "version": "7.22.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 4fa4992af022a88ce58a2e31580e93acab8dc3fb Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 7 Jun 2024 07:29:31 +0000 Subject: [PATCH 275/565] [skip ci] Generate changelog to version 7.22.7 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4450bf79..346a8668e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.22.6 +## 7.22.7 + +- [9f4cbf4](https://github.com/AxaFrance/oidc-client/commit/9f4cbf414e1b41f448b2a36d759a035786d26668) - fix(oidc): 2 readmes with the same name (release) (#1377), 2024-06-07 by *meesvandongen* +- [0bfabd4](https://github.com/AxaFrance/oidc-client/commit/0bfabd41d67cad57415905b7ce729ee4fe85c8b4) - fix(oidc): session lost to quickly (alpha) (#1381), 2024-06-07 by *Guillaume Chervet* + + +## v7.22.6 - [bcba15b](https://github.com/AxaFrance/oidc-client/commit/bcba15b412063d139c0902de117b0516150c13a2) - fix(react-oidc): compatibility with react 19 (release) (#1372), 2024-05-22 by *Guillaume Chervet* - [c49a857](https://github.com/AxaFrance/oidc-client/commit/c49a8572702c485c9a089b0f9aa11eb4bc6e7f1d) - refactor(test): add missing logout test case, 2024-05-22 by *Guillaume Chervet* @@ -313,8 +319,3 @@ - [f8be6ab](https://github.com/AxaFrance/oidc-client/commit/f8be6ab1096143c1a2eb35408669aef6df72d2d9) - doc(redame): fix service worker command to work with oidc-client standalone (#1200), 2023-11-29 by *Felix Roos* -## v7.12.8 - -- [53fd1f1](https://github.com/AxaFrance/oidc-client/commit/53fd1f1c093430f7e60eb43bc4a9a4fccebefe73) - build(npm): bump jsdom from 22.1.0 to 23.0.0 (#1220), 2023-11-29 by *dependabot[bot]* - - From c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 18 Jun 2024 17:47:34 +0200 Subject: [PATCH 276/565] fix(oidc): remove dynamic web worker blocked by policies (release) (#1386) * fix(oidc): renew token (alpha) * test (alpha) * test (alpha) * Update renewTokens.ts --- packages/oidc-client/src/timer.ts | 165 ++---------------------------- 1 file changed, 8 insertions(+), 157 deletions(-) diff --git a/packages/oidc-client/src/timer.ts b/packages/oidc-client/src/timer.ts index cd088f52b..1e540e40a 100644 --- a/packages/oidc-client/src/timer.ts +++ b/packages/oidc-client/src/timer.ts @@ -1,163 +1,14 @@ const timer = (function () { - const workerPort = (function () { - let worker; - let blobURL; - - const workerCode = function () { - const innerIdsByOuterIds = {}; - - const methods = { - setTimeout: function (port, id, timeout) { - innerIdsByOuterIds[id] = setTimeout(function () { - port.postMessage(id); - innerIdsByOuterIds[id] = null; - }, timeout); - }, - - setInterval: function (port, id, timeout) { - innerIdsByOuterIds[id] = setInterval(function () { - port.postMessage(id); - }, timeout); - }, - - clearTimeout: function (port, id) { - clearTimeout(innerIdsByOuterIds[id]); - innerIdsByOuterIds[id] = null; - }, - - clearInterval: function (port, id) { - clearInterval(innerIdsByOuterIds[id]); - innerIdsByOuterIds[id] = null; - }, - }; - - function onMessage(port, event) { - const method = event.data[0]; - const id = event.data[1]; - const option = event.data[2]; - - if (methods[method]) { - methods[method](port, id, option); - } - } - - // For Dedicated Worker - this.onmessage = function (event) { - onMessage(self, event); - }; - - // For Shared Worker - this.onconnect = function (event) { - const port = event.ports[0]; - - port.onmessage = function (event) { - onMessage(port, event); - }; - }; - }.toString(); - - try { - const blob = new Blob(['(', workerCode, ')()'], { type: 'application/javascript' }); - blobURL = URL.createObjectURL(blob); - } catch (error) { - return null; - } - const isInsideBrowser = (typeof process === 'undefined'); - try { - if (SharedWorker) { - worker = new SharedWorker(blobURL); - return worker.port; - } - } catch (error) { - if (isInsideBrowser) { - console.warn('SharedWorker not available'); - } - } - try { - if (Worker) { - worker = new Worker(blobURL); - return worker; - } - } catch (error) { - if (isInsideBrowser) { - console.warn('Worker not available'); - } - } - - return null; - }()); - - if (!workerPort) { - // In NextJS with SSR (Server Side Rendering) during rending in Node JS, the window object is undefined, - // the global object is used instead as it is the closest approximation of a browsers window object. - const bindContext = (typeof window === 'undefined') ? global : window; - - return { - setTimeout: setTimeout.bind(bindContext), - clearTimeout: clearTimeout.bind(bindContext), - setInterval: setInterval.bind(bindContext), - clearInterval: clearInterval.bind(bindContext), - }; - } - - const getId = (function () { - let currentId = 0; - - return function () { - currentId++; - return currentId; - }; - }()); - - const timeoutCallbacksById = {}; - const intervalCallbacksById = {}; - - workerPort.onmessage = function (event) { - const id = event.data; - - const timeoutCallback = timeoutCallbacksById[id]; - if (timeoutCallback) { - timeoutCallback(); - timeoutCallbacksById[id] = null; - return; - } - - const intervalCallback = intervalCallbacksById[id]; - if (intervalCallback) { - intervalCallback(); - } - }; - - function setTimeoutWorker(callback, timeout) { - const id = getId(); - workerPort.postMessage(['setTimeout', id, timeout]); - timeoutCallbacksById[id] = callback; - return id; - } - - function clearTimeoutWorker(id) { - workerPort.postMessage(['clearTimeout', id]); - timeoutCallbacksById[id] = null; - } - - function setIntervalWorker(callback, timeout) { - const id = getId(); - workerPort.postMessage(['setInterval', id, timeout]); - intervalCallbacksById[id] = callback; - return id; - } - - function clearIntervalWorker(id) { - workerPort.postMessage(['clearInterval', id]); - intervalCallbacksById[id] = null; - } - + // In NextJS with SSR (Server Side Rendering) during rending in Node JS, the window object is undefined, + // the global object is used instead as it is the closest approximation of a browsers window object. + const bindContext = (typeof window === 'undefined') ? global : window; return { - setTimeout: setTimeoutWorker, - clearTimeout: clearTimeoutWorker, - setInterval: setIntervalWorker, - clearInterval: clearIntervalWorker, + setTimeout: setTimeout.bind(bindContext), + clearTimeout: clearTimeout.bind(bindContext), + setInterval: setInterval.bind(bindContext), + clearInterval: clearInterval.bind(bindContext), }; + }()); export default timer; From 6b9913f40a189a75549dc4c02e11e2f6ee9a9148 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 18 Jun 2024 15:50:05 +0000 Subject: [PATCH 277/565] [skip ci] Update to version 7.22.8 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 9c82d11bd..db2e6404f 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.7", + "version": "7.22.8", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index fbdee0f56..3d587e19d 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.7'; +export default '7.22.8'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 937dbf858..040d00695 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.7", + "version": "7.22.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index fbdee0f56..3d587e19d 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.7'; +export default '7.22.8'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 599cf218e..0ea37ecc5 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.7", + "version": "7.22.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 0bdbf832df2cdef33a71eae4b704f60b8f36b3d0 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 18 Jun 2024 15:50:06 +0000 Subject: [PATCH 278/565] [skip ci] Generate changelog to version 7.22.8 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 346a8668e..3736d5082 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.7 +## 7.22.8 + +- [c4cf94b](https://github.com/AxaFrance/oidc-client/commit/c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0) - fix(oidc): remove dynamic web worker blocked by policies (release) (#1386), 2024-06-18 by *Guillaume Chervet* + + +## v7.22.7 - [9f4cbf4](https://github.com/AxaFrance/oidc-client/commit/9f4cbf414e1b41f448b2a36d759a035786d26668) - fix(oidc): 2 readmes with the same name (release) (#1377), 2024-06-07 by *meesvandongen* - [0bfabd4](https://github.com/AxaFrance/oidc-client/commit/0bfabd41d67cad57415905b7ce729ee4fe85c8b4) - fix(oidc): session lost to quickly (alpha) (#1381), 2024-06-07 by *Guillaume Chervet* @@ -313,9 +318,3 @@ - [a9cd4d2](https://github.com/AxaFrance/oidc-client/commit/a9cd4d25ef8d66bd12e5c0e921b9fd1bc4a137ba) - build(npm): bump @testing-library/react from 13.3.0 to 14.1.2 (#1222), 2023-11-29 by *dependabot[bot]* -## v7.12.9 - -- [2975d4e](https://github.com/AxaFrance/oidc-client/commit/2975d4e826c94eb7202ab7bba39687d1a7b6820b) - build(npm): bump eslint-plugin-import from 2.28.0 to 2.29.0 (#1221), 2023-11-29 by *dependabot[bot]* -- [f8be6ab](https://github.com/AxaFrance/oidc-client/commit/f8be6ab1096143c1a2eb35408669aef6df72d2d9) - doc(redame): fix service worker command to work with oidc-client standalone (#1200), 2023-11-29 by *Felix Roos* - - From 77eb9e1841814cfeb6c6672159740dad4c0a9d4d Mon Sep 17 00:00:00 2001 From: radk0s Date: Tue, 2 Jul 2024 08:16:08 +0200 Subject: [PATCH 279/565] fix(oidc): MessageChannel is not closed after message is received (release) (#1396) Co-authored-by: rchamot --- packages/oidc-client/src/initWorker.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index a48ce4011..aa47abf98 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -56,6 +56,9 @@ const sendMessageAsync = (registration) => (data) : Promise => { } else { resolve(event.data); } + + messageChannel.port1.close(); + messageChannel.port2.close(); }; registration.active.postMessage(data, [messageChannel.port2]); }); From 14e66ee7ea6a87df8f4a19832892dd032abda6d6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 2 Jul 2024 06:18:50 +0000 Subject: [PATCH 280/565] [skip ci] Update to version 7.22.9 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index db2e6404f..a7ecadb2e 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.8", + "version": "7.22.9", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 3d587e19d..e9360ead8 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.8'; +export default '7.22.9'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 040d00695..b21bce7e9 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.8", + "version": "7.22.9", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 3d587e19d..e9360ead8 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.8'; +export default '7.22.9'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0ea37ecc5..e48c8ee48 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.8", + "version": "7.22.9", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 388bd33a54c546afeee496b0f7d58f2c4f51da5e Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 2 Jul 2024 06:18:52 +0000 Subject: [PATCH 281/565] [skip ci] Generate changelog to version 7.22.9 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3736d5082..35904158f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.8 +## 7.22.9 + +- [77eb9e1](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by *radk0s* + + +## v7.22.8 - [c4cf94b](https://github.com/AxaFrance/oidc-client/commit/c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0) - fix(oidc): remove dynamic web worker blocked by policies (release) (#1386), 2024-06-18 by *Guillaume Chervet* @@ -313,8 +318,3 @@ - [6027511](https://github.com/AxaFrance/oidc-client/commit/6027511a0c8d2112d370d45cf42f144874112f77) - doc(readme) Update README.md, 2023-11-29 by *Guillaume Chervet* -## v7.12.10 - -- [a9cd4d2](https://github.com/AxaFrance/oidc-client/commit/a9cd4d25ef8d66bd12e5c0e921b9fd1bc4a137ba) - build(npm): bump @testing-library/react from 13.3.0 to 14.1.2 (#1222), 2023-11-29 by *dependabot[bot]* - - From 6c80c5cc77750aead50e62136a6594b05f21b42b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 4 Jul 2024 16:15:47 +0200 Subject: [PATCH 282/565] fix(oidc): logout trigger login (release) (#1394) * fix(oidc): logout trigger login * fix (alpha) * add use case to demo --- examples/react-oidc-demo/src/Profile.tsx | 14 ++++++++++++-- packages/oidc-client/src/oidc.ts | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/examples/react-oidc-demo/src/Profile.tsx b/examples/react-oidc-demo/src/Profile.tsx index 1a767f3a5..25d5584fd 100644 --- a/examples/react-oidc-demo/src/Profile.tsx +++ b/examples/react-oidc-demo/src/Profile.tsx @@ -1,4 +1,12 @@ -import { OidcSecure, type OidcUserInfo, OidcUserStatus, useOidcAccessToken, useOidcIdToken, useOidcUser } from '@axa-fr/react-oidc'; +import { + OidcSecure, + type OidcUserInfo, + OidcUserStatus, + useOidc, + useOidcAccessToken, + useOidcIdToken, + useOidcUser +} from '@axa-fr/react-oidc'; import React from 'react'; interface OidcUserRoleInfo extends OidcUserInfo{ @@ -31,8 +39,10 @@ const DisplayUserInfo = () => { }; export const Profile = () => { + const { logout, isAuthenticated } = useOidc(); return ( -
+
+ {isAuthenticated &&

} diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index b5b8e9079..cf3e19049 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -252,6 +252,10 @@ Please checkout that you are using OIDC hook inside a = null; async loginAsync(callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined, silentLoginOnly = false) { + if (this.logoutPromise) { + await this.logoutPromise; + } + if (this.loginPromise !== null) { return this.loginPromise; } From 95c814dd9dd325a3a00c3a0dc049d301d983514e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 5 Jul 2024 09:54:16 +0200 Subject: [PATCH 283/565] fix(ci): setup pnpm (release) (#1399) --- .../azure-static-web-apps-black-rock-0dc6b0d03.yml | 4 ++-- .../azure-static-web-apps-icy-glacier-004ab4303.yml | 4 ++-- .github/workflows/ci.yml | 4 ++-- .github/workflows/lint.yml | 4 ++-- .github/workflows/npm-publish.yml | 6 +++--- package.json | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index 84e09145e..ef1ceae2f 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -10,7 +10,7 @@ on: - main env: - PNPM_VERSION: 8.5.1 + PNPM_VERSION: 8.6.11 NODE_VERSION: 18 jobs: skip_ci: @@ -31,7 +31,7 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index b4f7a1d4e..36d7b0f3b 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -10,7 +10,7 @@ on: - main env: - PNPM_VERSION: 8.5.1 + PNPM_VERSION: 8.6.11 NODE_VERSION: 18 jobs: skip_ci: @@ -31,7 +31,7 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e939c8e61..aadcf5860 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: # branches: [ main ] env: - PNPM_VERSION: 8.5.1 + PNPM_VERSION: 8.6.11 NODE_VERSION: 18 jobs: @@ -24,7 +24,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5797ce19a..e44f85d5f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,7 @@ on: # - main env: - PNPM_VERSION: 8.5.1 + PNPM_VERSION: 8.6.11 NODE_VERSION: 18 jobs: @@ -28,7 +28,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index f90b150ff..42c64308b 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -10,7 +10,7 @@ on: branches: [ main ] env: - PNPM_VERSION: 8.5.1 + PNPM_VERSION: 8.6.11 NODE_VERSION: 18 jobs: skip_ci: @@ -29,7 +29,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} @@ -124,7 +124,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 name: Install pnpm with: version: ${{ env.PNPM_VERSION }} diff --git a/package.json b/package.json index e067fd542..12901f112 100644 --- a/package.json +++ b/package.json @@ -51,5 +51,5 @@ "engines": { "node": "16.* || >= 18.0.0" }, - "packageManager": "pnpm@8.6.7" + "packageManager": "pnpm@8.6.11" } \ No newline at end of file From bc5fd58773a806400504f84c56d3d6d890c1f7ea Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 5 Jul 2024 07:56:39 +0000 Subject: [PATCH 284/565] [skip ci] Update to version 7.22.13 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index a7ecadb2e..9b4f1c20c 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.9", + "version": "7.22.13", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index e9360ead8..5c5154488 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.9'; +export default '7.22.13'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b21bce7e9..b212dee77 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.9", + "version": "7.22.13", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index e9360ead8..5c5154488 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.9'; +export default '7.22.13'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e48c8ee48..246937cbe 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.9", + "version": "7.22.13", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e07f8492c06b6607128a5e2c8e20e55dc0ef82a6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 5 Jul 2024 07:56:41 +0000 Subject: [PATCH 285/565] [skip ci] Generate changelog to version 7.22.13 --- CHANGELOG.md | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35904158f..fa2bced4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,24 @@ # Changelog -## 7.22.9 +## 7.22.13 + +- [95c814d](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by *Guillaume Chervet* + + +## v7.22.12 + + + +## v7.22.11 + + + +## v7.22.10 + +- [6c80c5c](https://github.com/AxaFrance/oidc-client/commit/6c80c5cc77750aead50e62136a6594b05f21b42b) - fix(oidc): logout trigger login (release) (#1394), 2024-07-04 by *Guillaume Chervet* + + +## v7.22.9 - [77eb9e1](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by *radk0s* @@ -297,24 +315,3 @@ - [430a06b](https://github.com/AxaFrance/oidc-client/commit/430a06b27b2f7164bc1557a2e55e547b5af3d8d7) - build(npm): bump vite from 4.4.7 to 4.4.12 (#1231), 2023-12-07 by *dependabot[bot]* -## v7.13.1 - -- [96637a7](https://github.com/AxaFrance/oidc-client/commit/96637a73252e9ea34d8687409131f58f09633da6) - fix(oidc): sessions storage renew tokens (release) (#1230), 2023-12-05 by *Guillaume Chervet* - - -## v7.13.0 - -- [49c3d5e](https://github.com/AxaFrance/oidc-client/commit/49c3d5e5487d714ccd97272e37fc34f2a7bd0ff6) - feat(oidc-client): allow to take control on service-worker registration (release) (#1229), 2023-12-04 by *Guillaume Chervet* - - -## v7.12.12 - -- [b070c88](https://github.com/AxaFrance/oidc-client/commit/b070c8848582ac6f52ab7cb00f16b0fe9f702b5f) - fix(oidc-client): Update README.md (release), 2023-11-30 by *Guillaume Chervet* - - -## v7.12.11 - -- [d1480fb](https://github.com/AxaFrance/oidc-client/commit/d1480fbe2c0e275f17775768f83b70d9adf00ee1) - fix(all): dependencies update break the build (release), 2023-11-30 by *Guillaume Chervet* -- [6027511](https://github.com/AxaFrance/oidc-client/commit/6027511a0c8d2112d370d45cf42f144874112f77) - doc(readme) Update README.md, 2023-11-29 by *Guillaume Chervet* - - From 25c55eeb7682356c13987a91d7b8645cca1b0ad5 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Thu, 11 Jul 2024 01:53:12 +1000 Subject: [PATCH 286/565] refactor(oidc): null coalescing (#1404) (release) --- .../src/OidcServiceWorker.ts | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index cb3b7ba93..768b5bf9f 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -97,8 +97,7 @@ const keepAliveAsync = async (event: FetchEvent) => { async function generateDpopAsync(originalRequest: Request, currentDatabase:OidcConfig|null, url: string, extrasClaims={} ) { const headersExtras = serializeHeaders(originalRequest.headers); - if (currentDatabase && - currentDatabase.demonstratingProofOfPossessionConfiguration && + if (currentDatabase?.demonstratingProofOfPossessionConfiguration && currentDatabase.demonstratingProofOfPossessionJwkJson && (!currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent || currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent && headersExtras['dpop']) ) { @@ -125,11 +124,7 @@ const handleFetch = async (event: FetchEvent) => { url, trustedDomains, ); - if ( - currentDatabaseForRequestAccessToken && - currentDatabaseForRequestAccessToken.tokens && - currentDatabaseForRequestAccessToken.tokens.access_token - ) { + if (currentDatabaseForRequestAccessToken?.tokens?.access_token) { while ( currentDatabaseForRequestAccessToken.tokens && !isTokensValid(currentDatabaseForRequestAccessToken.tokens) @@ -205,7 +200,7 @@ const handleFetch = async (event: FetchEvent) => { let newBody = actualBody; for (let i = 0; i < numberDatabase; i++) { const currentDb = currentDatabases[i]; - if (currentDb && currentDb.tokens != null) { + if (currentDb?.tokens != null) { const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(currentDb.tokens.access_token),}; headers = await generateDpopAsync(originalRequest, currentDb, url, claimsExtras); const keyRefreshToken = @@ -246,10 +241,7 @@ const handleFetch = async (event: FetchEvent) => { integrity: clonedRequest.integrity, }); - if ( - currentDatabase && - currentDatabase.oidcServerConfiguration != null && - currentDatabase.oidcServerConfiguration.revocationEndpoint && + if (currentDatabase?.oidcServerConfiguration?.revocationEndpoint && url.startsWith( normalizeUrl( currentDatabase.oidcServerConfiguration.revocationEndpoint, @@ -272,7 +264,7 @@ const handleFetch = async (event: FetchEvent) => { // @ts-ignore currentDatabase = database[currentLoginCallbackConfigurationName]; let newBody = actualBody; - if (currentDatabase && currentDatabase.codeVerifier != null) { + if (currentDatabase?.codeVerifier != null) { newBody = replaceCodeVerifier( newBody, currentDatabase.codeVerifier, @@ -435,9 +427,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { if (tokens.refresh_token) { tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName; } - if ( - tokens.idTokenPayload && - tokens.idTokenPayload.nonce && + if (tokens?.idTokenPayload?.nonce && currentDatabase.nonce != null ) { tokens.idTokenPayload.nonce = From ea8d7cd46f047b793afd798069a5935c249bac4b Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Jul 2024 15:55:47 +0000 Subject: [PATCH 287/565] [skip ci] Update to version 7.22.14 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 9b4f1c20c..6f17eb793 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.13", + "version": "7.22.14", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 5c5154488..03d2f7ab3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.13'; +export default '7.22.14'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b212dee77..dfabd6d3b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.13", + "version": "7.22.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 5c5154488..03d2f7ab3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.13'; +export default '7.22.14'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 246937cbe..0eb33fbaf 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.13", + "version": "7.22.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 4426d5daeb136417178bb2baaed18a71f9c8370c Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Jul 2024 15:55:49 +0000 Subject: [PATCH 288/565] [skip ci] Generate changelog to version 7.22.14 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa2bced4d..ac450d052 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.13 +## 7.22.14 + +- [25c55ee](https://github.com/AxaFrance/oidc-client/commit/25c55eeb7682356c13987a91d7b8645cca1b0ad5) - refactor(oidc): null coalescing (#1404) (release), 2024-07-11 by *Jason Finch* + + +## v7.22.13 - [95c814d](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by *Guillaume Chervet* @@ -310,8 +315,3 @@ - [43eac59](https://github.com/AxaFrance/oidc-client/commit/43eac59f1598ab6a5b07dc52deed95297c73f875) - build(npm): bump vite-plugin-dts from 3.4.0 to 3.6.4 (#1227), 2023-12-07 by *dependabot[bot]* -## v7.13.2 - -- [430a06b](https://github.com/AxaFrance/oidc-client/commit/430a06b27b2f7164bc1557a2e55e547b5af3d8d7) - build(npm): bump vite from 4.4.7 to 4.4.12 (#1231), 2023-12-07 by *dependabot[bot]* - - From e51aef268e783259c035e3ba58bf9aa16a111bea Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Thu, 11 Jul 2024 02:05:06 +1000 Subject: [PATCH 289/565] fix (Style): fix 'container' classname in demo. (#1401) --- examples/react-oidc-demo/src/Profile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/react-oidc-demo/src/Profile.tsx b/examples/react-oidc-demo/src/Profile.tsx index 25d5584fd..73a1028eb 100644 --- a/examples/react-oidc-demo/src/Profile.tsx +++ b/examples/react-oidc-demo/src/Profile.tsx @@ -41,7 +41,7 @@ const DisplayUserInfo = () => { export const Profile = () => { const { logout, isAuthenticated } = useOidc(); return ( -
+
{isAuthenticated &&

} From 73eae7e9d68dea6ebec0ed82ba7873941c0e371e Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Thu, 11 Jul 2024 05:26:19 +1000 Subject: [PATCH 290/565] refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release) --- .../src/OidcServiceWorker.ts | 22 +-- .../src/__tests__/oidcConfig.spec.ts | 152 ++++++++++++++++++ .../src/oidcConfig.ts | 17 ++ 3 files changed, 170 insertions(+), 21 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts create mode 100644 packages/oidc-client-service-worker/src/oidcConfig.ts diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 768b5bf9f..1d4466c11 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -20,6 +20,7 @@ import version from './version'; import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; import {getDpopConfiguration, getDpopOnlyWhenDpopHeaderPresent} from "./dpop"; import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; +import { getCurrentDatabasesTokenEndpoint } from './oidcConfig'; // @ts-ignore if (typeof trustedTypes !== 'undefined' && typeof trustedTypes.createPolicy == 'function') { @@ -56,27 +57,6 @@ const handleActivate = (event: ExtendableEvent) => { const database: Database = {}; -const getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => { - const databases: OidcConfig[] = []; - for (const [, value] of Object.entries(database)) { - if ( - value.oidcServerConfiguration != null && - url.startsWith(normalizeUrl(value.oidcServerConfiguration.tokenEndpoint)) - ) { - databases.push(value); - } else if ( - value.oidcServerConfiguration != null && - value.oidcServerConfiguration.revocationEndpoint && - url.startsWith( - normalizeUrl(value.oidcServerConfiguration.revocationEndpoint), - ) - ) { - databases.push(value); - } - } - return databases; -}; - const keepAliveAsync = async (event: FetchEvent) => { const originalRequest = event.request; const isFromVanilla = originalRequest.headers.has('oidc-vanilla'); diff --git a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts new file mode 100644 index 000000000..186fff848 --- /dev/null +++ b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts @@ -0,0 +1,152 @@ +import { describe, expect, it } from 'vitest' +import { getCurrentDatabasesTokenEndpoint } from '../oidcConfig' +import { Database } from '../types' + +const oidcConfigDefaults = { + demonstratingProofOfPossessionConfiguration: null, + configurationName: '', + tokens: null, + status: null, + state: null, + codeVerifier: null, + nonce: null, + hideAccessToken: false, + convertAllRequestsToCorsExceptNavigate: true, + setAccessTokenToNavigateRequests: true, + demonstratingProofOfPossessionNonce: null, + demonstratingProofOfPossessionJwkJson: null, + demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, +} + +const oidcServerConfigDefault = { + revocationEndpoint: '', + tokenEndpoint: '', + issuer: '', + userInfoEndpoint: '', + authorizationEndpoint: '' +} + +describe('getCurrentDatabasesTokenEndpoint', () => { + it('should return configs with matching token endpoint', () => { + const database: Database = { + config1: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.com/token', + }, + }, + config2: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.org/token', + }, + }, + config3: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + revocationEndpoint: 'https://example.net/revoke', + }, + }, + } + + const url = 'https://example.com/token' + const result = getCurrentDatabasesTokenEndpoint(database, url) + + expect(result).toHaveLength(1) + expect(result[0]).toBe(database.config1) + }) + + it('should return configs with matching revocation endpoint', () => { + const database = { + config1: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + revocationEndpoint: 'https://example.com/revoke', + }, + }, + config2: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + revocationEndpoint: 'https://example.org/revoke', + }, + }, + config3: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.net/token', + }, + }, + } + + const url = 'https://example.com/revoke' + const result = getCurrentDatabasesTokenEndpoint(database, url) + + expect(result).toHaveLength(1) + expect(result[0]).toBe(database.config1) + }) + + it('should return multiple matching configs', () => { + const database = { + config1: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.com/token', + revocationEndpoint: 'https://example.com/revoke', + }, + }, + config2: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.org/token', + }, + }, + config3: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.com/token', + revocationEndpoint: 'https://example.com/revoke', + }, + }, + } + + const url = 'https://example.com/token' + const result = getCurrentDatabasesTokenEndpoint(database, url) + + expect(result).toHaveLength(2) + expect(result).toContain(database.config1) + expect(result).toContain(database.config3) + }) + + it('should return empty array for no matching configs', () => { + const database = { + config1: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.com/token', + }, + }, + config2: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + revocationEndpoint: 'https://example.org/revoke', + }, + }, + } + + const url = 'https://example.net/other' + const result = getCurrentDatabasesTokenEndpoint(database, url) + + expect(result).toHaveLength(0) + }) +}) diff --git a/packages/oidc-client-service-worker/src/oidcConfig.ts b/packages/oidc-client-service-worker/src/oidcConfig.ts new file mode 100644 index 000000000..5b6fcf93d --- /dev/null +++ b/packages/oidc-client-service-worker/src/oidcConfig.ts @@ -0,0 +1,17 @@ +import { Database, OidcConfig } from './types'; +import { normalizeUrl } from './utils'; + +const getMatchingOidcConfigurations = (database: Database, url: string): OidcConfig[] => { + return Object.values(database).filter((config) => { + const { oidcServerConfiguration } = config || {}; + const { tokenEndpoint, revocationEndpoint } = oidcServerConfiguration || {}; + + const normalizedUrl = normalizeUrl(url); + return ( + (tokenEndpoint && normalizedUrl.startsWith(normalizeUrl(tokenEndpoint))) || + (revocationEndpoint && normalizedUrl.startsWith(normalizeUrl(revocationEndpoint))) + ); + }); +}; + +export { getMatchingOidcConfigurations as getCurrentDatabasesTokenEndpoint }; From 5ef279f83d0d7c491699f3ae098251e92f8101a0 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Jul 2024 19:28:48 +0000 Subject: [PATCH 291/565] [skip ci] Update to version 7.22.15 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 6f17eb793..f4a1c3605 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.14", + "version": "7.22.15", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 03d2f7ab3..81b9c4b57 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.14'; +export default '7.22.15'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index dfabd6d3b..8d0ea5a9e 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.14", + "version": "7.22.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 03d2f7ab3..81b9c4b57 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.14'; +export default '7.22.15'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 0eb33fbaf..dcbdc8be4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.14", + "version": "7.22.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 4306e3b3e0a6c4a0eeff42d9dba1e7089de2d6cd Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Jul 2024 19:28:49 +0000 Subject: [PATCH 292/565] [skip ci] Generate changelog to version 7.22.15 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac450d052..cd3ce2ca2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.22.14 +## 7.22.15 + +- [73eae7e](https://github.com/AxaFrance/oidc-client/commit/73eae7e9d68dea6ebec0ed82ba7873941c0e371e) - refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release), 2024-07-11 by *Jason Finch* +- [e51aef2](https://github.com/AxaFrance/oidc-client/commit/e51aef268e783259c035e3ba58bf9aa16a111bea) - fix (Style): fix 'container' classname in demo. (#1401), 2024-07-11 by *Jason Finch* + + +## v7.22.14 - [25c55ee](https://github.com/AxaFrance/oidc-client/commit/25c55eeb7682356c13987a91d7b8645cca1b0ad5) - refactor(oidc): null coalescing (#1404) (release), 2024-07-11 by *Jason Finch* @@ -310,8 +316,3 @@ - [33a9c83](https://github.com/AxaFrance/oidc-client/commit/33a9c8349f23d98960fb4c60f49d7fd19572cca5) - build(npm): bump react-router-dom from 6.14.2 to 6.20.1 (#1234), 2023-12-07 by *dependabot[bot]* -## v7.13.3 - -- [43eac59](https://github.com/AxaFrance/oidc-client/commit/43eac59f1598ab6a5b07dc52deed95297c73f875) - build(npm): bump vite-plugin-dts from 3.4.0 to 3.6.4 (#1227), 2023-12-07 by *dependabot[bot]* - - From c56ceb815b28dd5990fe4a1679a61bcebc7e525a Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Fri, 12 Jul 2024 02:20:53 +1000 Subject: [PATCH 293/565] docs(readme): Update README.md (#1407) * docs: Update README.md Markup warning blocks * docs: Readme Add bundle size minified+gzip --- README.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4b40a3ce1..2b5748b5b 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,13 @@ Demos: - Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) - Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ - **@axa-fr/oidc-client** is: - **Secure** : - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** : Unpacked Size on npm is **274 kB** +- **Lightweight** : Unpacked Size on npm is **274 kB**, Minified `61.1kB`, Minified+GZIPPED `16.8kB` [Pkg stats via Bundlephobia.com](https://bundlephobia.com/package/@axa-fr/react-oidc) - **Simple** - refresh_token and access_token are auto refreshed in background - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file @@ -56,6 +55,7 @@ Works perfectly well with: - [Auth0](https://auth0.com/) - [Duende Identity Server](https://duendesoftware.com/) +- [Identity Server 4](https://github.com/IdentityServer/IdentityServer4) - Azure AD - Google - AWS @@ -78,8 +78,11 @@ node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : -```sh + +> [!WARNING] +> If you use `Service Worker` mode, the `OidcServiceWorker.js` file should always be up to date with the version of the library. You may setup a postinstall script in your `package.json` file to update it at each npm install. For example : + +```json "scripts": { ... "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" @@ -103,15 +106,17 @@ node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public # ./public/OidcTrustedDomains.js <-- won't be updated if already exist ``` -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up-to-date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : -```sh +> [!WARNING] +> If you use Service Worker mode, the OidcServiceWorker.js file should always be up-to-date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : + +```json "scripts": { ... "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" }, ``` -More documentation : +More documentation: - [`@axa-fr/react-oidc`](./packages/react-oidc#readme) From 72a6373402a53aaaf01ad7fac22f8ad8c6feaff0 Mon Sep 17 00:00:00 2001 From: Miya <44374710+krzempekk@users.noreply.github.com> Date: Thu, 11 Jul 2024 18:23:05 +0200 Subject: [PATCH 294/565] fix(oidc): improve error handling (release) (#1403) Co-authored-by: mkrzempek --- packages/oidc-client/src/oidc.ts | 7 +++++-- packages/oidc-client/src/renewTokens.ts | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index cf3e19049..1c5129b5d 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -228,9 +228,12 @@ Please checkout that you are using OIDC hook inside a { + return this.initPromise.finally(() => { + // in case if anything went wrong with the promise, we should reset the initPromise to null too + // otherwise client can't re-init the OIDC client + // as the promise is already fulfilled with rejected state, so could not ever reach this point again, + // so that leads to infinite loop of calls, when client tries to re-init the OIDC client after error this.initPromise = null; - return result; }); } diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 882eb06cb..1fa25211d 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -321,7 +321,19 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f } } catch (exception: any) { console.error(exception); - oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exception', exception: exception.message }); - return synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens); + oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { + message: 'exception', + exception: exception.message, + }); + // we need to break the loop or errors, as direct call of synchroniseTokensAsync + // inside of synchroniseTokensAsync will cause an infinite loop and kill the browser stack + // so we need to brake calls chain and delay next call + return new Promise((resolve, reject) => { + setTimeout(() => { + synchroniseTokensAsync(oidc)(nextIndex, forceRefresh, extras, updateTokens) + .then(resolve) + .catch(reject); + }, 1000); + }); } } \ No newline at end of file From 6f8df2a156fd90ae031328a97ddcf3137c761490 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 11 Jul 2024 16:25:42 +0000 Subject: [PATCH 295/565] [skip ci] Update to version 7.22.16 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index f4a1c3605..3d24cd07b 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.15", + "version": "7.22.16", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 81b9c4b57..1097aee35 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.15'; +export default '7.22.16'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 8d0ea5a9e..49e1df44f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.15", + "version": "7.22.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 81b9c4b57..1097aee35 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.15'; +export default '7.22.16'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index dcbdc8be4..f8ba2d4c2 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.15", + "version": "7.22.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 32c370bfb1536449215e21046e0c9bd8f3135d52 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 11 Jul 2024 16:25:44 +0000 Subject: [PATCH 296/565] [skip ci] Generate changelog to version 7.22.16 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd3ce2ca2..a33afeef0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 7.22.15 +## 7.22.16 + +- [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* +- [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* + + +## v7.22.15 - [73eae7e](https://github.com/AxaFrance/oidc-client/commit/73eae7e9d68dea6ebec0ed82ba7873941c0e371e) - refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release), 2024-07-11 by *Jason Finch* - [e51aef2](https://github.com/AxaFrance/oidc-client/commit/e51aef268e783259c035e3ba58bf9aa16a111bea) - fix (Style): fix 'container' classname in demo. (#1401), 2024-07-11 by *Jason Finch* @@ -311,8 +317,3 @@ - [8f5f888](https://github.com/AxaFrance/oidc-client/commit/8f5f888fe34d739ded51f611e194d77a2e788830) - build(npm): bump eslint-plugin-regexp from 1.15.0 to 2.1.2 (#1233), 2023-12-07 by *dependabot[bot]* -## v7.13.4 - -- [33a9c83](https://github.com/AxaFrance/oidc-client/commit/33a9c8349f23d98960fb4c60f49d7fd19572cca5) - build(npm): bump react-router-dom from 6.14.2 to 6.20.1 (#1234), 2023-12-07 by *dependabot[bot]* - - From a989ed29f46b66483bc2c7c51e73bcc19b2c9736 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Sat, 13 Jul 2024 06:49:23 +1000 Subject: [PATCH 297/565] build(lint): Update lint step to run. (#1409) - Update eslint job to latest agent versions - Update eslint packages and migrate config to eslint.config format NOTE: - testing-library commented out (not compatbile) - comment out wearerequired/lint-action@v2 action and replace with pnpm run lint, (not compatbile eslint9) --- .eslintignore | 16 - .eslintrc.cjs | 164 ----- .github/workflows/lint.yml | 19 +- eslint.config.mjs | 193 ++++++ package.json | 33 +- pnpm-lock.yaml | 1288 ++++++++++++++++++------------------ 6 files changed, 857 insertions(+), 856 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f2c09a0d3..000000000 --- a/.eslintignore +++ /dev/null @@ -1,16 +0,0 @@ -**/*.d.ts -packages/**/dist/**/* -packages/**/public/**/* -packages/**/coverage/**/* -packages/**/fixtures/**/* -node_modules -# TODO Disable examples, we want to include it. -public/**/* -examples/**/static/**/* -examples/**/dist/**/* -examples/**/OidcTrustedDomains.js -examples/**/OidcServiceWorker.js -scripts/**/* -.github -.changeset -vite.config.js \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 3e459dd52..000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,164 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - root: true, - extends: [ - // 'standard', - 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'eslint:recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - //'plugin:@typescript-eslint/recommended-type-checked', //ideally we want this on - // 'plugin:@typescript-eslint/stylistic-type-checked', - 'plugin:import/typescript', - 'plugin:jsx-a11y/recommended', - 'prettier', // must be last - ], - plugins: ['@typescript-eslint', 'simple-import-sort', 'testing-library', 'react', 'prettier'], - parserOptions: { - project: ['./tsconfig.eslint.json', './packages/*/tsconfig.eslint.json'], - ecmaVersion: 2022, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - warnOnUnsupportedTypeScriptVersion: true, - }, - rules: { - // '@typescript-eslint/naming-convention': [ - // 'error', - // { - // selector: 'variable', - // types: ['boolean'], - // format: ['PascalCase'], - // prefix: ['is', 'with', 'should', 'has', 'can', 'did', 'will'], - // }, - // ], - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info|index|data', - ignoreRestSiblings: true, - }, - ], - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }, - ], - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { - delimiter: 'semi', - requireLast: true, - }, - singleline: { - delimiter: 'semi', - requireLast: false, - }, - }, - ], - camelcase: 'off', - 'comma-dangle': [ - 'error', - { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }, - ], - 'array-callback-return': 'warn', - 'jsx-quotes': ['error', 'prefer-double'], - // 'max-len': ['error', { code: 120 }], - indent: 'off', - // quotes: ['error', 'single'], - semi: ['error', 'always'], - 'space-before-function-paren': 'off', - - 'import/no-named-as-default': 'off', - 'import/no-named-as-default-member': 'off', - 'import/default': 'off', - 'import/named': 'off', - 'import/namespace': 'off', - 'import/no-unresolved': 'off', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'react/prop-types': 'off', - 'react/jsx-wrap-multilines': 'error', - 'react/react-in-jsx-scope': 'off', - 'react/display-name': 'off', - // https://github.com/facebook/react/tree/master/packages/-react-hooks - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'off', - }, - - overrides: [ - { - files: ['*.js', '*.jsx'], - rules: { - '@typescript-eslint/no-var-requires': 'off', - 'react/no-unknown-property':[ - 2, { - "ignore": [ - "jsx", - "global" - ] - } - ] - }, - }, - { - // 3) Now we enable -testing-library rules or preset only for matching files! - files: ['**/?(*.)+(spec|test).[jt]s?(x)'], - extends: ['plugin:testing-library/react'], - rules: { - 'testing-library/await-async-query': 'error', - 'testing-library/no-await-sync-query': 'error', - 'testing-library/no-debugging-utils': 'warn', - 'testing-library/no-dom-import': 'off', - 'testing-library/no-unnecessary-act': 'off', - }, - }, - ], - settings: { - react: { - version: 'detect', - }, - // 'import/parsers': { - // '@typescript-eslint/parser': ['.ts', '.tsx'], - // }, - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, - }, - }, -}; diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e44f85d5f..869d47247 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,10 +21,10 @@ jobs: steps: - name: Check out Git repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} @@ -38,8 +38,13 @@ jobs: - name: Install dependencies run: pnpm i - - name: Run linters - uses: wearerequired/lint-action@v2 - with: - eslint: true - prettier: false #runs part of eslint \ No newline at end of file + - name: Run lint + run: pnpm run lint + + # Currently incompatible with ESlint 9 (https://github.com/wearerequired/lint-action/pull/799) + # - name: Run linters + # uses: wearerequired/lint-action@v2 + # with: + # eslint: true + # prettier: false #runs part of eslint + # autofix: false #does not work well with pull requests https://github.com/wearerequired/lint-action?tab=readme-ov-file#limitations \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..ccf603f77 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,193 @@ +import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; +import testingLibrary from "eslint-plugin-testing-library"; +import react from "eslint-plugin-react"; +import prettier from "eslint-plugin-prettier"; +import tsParser from "@typescript-eslint/parser"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [{ + ignores: [ + "**/*.d.ts", + "packages/**/dist/**/*", + "packages/**/public/**/*", + "packages/**/coverage/**/*", + "packages/**/fixtures/**/*", + "**/node_modules", + "public/**/*", + "examples/**/static/**/*", + "examples/**/dist/**/*", + "examples/**/OidcTrustedDomains.js", + "examples/**/OidcServiceWorker.js", + "examples/**/nextjs-demo/**", + "scripts/**/*", + "**/.github", + "**/.changeset", + "**/vite.config.js", + "**/webpack-runtime.js", + "**/.prettierrc.cjs", + ], +}, ...fixupConfigRules(compat.extends( + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:import/typescript", + "plugin:jsx-a11y/recommended", + "prettier", +)), { + plugins: { + "@typescript-eslint": fixupPluginRules(typescriptEslint), + "simple-import-sort": simpleImportSort, + //"testing-library": testingLibrary, //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 + react: fixupPluginRules(react), + prettier, + }, + + languageOptions: { + parser: tsParser, + ecmaVersion: 2022, + sourceType: "module", + + parserOptions: { + project: ["./tsconfig.eslint.json", "./packages/*/tsconfig.eslint.json"], + + ecmaFeatures: { + jsx: true, + }, + + warnOnUnsupportedTypeScriptVersion: true, + }, + }, + + settings: { + react: { + version: "18", + }, + + "import/resolver": { + typescript: { + alwaysTryTypes: true, + }, + }, + }, + + rules: { + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "no-unused-vars": "off", + + "@typescript-eslint/no-unused-vars": ["error", { + argsIgnorePattern: "^_|req|res|next|err|ctx|args|context|info|index|data", + ignoreRestSiblings: true, + }], + + "no-array-constructor": "off", + "@typescript-eslint/no-array-constructor": "warn", + "no-redeclare": "off", + "@typescript-eslint/no-redeclare": "warn", + "no-use-before-define": "off", + + "@typescript-eslint/no-use-before-define": ["warn", { + functions: false, + classes: false, + variables: false, + typedefs: false, + }], + + "no-unused-expressions": "off", + + "@typescript-eslint/no-unused-expressions": ["error", { + allowShortCircuit: true, + allowTernary: true, + allowTaggedTemplates: true, + }], + + "@typescript-eslint/triple-slash-reference": "off", + + "@typescript-eslint/member-delimiter-style": ["error", { + multiline: { + delimiter: "semi", + requireLast: true, + }, + + singleline: { + delimiter: "semi", + requireLast: false, + }, + }], + + camelcase: "off", + + "comma-dangle": ["error", { + arrays: "always-multiline", + objects: "always-multiline", + imports: "always-multiline", + exports: "always-multiline", + functions: "always-multiline", + }], + + "array-callback-return": "warn", + "jsx-quotes": ["error", "prefer-double"], + indent: "off", + semi: ["error", "always"], + "space-before-function-paren": "off", + "import/no-named-as-default": "off", + "import/no-named-as-default-member": "off", + "import/default": "off", + "import/named": "off", + "import/namespace": "off", + "import/no-unresolved": "off", + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error", + "react/prop-types": "off", + "react/jsx-wrap-multilines": "error", + "react/react-in-jsx-scope": "off", + "react/display-name": "off", + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "off", + }, +}, { + files: ["**/*.js", "**/*.jsx"], + + rules: { + "@typescript-eslint/no-var-requires": "off", + + "react/no-unknown-property": [2, { + ignore: ["jsx", "global"], + }], + }, +}, +//Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 +// ...compat.extends("plugin:testing-library/react").map(config => ({ +// ...config, +// files: ["**/?(*.)+(spec|test).[jt]s?(x)"], +// })), { +// files: ["**/?(*.)+(spec|test).[jt]s?(x)"], + +// rules: { +// "testing-library/no-container": "off" +// "testing-library/await-async-query": "error", +// "testing-library/no-await-sync-query": "error", +// testing-library/no-debugging-utils": "off", +// "testing-library/no-dom-import": "off", +// "testing-library/no-unnecessary-act": "off", +// }, +// } +]; \ No newline at end of file diff --git a/package.json b/package.json index 12901f112..8b42615f5 100644 --- a/package.json +++ b/package.json @@ -27,29 +27,30 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "7.9.0", - "@typescript-eslint/parser": "7.9.0", - "eslint": "9.3.0", - "eslint-config-prettier": "9.1.0", - "eslint-define-config": "2.1.0", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsx-a11y": "6.8.0", - "eslint-plugin-n": "17.7.0", + "@eslint/compat": "^1.1.1", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "eslint": "^9.6.0", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "^2.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.9.0", + "eslint-plugin-n": "^17.9.0", "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-react": "7.34.1", - "eslint-plugin-react-hooks": "4.6.2", - "eslint-plugin-regexp": "2.5.0", - "eslint-plugin-simple-import-sort": "12.1.0", - "eslint-plugin-testing-library": "6.2.2", - "prettier": "3.2.5", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.3", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-regexp": "^2.6.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-testing-library": "^6.2.2", + "prettier": "^3.3.2", "tslib": "^2.6.2", "tsx": "4.10.5", "typescript": "5.4.5", "vitest": "1.6.0" }, "engines": { - "node": "16.* || >= 18.0.0" + "node": ">= 18.0.0" }, "packageManager": "pnpm@8.6.11" } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f30bc04c1..83edb275f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,54 +8,57 @@ importers: .: devDependencies: + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 '@typescript-eslint/eslint-plugin': - specifier: 7.9.0 - version: 7.9.0(@typescript-eslint/parser@7.9.0)(eslint@9.3.0)(typescript@5.4.5) + specifier: ^7.16.0 + version: 7.16.0(@typescript-eslint/parser@7.16.0)(eslint@9.6.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 7.9.0 - version: 7.9.0(eslint@9.3.0)(typescript@5.4.5) + specifier: ^7.16.0 + version: 7.16.0(eslint@9.6.0)(typescript@5.4.5) eslint: - specifier: 9.3.0 - version: 9.3.0 + specifier: ^9.6.0 + version: 9.6.0 eslint-config-prettier: - specifier: 9.1.0 - version: 9.1.0(eslint@9.3.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@9.6.0) eslint-define-config: - specifier: 2.1.0 + specifier: ^2.1.0 version: 2.1.0 eslint-plugin-import: - specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.9.0)(eslint@9.3.0) + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.16.0)(eslint@9.6.0) eslint-plugin-jsx-a11y: - specifier: 6.8.0 - version: 6.8.0(eslint@9.3.0) + specifier: ^6.9.0 + version: 6.9.0(eslint@9.6.0) eslint-plugin-n: - specifier: 17.7.0 - version: 17.7.0(eslint@9.3.0) + specifier: ^17.9.0 + version: 17.9.0(eslint@9.6.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: - specifier: 5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.3.0)(prettier@3.2.5) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2) eslint-plugin-react: - specifier: 7.34.1 - version: 7.34.1(eslint@9.3.0) + specifier: ^7.34.3 + version: 7.34.3(eslint@9.6.0) eslint-plugin-react-hooks: - specifier: 4.6.2 - version: 4.6.2(eslint@9.3.0) + specifier: ^4.6.2 + version: 4.6.2(eslint@9.6.0) eslint-plugin-regexp: - specifier: 2.5.0 - version: 2.5.0(eslint@9.3.0) + specifier: ^2.6.0 + version: 2.6.0(eslint@9.6.0) eslint-plugin-simple-import-sort: - specifier: 12.1.0 - version: 12.1.0(eslint@9.3.0) + specifier: ^12.1.1 + version: 12.1.1(eslint@9.6.0) eslint-plugin-testing-library: - specifier: 6.2.2 - version: 6.2.2(eslint@9.3.0)(typescript@5.4.5) + specifier: ^6.2.2 + version: 6.2.2(eslint@9.6.0)(typescript@5.4.5) prettier: - specifier: 3.2.5 - version: 3.2.5 + specifier: ^3.3.2 + version: 3.3.2 tslib: specifier: ^2.6.2 version: 2.6.2 @@ -67,7 +70,7 @@ importers: version: 5.4.5 vitest: specifier: 1.6.0 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0 examples/nextjs-demo: dependencies: @@ -76,7 +79,7 @@ importers: version: link:../../packages/react-oidc next: specifier: latest - version: 14.1.0(react-dom@18.3.1)(react@18.3.1) + version: 14.2.4(react-dom@18.3.1)(react@18.3.1) react: specifier: latest version: 18.3.1 @@ -208,7 +211,7 @@ importers: version: 3.9.1(typescript@5.4.5)(vite@5.2.11) vitest: specifier: 1.6.0 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0 packages/oidc-client-service-worker: devDependencies: @@ -235,7 +238,7 @@ importers: version: 3.9.1(typescript@5.4.5)(vite@5.2.11) vitest: specifier: 1.6.0 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0 packages/react-oidc: dependencies: @@ -319,6 +322,14 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -335,7 +346,7 @@ packages: resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 @@ -346,7 +357,7 @@ packages: '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -359,7 +370,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 dev: true @@ -523,7 +534,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -945,13 +956,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.3.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.6.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.3.0 + eslint: 9.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -960,13 +971,29 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint/compat@1.1.1: + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/config-array@0.17.0: + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.5 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/eslintrc@3.1.0: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 + debug: 4.3.5 + espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -977,20 +1004,14 @@ packages: - supports-color dev: true - /@eslint/js@9.3.0: - resolution: {integrity: sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==} + /@eslint/js@9.6.0: + resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@humanwhocodes/config-array@0.13.0: - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + /@eslint/object-schema@2.1.4: + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true /@humanwhocodes/module-importer@1.0.1: @@ -998,10 +1019,6 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - dev: true - /@humanwhocodes/retry@0.3.0: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} @@ -1090,29 +1107,38 @@ packages: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true /@microsoft/api-extractor-model@7.28.13: @@ -1176,12 +1202,12 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.1.0: - resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + /@next/env@14.2.4: + resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} dev: false - /@next/swc-darwin-arm64@14.1.0: - resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + /@next/swc-darwin-arm64@14.2.4: + resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1189,8 +1215,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.0: - resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + /@next/swc-darwin-x64@14.2.4: + resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1198,8 +1224,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.0: - resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + /@next/swc-linux-arm64-gnu@14.2.4: + resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1207,8 +1233,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.0: - resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + /@next/swc-linux-arm64-musl@14.2.4: + resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1216,8 +1242,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.0: - resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + /@next/swc-linux-x64-gnu@14.2.4: + resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1225,8 +1251,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.0: - resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + /@next/swc-linux-x64-musl@14.2.4: + resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1234,8 +1260,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.0: - resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + /@next/swc-win32-arm64-msvc@14.2.4: + resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1243,8 +1269,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.0: - resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + /@next/swc-win32-ia32-msvc@14.2.4: + resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1252,8 +1278,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.0: - resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + /@next/swc-win32-x64-msvc@14.2.4: + resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1593,10 +1619,15 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: - tslib: 2.6.2 + '@swc/counter': 0.1.3 + tslib: 2.6.3 dev: false /@testing-library/dom@10.1.0: @@ -1642,7 +1673,7 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.6.0(jsdom@24.0.0) + vitest: 1.6.0 dev: false /@testing-library/jest-dom@6.4.5(vitest@1.6.0): @@ -1857,8 +1888,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0)(eslint@9.3.0)(typescript@5.4.5): - resolution: {integrity: sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==} + /@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0)(eslint@9.6.0)(typescript@5.4.5): + resolution: {integrity: sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1869,12 +1900,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/type-utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.9.0 - eslint: 9.3.0 + '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.16.0 + '@typescript-eslint/type-utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.0 + eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -1884,8 +1915,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.9.0(eslint@9.3.0)(typescript@5.4.5): - resolution: {integrity: sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==} + /@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.4.5): + resolution: {integrity: sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1894,12 +1925,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.4 - eslint: 9.3.0 + '@typescript-eslint/scope-manager': 7.16.0 + '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.0 + debug: 4.3.5 + eslint: 9.6.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -1913,16 +1944,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.9.0: - resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} + /@typescript-eslint/scope-manager@7.16.0: + resolution: {integrity: sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 + '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/visitor-keys': 7.16.0 dev: true - /@typescript-eslint/type-utils@7.9.0(eslint@9.3.0)(typescript@5.4.5): - resolution: {integrity: sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==} + /@typescript-eslint/type-utils@7.16.0(eslint@9.6.0)(typescript@5.4.5): + resolution: {integrity: sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1931,10 +1962,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) - debug: 4.3.4 - eslint: 9.3.0 + '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + debug: 4.3.5 + eslint: 9.6.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -1946,8 +1977,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.9.0: - resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} + /@typescript-eslint/types@7.16.0: + resolution: {integrity: sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==} engines: {node: ^18.18.0 || >=20.0.0} dev: true @@ -1962,18 +1993,18 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.6.2 tsutils: 3.21.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5): - resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} + /@typescript-eslint/typescript-estree@7.16.0(typescript@5.4.5): + resolution: {integrity: sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1981,50 +2012,50 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.4 + '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/visitor-keys': 7.16.0 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@9.3.0)(typescript@5.4.5): + /@typescript-eslint/utils@5.62.0(eslint@9.6.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - eslint: 9.3.0 + eslint: 9.6.0 eslint-scope: 5.1.1 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.9.0(eslint@9.3.0)(typescript@5.4.5): - resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} + /@typescript-eslint/utils@7.16.0(eslint@9.6.0)(typescript@5.4.5): + resolution: {integrity: sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - eslint: 9.3.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@typescript-eslint/scope-manager': 7.16.0 + '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript @@ -2038,11 +2069,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.9.0: - resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} + /@typescript-eslint/visitor-keys@7.16.0: + resolution: {integrity: sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/types': 7.16.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2096,7 +2127,7 @@ packages: std-env: 3.7.0 strip-literal: 2.0.0 test-exclude: 6.0.0 - vitest: 1.6.0(jsdom@24.0.0) + vitest: 1.6.0 transitivePeerDependencies: - supports-color dev: true @@ -2118,14 +2149,14 @@ packages: /@vitest/snapshot@1.6.0: resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 /@vitest/spy@1.6.0: resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: - tinyspy: 2.2.0 + tinyspy: 2.2.1 /@vitest/utils@1.6.0: resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} @@ -2184,7 +2215,7 @@ packages: '@vue/compiler-dom': 3.4.15 '@vue/shared': 3.4.15 computeds: 0.0.1 - minimatch: 9.0.4 + minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 typescript: 5.4.5 @@ -2195,20 +2226,20 @@ packages: resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.12.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.3 + acorn: 8.12.1 dev: true /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2216,9 +2247,10 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} @@ -2284,6 +2316,12 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -2297,14 +2335,15 @@ packages: is-array-buffer: 3.0.4 dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -2317,9 +2356,9 @@ packages: resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true @@ -2340,20 +2379,20 @@ packages: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -2361,27 +2400,28 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true /array.prototype.toreversed@1.1.2: resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 dev: true @@ -2412,18 +2452,8 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} - engines: {node: '>= 0.4'} dev: true /available-typed-arrays@1.0.7: @@ -2433,15 +2463,15 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + /axe-core@4.9.1: + resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} dev: true - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: - dequal: 2.0.3 + deep-equal: 2.2.3 dev: true /balanced-match@1.0.2: @@ -2482,7 +2512,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001584 + caniuse-lite: 1.0.30001641 electron-to-chromium: 1.4.657 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.3) @@ -2499,14 +2529,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.3 - set-function-length: 1.2.0 - dev: true - /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -2523,8 +2545,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001584: - resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} + /caniuse-lite@1.0.30001641: + resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==} /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} @@ -2532,7 +2554,7 @@ packages: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 @@ -2630,6 +2652,7 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} @@ -2753,6 +2776,7 @@ packages: engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 + dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -2768,6 +2792,7 @@ packages: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + dev: true /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} @@ -2821,27 +2846,55 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true + + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /define-data-property@1.1.4: @@ -2857,14 +2910,15 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: true /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -2910,8 +2964,8 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + /enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -2921,50 +2975,6 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.3 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.6 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 dev: true /es-abstract@1.23.3: @@ -2986,7 +2996,7 @@ packages: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -3002,7 +3012,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -3035,27 +3045,22 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 - function-bind: 1.1.2 - get-intrinsic: 1.2.3 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.6 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 dev: true - /es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -3065,7 +3070,7 @@ packages: es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -3081,15 +3086,6 @@ packages: es-errors: 1.3.0 dev: true - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.3 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - /es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -3199,22 +3195,22 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@9.3.0): + /eslint-compat-utils@0.1.2(eslint@9.6.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.3.0 + eslint: 9.6.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.3.0): + /eslint-config-prettier@9.1.0(eslint@9.6.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.3.0 + eslint: 9.6.0 dev: true /eslint-define-config@2.1.0: @@ -3226,13 +3222,13 @@ packages: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@9.3.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.0)(eslint-import-resolver-node@0.3.9)(eslint@9.6.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3253,27 +3249,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 9.3.0 + eslint: 9.6.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@9.3.0): + /eslint-plugin-es-x@7.5.0(eslint@9.6.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint-community/regexpp': 4.10.0 - eslint: 9.3.0 - eslint-compat-utils: 0.1.2(eslint@9.3.0) + eslint: 9.6.0 + eslint-compat-utils: 0.1.2(eslint@9.6.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.9.0)(eslint@9.3.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.0)(eslint@9.6.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3283,23 +3279,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.9.0(eslint@9.3.0)(typescript@5.4.5) - array-includes: 3.1.7 + '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + array-includes: 3.1.8 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.3.0 + eslint: 9.6.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@9.3.0) - hasown: 2.0.0 - is-core-module: 2.13.1 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.0)(eslint-import-resolver-node@0.3.9)(eslint@9.6.0) + hasown: 2.0.2 + is-core-module: 2.14.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 + object.fromentries: 2.0.8 object.groupby: 1.0.2 - object.values: 1.1.7 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 transitivePeerDependencies: @@ -3308,46 +3304,46 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@9.3.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + /eslint-plugin-jsx-a11y@6.9.0(eslint@9.6.0): + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.9 - aria-query: 5.3.0 - array-includes: 3.1.7 + aria-query: 5.1.3 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.9.1 + axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 - eslint: 9.3.0 - hasown: 2.0.0 + es-iterator-helpers: 1.0.19 + eslint: 9.6.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 dev: true - /eslint-plugin-n@17.7.0(eslint@9.3.0): - resolution: {integrity: sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==} + /eslint-plugin-n@17.9.0(eslint@9.6.0): + resolution: {integrity: sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - enhanced-resolve: 5.16.0 - eslint: 9.3.0 - eslint-plugin-es-x: 7.5.0(eslint@9.3.0) - get-tsconfig: 4.7.2 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + enhanced-resolve: 5.17.0 + eslint: 9.6.0 + eslint-plugin-es-x: 7.5.0(eslint@9.6.0) + get-tsconfig: 4.7.5 globals: 15.2.0 ignore: 5.3.1 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.2 dev: true /eslint-plugin-no-only-tests@3.1.0: @@ -3355,7 +3351,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.3.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3369,81 +3365,81 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.3.0 - eslint-config-prettier: 9.1.0(eslint@9.3.0) - prettier: 3.2.5 + eslint: 9.6.0 + eslint-config-prettier: 9.1.0(eslint@9.6.0) + prettier: 3.3.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.2(eslint@9.3.0): + /eslint-plugin-react-hooks@4.6.2(eslint@9.6.0): resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.3.0 + eslint: 9.6.0 dev: true - /eslint-plugin-react@7.34.1(eslint@9.3.0): - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + /eslint-plugin-react@7.34.3(eslint@9.6.0): + resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 + array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 - eslint: 9.3.0 + es-iterator-helpers: 1.0.19 + eslint: 9.6.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: true - /eslint-plugin-regexp@2.5.0(eslint@9.3.0): - resolution: {integrity: sha512-I7vKcP0o75WS5SHiVNXN+Eshq49sbrweMQIuqSL3AId9AwDe9Dhbfug65vw64LxmOd4v+yf5l5Xt41y9puiq0g==} + /eslint-plugin-regexp@2.6.0(eslint@9.6.0): + resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.3.0 + eslint: 9.6.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@12.1.0(eslint@9.3.0): - resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} + /eslint-plugin-simple-import-sort@12.1.1(eslint@9.6.0): + resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 9.3.0 + eslint: 9.6.0 dev: true - /eslint-plugin-testing-library@6.2.2(eslint@9.3.0)(typescript@5.4.5): + /eslint-plugin-testing-library@6.2.2(eslint@9.6.0)(typescript@5.4.5): resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.3.0)(typescript@5.4.5) - eslint: 9.3.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.4.5) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript @@ -3475,27 +3471,27 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@9.3.0: - resolution: {integrity: sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==} + /eslint@9.6.0: + resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint-community/regexpp': 4.10.0 + '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.3.0 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/js': 9.6.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 - espree: 10.0.1 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -3518,12 +3514,12 @@ packages: - supports-color dev: true - /espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + /espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 dev: true @@ -3574,7 +3570,7 @@ packages: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.2.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -3677,6 +3673,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -3729,17 +3726,6 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - /get-intrinsic@1.2.3: - resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true - /get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -3755,14 +3741,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - dev: true - /get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -3772,12 +3750,6 @@ packages: get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - /get-tsconfig@4.7.5: resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} dependencies: @@ -3805,7 +3777,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.4 + minimatch: 9.0.5 minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -3836,11 +3808,12 @@ packages: engines: {node: '>=18'} dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 dev: true /globby@11.1.0: @@ -3896,23 +3869,12 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - dependencies: - get-intrinsic: 1.2.3 - dev: true - /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} @@ -3930,13 +3892,6 @@ packages: has-symbols: 1.0.3 dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3958,6 +3913,7 @@ packages: engines: {node: '>=18'} dependencies: whatwg-encoding: 3.1.1 + dev: true /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3968,18 +3924,20 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -3990,6 +3948,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -4034,22 +3993,21 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.3 + es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.4 + side-channel: 1.0.6 dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.4 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-array-buffer@3.0.4: @@ -4086,8 +4044,9 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + /is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 dev: true @@ -4114,7 +4073,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-fullwidth-code-point@3.0.0: @@ -4136,12 +4095,8 @@ packages: is-extglob: 2.1.1 dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} dev: true @@ -4172,6 +4127,7 @@ packages: /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4181,14 +4137,9 @@ packages: has-tostringtag: 1.0.2 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.5 + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} dev: true /is-shared-array-buffer@1.0.3: @@ -4223,8 +4174,9 @@ packages: which-typed-array: 1.1.15 dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} dev: true /is-weakref@1.0.2: @@ -4233,11 +4185,12 @@ packages: call-bind: 1.0.7 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /isarray@0.0.1: @@ -4274,7 +4227,7 @@ packages: engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -4292,10 +4245,10 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 - set-function-name: 2.0.1 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 dev: true /jackspeak@2.3.6: @@ -4419,6 +4372,7 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -4464,10 +4418,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 dev: true /junk@4.0.1: @@ -4566,11 +4520,17 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + /magic-string@0.30.9: resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} @@ -4584,7 +4544,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.0 + semver: 7.6.2 dev: true /meow@12.1.1: @@ -4610,12 +4570,14 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -4637,8 +4599,8 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -4662,7 +4624,7 @@ packages: /mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 @@ -4727,40 +4689,43 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + /next@14.2.4(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 14.1.0 - '@swc/helpers': 0.5.2 + '@next/env': 14.2.4 + '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001584 + caniuse-lite: 1.0.30001641 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.0 - '@next/swc-darwin-x64': 14.1.0 - '@next/swc-linux-arm64-gnu': 14.1.0 - '@next/swc-linux-arm64-musl': 14.1.0 - '@next/swc-linux-x64-gnu': 14.1.0 - '@next/swc-linux-x64-musl': 14.1.0 - '@next/swc-win32-arm64-msvc': 14.1.0 - '@next/swc-win32-ia32-msvc': 14.1.0 - '@next/swc-win32-x64-msvc': 14.1.0 + '@next/swc-darwin-arm64': 14.2.4 + '@next/swc-darwin-x64': 14.2.4 + '@next/swc-linux-arm64-gnu': 14.2.4 + '@next/swc-linux-arm64-musl': 14.2.4 + '@next/swc-linux-x64-gnu': 14.2.4 + '@next/swc-linux-x64-musl': 14.2.4 + '@next/swc-win32-arm64-msvc': 14.2.4 + '@next/swc-win32-ia32-msvc': 14.2.4 + '@next/swc-win32-x64-msvc': 14.2.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -4777,22 +4742,32 @@ packages: readable-stream: 1.0.34 dev: true - /npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: true + + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 dev: true /object-keys@1.1.1: @@ -4804,54 +4779,57 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true /object.groupby@1.0.2: resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} dependencies: array.prototype.filter: 1.0.3 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true /once@1.4.0: @@ -4956,6 +4934,7 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: true /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -5008,6 +4987,10 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5035,7 +5018,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 dev: false @@ -5044,7 +5027,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 dev: true @@ -5053,7 +5036,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /prelude-ls@1.2.1: @@ -5068,8 +5051,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + /prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} engines: {node: '>=14'} hasBin: true dev: true @@ -5104,13 +5087,16 @@ packages: /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: true /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5219,16 +5205,16 @@ packages: '@eslint-community/regexpp': 4.10.0 dev: true - /reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 - get-intrinsic: 1.2.3 - globalthis: 1.0.3 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 which-builtin-type: 1.1.3 dev: true @@ -5243,15 +5229,6 @@ packages: refa: 0.12.1 dev: true - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 - dev: true - /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -5259,7 +5236,7 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 - set-function-name: 2.0.1 + set-function-name: 2.0.2 dev: true /require-directory@2.1.1: @@ -5269,6 +5246,7 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -5282,7 +5260,7 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 dev: true @@ -5290,7 +5268,7 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -5299,7 +5277,7 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -5367,6 +5345,7 @@ packages: /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5374,16 +5353,6 @@ packages: queue-microtask: 1.2.3 dev: true - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - /safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -5398,15 +5367,6 @@ packages: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - is-regex: 1.1.4 - dev: true - /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} @@ -5418,12 +5378,14 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -5457,23 +5419,10 @@ packages: lru-cache: 6.0.0 dev: true - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - function-bind: 1.1.2 - get-intrinsic: 1.2.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 dev: true /set-function-length@1.2.2: @@ -5488,13 +5437,14 @@ packages: has-property-descriptors: 1.0.2 dev: true - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true /shebang-command@2.0.0: @@ -5507,12 +5457,14 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - object-inspect: 1.13.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 dev: true /siginfo@2.0.0: @@ -5562,6 +5514,13 @@ packages: /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.7 + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -5594,27 +5553,29 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} dependencies: - call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 - has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 + es-abstract: 1.23.3 dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 dev: true /string.prototype.trim@1.2.9: @@ -5627,14 +5588,6 @@ packages: es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: @@ -5643,14 +5596,6 @@ packages: es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} @@ -5752,13 +5697,14 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true /synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /tapable@2.2.1: @@ -5788,13 +5734,17 @@ packages: /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} /tinypool@0.8.4: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} /to-fast-properties@2.0.0: @@ -5816,12 +5766,14 @@ packages: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true /tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} dependencies: punycode: 2.3.1 + dev: true /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -5847,6 +5799,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -5890,15 +5846,6 @@ packages: engines: {node: '>=16'} dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 - is-typed-array: 1.1.13 - dev: true - /typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -5908,16 +5855,6 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} @@ -5929,17 +5866,6 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} @@ -5952,14 +5878,6 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} @@ -6006,6 +5924,7 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} + dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -6020,7 +5939,7 @@ packages: dependencies: browserslist: 4.22.3 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 dev: true /uri-js@4.4.1: @@ -6034,6 +5953,7 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6050,9 +5970,9 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.5 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 vite: 5.2.11 transitivePeerDependencies: - '@types/node' @@ -6219,6 +6139,60 @@ packages: optionalDependencies: fsevents: 2.3.3 + /vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.5 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.2.11 + vite-node: 1.6.0 + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + /vitest@1.6.0(jsdom@24.0.0): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6273,6 +6247,7 @@ packages: - sugarss - supports-color - terser + dev: true /vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} @@ -6289,7 +6264,7 @@ packages: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.4.5) - semver: 7.6.0 + semver: 7.6.2 typescript: 5.4.5 dev: true @@ -6298,6 +6273,7 @@ packages: engines: {node: '>=18'} dependencies: xml-name-validator: 5.0.0 + dev: true /web-vitals@3.5.2: resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} @@ -6306,16 +6282,19 @@ packages: /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + dev: true /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 + dev: true /whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + dev: true /whatwg-url@14.0.0: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} @@ -6323,6 +6302,7 @@ packages: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6348,28 +6328,18 @@ packages: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.14 - dev: true - - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 dev: true /which-typed-array@1.1.15: @@ -6397,6 +6367,15 @@ packages: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true + + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -6440,13 +6419,16 @@ packages: optional: true utf-8-validate: optional: true + dev: true /xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} + dev: true /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} From a46b1aabe19db70beac342c557ae2c986d16eae7 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 15 Jul 2024 06:25:08 +1000 Subject: [PATCH 298/565] fix (FetchToken): Fix FetchToken param to be boolean (#1414) Resolves: ```text packages/react-oidc prepare: src/FetchToken.tsx:12:48 - error TS2345: Argument of type 'boolean' is not assignable to parameter of type 'false'. packages/react-oidc prepare: 12 const newFetch = oidc.fetchWithTokens(fetch, demonstrating_proof_of_possession); ``` --- packages/oidc-client/src/oidcClient.ts | 2 +- packages/react-oidc/src/FetchToken.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 59a293dbe..5cd3cfabb 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -75,7 +75,7 @@ export class OidcClient { return getValidTokenAsync(this._oidc, waitMs, numberWait); } - fetchWithTokens(fetch: Fetch, demonstrating_proof_of_possession:false): Fetch { + fetchWithTokens(fetch: Fetch, demonstrating_proof_of_possession:boolean = false): Fetch { return fetchWithTokens(fetch, this, demonstrating_proof_of_possession); } diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index e311778e0..27d1808b9 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -7,7 +7,7 @@ export interface ComponentWithOidcFetchProps { const defaultConfigurationName = 'default'; -const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null, demonstrating_proof_of_possession=false) => async (...params: Parameters) => { +const fetchWithToken = (fetch: Fetch, getOidcWithConfigurationName: () => OidcClient | null, demonstrating_proof_of_possession: boolean = false) => async (...params: Parameters) => { const oidc = getOidcWithConfigurationName(); const newFetch = oidc.fetchWithTokens(fetch, demonstrating_proof_of_possession); return await newFetch(...params); From 7caee919b4854526dad83203216965746baecabe Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 15 Jul 2024 06:26:19 +1000 Subject: [PATCH 299/565] build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411) --- .../azure-static-web-apps-black-rock-0dc6b0d03.yml | 4 ++-- .../azure-static-web-apps-icy-glacier-004ab4303.yml | 4 ++-- .github/workflows/ci.yml | 4 ++-- .github/workflows/npm-publish.yml | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index ef1ceae2f..0e0c6d22e 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -25,10 +25,10 @@ jobs: runs-on: ubuntu-latest name: Build and Deploy Job steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: true - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - uses: pnpm/action-setup@v4 diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index 36d7b0f3b..f7bf9eb68 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -25,10 +25,10 @@ jobs: runs-on: ubuntu-latest name: Build and Deploy Job steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: true - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - uses: pnpm/action-setup@v4 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aadcf5860..b47788da8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,10 +17,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 42c64308b..85dcd2fe6 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -24,8 +24,8 @@ jobs: runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && !github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.GIT_TOKEN }} fetch-depth: 0 @@ -120,7 +120,7 @@ jobs: echo "new_version=$version-beta.${{ github.run_number }}" >> $GITHUB_OUTPUT fi - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} From b94fa5ca90bd366c4f59a870c428f42872bfacaa Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 15 Jul 2024 06:28:21 +1000 Subject: [PATCH 300/565] docs: Minor language change. (#1412) --- SECURITY.md | 2 +- packages/react-oidc/README.md | 33 +++++++++++++++------------------ 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 74720879a..a9c26f5e4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ Use this section to tell people about which versions of your project are currently being supported with security updates. | Version | Supported | -| ------- | ------------------ | +|---------|--------------------| | 5.1.x | :white_check_mark: | | 5.0.x | :x: | | 4.0.x | :white_check_mark: | diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 5a02047ff..2a35493fb 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -8,14 +8,11 @@ We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) and we expect soon to provide one for **Vue**, **Angular** and **Svelte**. -- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) +- Try the React demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) - Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ -

- Sample React Oicd -

+ +Sample React Oicd - [About](#about) - [Getting Started](#getting-started) @@ -139,7 +136,7 @@ pnpm start ### Application startup -The library is router agnostic and use native History API. +The library is router agnostic and will use native History API. The default routes used internally : @@ -238,8 +235,8 @@ const configuration = { demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow }; - -interface DemonstratingProofOfPossessionConfiguration { +interface DemonstratingProofOfPossessionConfiguration +{ generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, digestAlgorithm: AlgorithmIdentifier, importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, @@ -336,7 +333,7 @@ import { OidcSecure } from "@axa-fr/react-oidc"; const AdminSecure = () => ( -

My sub component

} +

My sub component

); @@ -344,9 +341,9 @@ const AdminSecure = () => ( export default AdminSecure; ``` -## How to secure a component : HOC method +## How to secure a component: HOC method -"withOidcSecure" act the same as "OidcSecure" it also trigger authentication in case user is not authenticated. +`withOidcSecure` will act the same as `OidcSecure`,it will also trigger authentication in case the user is not authenticated. ```javascript import React from "react"; @@ -368,7 +365,7 @@ const Routes = () => ( export default Routes; ``` -## How to get "Access Token" : Hook method +## How to get "Access Token": Hook method ```javascript import { useOidcAccessToken } from "@axa-fr/react-oidc"; @@ -399,7 +396,7 @@ const DisplayAccessToken = () => { }; ``` -## How to get IDToken : Hook method +## How to get IDToken: Hook method ```javascript import { useOidcIdToken } from "@axa-fr/react-oidc"; @@ -425,7 +422,7 @@ const DisplayIdToken = () => { }; ``` -## How to get User Information : Hook method +## How to get User Information: Hook method ```javascript import { useOidcUser, UserStatus } from "@axa-fr/react-oidc"; @@ -453,10 +450,10 @@ const DisplayUserInfo = () => { }; ``` -## How to get a fetch that inject Access_Token : Hook method +## How to get a fetch that inject Access_Token: Hook method -If your are not using the service worker. Fetch function need to send AccessToken. -This Hook give you a wrapped fetch that add the access token for you. +If you are not using the service worker. The Fetch function needs to send AccessToken. +This hook will give you a wrapped fetch that adds the access token for you. ```javascript import React, { useEffect, useState } from "react"; From 01f0714241e6442e6b58fcba8b86804ed75cec09 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Mon, 15 Jul 2024 06:32:02 +1000 Subject: [PATCH 301/565] tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413) --- .../src/utils/__tests__/domains.spec.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index eea8e1a46..b4531819a 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -1,21 +1,21 @@ import { beforeEach, describe, expect, it } from 'vitest'; import { openidWellknownUrlEndWith } from '../../constants'; +import { Database, Tokens, TrustedDomains } from '../../types'; import { checkDomain, getCurrentDatabaseDomain } from '..'; -import { Database, Tokens, TrustedDomains } from './../../types'; describe('domains', () => { describe('can check domain matches', () => { - it('can check string domains and return void', () => { - const result = () => + it('can check string domains without throwing an exception', () => { + expect(() => { checkDomain(['https://securesite.com:3000'], 'https://securesite.com:3000'); - expect(result()).toBeUndefined(); + }).not.toThrow(); }); - it('can check regExp domains and return void when valid', () => { - const result = () => + it('can check regExp domains without throwing an exception when valid', () => { + expect(() => { checkDomain([/^https:\/\/securesite\.com/], 'https://securesite.com:3000'); - expect(result()).toBeUndefined(); + }).not.toThrow(); }); it('will throw error when domain is not trusted', () => { @@ -24,9 +24,10 @@ describe('domains', () => { expect(result).toThrowError(); }); - it('will return void when endpoint is falsy', () => { - const result = () => checkDomain(['https://securesite.com:3000'], ''); - expect(result()).toBeUndefined(); + it('will not throw an exception when endpoint is falsy', () => { + expect(() => { + checkDomain(['https://securesite.com:3000'], ''); + }).not.toThrow(); }); }); describe('getCurrentDatabaseDomain', () => { From b099078f9d4b61dffd03034f511a4f32e80977a8 Mon Sep 17 00:00:00 2001 From: wermanoid Date: Mon, 15 Jul 2024 17:07:37 +0200 Subject: [PATCH 302/565] fix(oidc): clenup client internal promises when requests are finished (release) (#1417) --- packages/oidc-client/src/oidc.ts | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 1c5129b5d..59f6d2532 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -243,9 +243,8 @@ Please checkout that you are using OIDC hook inside a { + return this.tryKeepExistingSessionPromise.finally(() => { this.tryKeepExistingSessionPromise = null; - return result; }); } @@ -266,9 +265,8 @@ Please checkout that you are using OIDC hook inside a { + return this.loginPromise.finally(() => { this.loginPromise = null; - return result; }); } @@ -297,9 +295,8 @@ Please checkout that you are using OIDC hook inside a { + return this.loginCallbackPromise.finally(() => { this.loginCallbackPromise = null; - return result; }); } @@ -336,9 +333,8 @@ Please checkout that you are using OIDC hook inside a { + return this.loginCallbackWithAutoTokensRenewPromise.finally(() => { this.loginCallbackWithAutoTokensRenewPromise = null; - return result; }); } @@ -348,9 +344,8 @@ Please checkout that you are using OIDC hook inside a { + return this.userInfoPromise.finally(() => { this.userInfoPromise = null; - return result; }); } @@ -366,9 +361,8 @@ Please checkout that you are using OIDC hook inside a { + return this.renewTokensPromise.finally(() => { this.renewTokensPromise = null; - return result; }); } @@ -398,9 +392,8 @@ Please checkout that you are using OIDC hook inside a { + return this.logoutPromise.finally(() => { this.logoutPromise = null; - return result; }); } } From 5749d0d9316f1e0a0f6a6485b029b9564bfb1d70 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 15 Jul 2024 15:10:10 +0000 Subject: [PATCH 303/565] [skip ci] Update to version 7.22.17 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 3d24cd07b..d31aad534 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.16", + "version": "7.22.17", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 1097aee35..34018eb9a 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.16'; +export default '7.22.17'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 49e1df44f..82bd15624 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.16", + "version": "7.22.17", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 1097aee35..34018eb9a 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.16'; +export default '7.22.17'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f8ba2d4c2..4b3593fd0 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.16", + "version": "7.22.17", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 58c7d1a30099a5936813f993213377124d34944e Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 15 Jul 2024 15:10:12 +0000 Subject: [PATCH 304/565] [skip ci] Generate changelog to version 7.22.17 --- CHANGELOG.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a33afeef0..373e36d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ # Changelog -## 7.22.16 +## 7.22.17 + +- [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* +- [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* +- [b94fa5c](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by *Jason Finch* +- [7caee91](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by *Jason Finch* +- [a46b1aa](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by *Jason Finch* +- [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* + + +## v7.22.16 - [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* - [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* @@ -312,8 +322,3 @@ - [da77bb9](https://github.com/AxaFrance/oidc-client/commit/da77bb912b61e5aad93c53e84ce4fbea2a503fb2) - build(npm): bump typescript from 5.1.6 to 5.3.3 (#1232), 2023-12-07 by *dependabot[bot]* -## v7.13.5 - -- [8f5f888](https://github.com/AxaFrance/oidc-client/commit/8f5f888fe34d739ded51f611e194d77a2e788830) - build(npm): bump eslint-plugin-regexp from 1.15.0 to 2.1.2 (#1233), 2023-12-07 by *dependabot[bot]* - - From 5ee0cc8f6d823056da221ad081c3821ba9fac343 Mon Sep 17 00:00:00 2001 From: Miya <44374710+krzempekk@users.noreply.github.com> Date: Tue, 16 Jul 2024 21:33:18 +0200 Subject: [PATCH 305/565] fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402) * fix(oidc): separate state, nonce and codeVerifier for each tab (release) * fix(oidc): add allowMultiTabLogin flag for configuring multi tab login behaviour (release) --------- Co-authored-by: mkrzempek --- examples/react-oidc-demo/README.md | 3 + .../public/OidcTrustedDomains.js | 5 + examples/react-oidc-demo/src/MultiAuth.tsx | 10 +- .../src/OidcServiceWorker.ts | 101 +++++++++++------- .../src/__tests__/oidcConfig.spec.ts | 7 +- .../oidc-client-service-worker/src/types.ts | 9 +- .../src/utils/__tests__/codeVerifier.spec.ts | 4 +- .../src/utils/__tests__/domains.spec.ts | 7 +- .../src/utils/__tests__/testHelper.ts | 19 ++-- .../src/utils/__tests__/tokens.spec.ts | 6 +- .../src/utils/codeVerifier.ts | 8 +- .../src/utils/tokens.ts | 18 ++-- packages/oidc-client/README.md | 6 ++ packages/oidc-client/src/initWorker.ts | 34 ++++-- packages/react-oidc/README.md | 6 ++ 15 files changed, 157 insertions(+), 86 deletions(-) diff --git a/examples/react-oidc-demo/README.md b/examples/react-oidc-demo/README.md index b61a546b4..04bf0c5bb 100644 --- a/examples/react-oidc-demo/README.md +++ b/examples/react-oidc-demo/README.md @@ -71,6 +71,9 @@ const trustedDomains = { // scenarios which require it. For example, to send it via websocket connection. trustedDomains.config_show_access_token = { domains : ["https://demo.duendesoftware.com"], showAccessToken: true }; +// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) +// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. +trustedDomains.config_multi_tab_login = { domains : ["https://demo.duendesoftware.com"], allowMultiTabLogin: true }; ``` ## Run The Demo diff --git a/examples/react-oidc-demo/public/OidcTrustedDomains.js b/examples/react-oidc-demo/public/OidcTrustedDomains.js index 933b0f2bc..f8872e5ec 100644 --- a/examples/react-oidc-demo/public/OidcTrustedDomains.js +++ b/examples/react-oidc-demo/public/OidcTrustedDomains.js @@ -27,4 +27,9 @@ trustedDomains.config_with_dpop = { demonstratingProofOfPossession: true, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true }; + +trustedDomains.config_multi_tab_login = { + domains: ["https://demo.duendesoftware.com"], + allowMultiTabLogin: true +} //# sourceMappingURL=OidcTrustedDomains.js.map \ No newline at end of file diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 66eff1d7f..c10070f44 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -47,6 +47,7 @@ const MultiAuth = ({ configurationName, handleConfigurationChange }) => {; + {!isAuthenticated && } {isAuthenticatedDefault && } @@ -140,7 +141,14 @@ export const MultiAuthContainer = () => { digestAlgorithm: { name: "SHA-256" }, jwtHeaderAlgorithm: "RS256", },*/ - } + }, + config_multi_tab_login: { + ...configurationIdentityServer, + redirect_uri: callBack, + silent_redirect_uri, + scope: 'openid profile email api offline_access', + client_id: 'interactive.public.short', + }, }; const handleConfigurationChange = (event) => { const configurationName = event.target.value; diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 1d4466c11..abca232f5 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -77,7 +77,7 @@ const keepAliveAsync = async (event: FetchEvent) => { async function generateDpopAsync(originalRequest: Request, currentDatabase:OidcConfig|null, url: string, extrasClaims={} ) { const headersExtras = serializeHeaders(originalRequest.headers); - if (currentDatabase?.demonstratingProofOfPossessionConfiguration && + if (currentDatabase?.demonstratingProofOfPossessionConfiguration && currentDatabase.demonstratingProofOfPossessionJwkJson && (!currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent || currentDatabase.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent && headersExtras['dpop']) ) { @@ -166,6 +166,7 @@ const handleFetch = async (event: FetchEvent) => { } let currentDatabase: OidcConfig | null = null; + let currentTabId: string | null = null; const currentDatabases = getCurrentDatabasesTokenEndpoint(database, url); const numberDatabase = currentDatabases.length; if (numberDatabase > 0) { @@ -180,28 +181,41 @@ const handleFetch = async (event: FetchEvent) => { let newBody = actualBody; for (let i = 0; i < numberDatabase; i++) { const currentDb = currentDatabases[i]; + const currentDbTabs = Object.keys(currentDb.state); + if (currentDb?.tokens != null) { const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(currentDb.tokens.access_token),}; headers = await generateDpopAsync(originalRequest, currentDb, url, claimsExtras); - const keyRefreshToken = - TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName; - if (actualBody.includes(keyRefreshToken)) { - newBody = newBody.replace( - keyRefreshToken, - encodeURIComponent(currentDb.tokens.refresh_token as string), - ); - currentDatabase = currentDb; - - break; + + for(let j = 0; j < currentDbTabs.length; j++) { + const keyRefreshToken = + TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName + '_' + currentDbTabs[j]; + if (actualBody.includes(keyRefreshToken)) { + newBody = newBody.replace( + keyRefreshToken, + encodeURIComponent(currentDb.tokens.refresh_token as string), + ); + currentDatabase = currentDb; + currentTabId = currentDbTabs[j]; + + break; + } + + const keyAccessToken = + TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName + '_' + currentDbTabs[j]; + if (actualBody.includes(keyAccessToken)) { + newBody = newBody.replace( + keyAccessToken, + encodeURIComponent(currentDb.tokens.access_token), + ); + currentDatabase = currentDb; + currentTabId = currentDbTabs[j]; + + break; + } } - const keyAccessToken = - TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName; - if (actualBody.includes(keyAccessToken)) { - newBody = newBody.replace( - keyAccessToken, - encodeURIComponent(currentDb.tokens.access_token), - ); - currentDatabase = currentDb; + + if(currentTabId) { break; } } @@ -233,21 +247,21 @@ const handleFetch = async (event: FetchEvent) => { return new Response(text, response); }); } - return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); + return fetchPromise.then(hideTokens(currentDatabase as OidcConfig, currentTabId as string)); } else if ( actualBody.includes('code_verifier=') && extractConfigurationNameFromCodeVerifier(actualBody) != null ) { - const currentLoginCallbackConfigurationName = extractConfigurationNameFromCodeVerifier( + const [currentLoginCallbackConfigurationName, currentLoginCallbackTabId] = extractConfigurationNameFromCodeVerifier( actualBody, - ); - // @ts-ignore + ) ?? []; currentDatabase = database[currentLoginCallbackConfigurationName]; let newBody = actualBody; - if (currentDatabase?.codeVerifier != null) { + const codeVerifier = currentDatabase.codeVerifier[currentLoginCallbackTabId]; + if (codeVerifier != null) { newBody = replaceCodeVerifier( newBody, - currentDatabase.codeVerifier, + codeVerifier, ); } @@ -265,8 +279,7 @@ const handleFetch = async (event: FetchEvent) => { referrer: clonedRequest.referrer, credentials: clonedRequest.credentials, integrity: clonedRequest.integrity, - // @ts-ignore - }).then(hideTokens(currentDatabase)); + }).then(hideTokens(currentDatabase, currentLoginCallbackTabId)); } // if showAccessToken=true, the token is already in the body @@ -322,13 +335,16 @@ const handleMessage = async (event: ExtendableMessageEvent) => { const convertAllRequestsToCorsExceptNavigate = Array.isArray(trustedDomain) ? false : trustedDomain.convertAllRequestsToCorsExceptNavigate; + const allowMultiTabLogin = Array.isArray(trustedDomain) + ? false + : trustedDomain.allowMultiTabLogin; database[configurationName] = { tokens: null, - state: null, - codeVerifier: null, + state: {}, + codeVerifier: {}, oidcServerConfiguration: null, oidcConfiguration: undefined, - nonce: null, + nonce: {}, status: null, configurationName, hideAccessToken: !showAccessToken, @@ -340,6 +356,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, + allowMultiTabLogin: allowMultiTabLogin ?? false }; currentDatabase = database[configurationName]; @@ -347,12 +364,14 @@ const handleMessage = async (event: ExtendableMessageEvent) => { trustedDomains[configurationName] = []; } } + + const tabId = currentDatabase.allowMultiTabLogin ? data.tabId : 'default'; switch (data.type) { case 'clear': currentDatabase.tokens = null; - currentDatabase.state = null; - currentDatabase.codeVerifier = null; + currentDatabase.state = {}; + currentDatabase.codeVerifier = {}; currentDatabase.demonstratingProofOfPossessionNonce = null; currentDatabase.demonstratingProofOfPossessionJwkJson = null; currentDatabase.demonstratingProofOfPossessionConfiguration = null; @@ -402,16 +421,16 @@ const handleMessage = async (event: ExtendableMessageEvent) => { ...currentDatabase.tokens, }; if (currentDatabase.hideAccessToken) { - tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName; + tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName + '_' + tabId; } if (tokens.refresh_token) { - tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName; + tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName + '_' + tabId; } if (tokens?.idTokenPayload?.nonce && currentDatabase.nonce != null ) { tokens.idTokenPayload.nonce = - TOKEN.NONCE_TOKEN + '_' + configurationName; + TOKEN.NONCE_TOKEN + '_' + configurationName + '_' + tabId; } port.postMessage({ tokens, @@ -438,17 +457,17 @@ const handleMessage = async (event: ExtendableMessageEvent) => { return; } case 'setState': { - currentDatabase.state = data.data.state; + currentDatabase.state[tabId] = data.data.state; port.postMessage({ configurationName }); return; } case 'getState': { - const state = currentDatabase.state; + const state = currentDatabase.state[tabId]; port.postMessage({ configurationName, state }); return; } case 'setCodeVerifier': { - currentDatabase.codeVerifier = data.data.codeVerifier; + currentDatabase.codeVerifier[tabId] = data.data.codeVerifier; port.postMessage({ configurationName }); return; } @@ -457,7 +476,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { configurationName, codeVerifier: currentDatabase.codeVerifier != null - ? TOKEN.CODE_VERIFIER + '_' + configurationName + ? TOKEN.CODE_VERIFIER + '_' + configurationName + '_' + tabId : null, }); return; @@ -475,13 +494,13 @@ const handleMessage = async (event: ExtendableMessageEvent) => { case 'setNonce': { const nonce = data.data.nonce; if (nonce) { - currentDatabase.nonce = nonce; + currentDatabase.nonce[tabId] = nonce; } port.postMessage({ configurationName }); return; } case 'getNonce': { - const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName; + const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName + '_' + tabId const nonce = currentDatabase.nonce ? keyNonce : null; port.postMessage({ configurationName, nonce }); return; diff --git a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts index 186fff848..6480daaf0 100644 --- a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts +++ b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts @@ -7,15 +7,16 @@ const oidcConfigDefaults = { configurationName: '', tokens: null, status: null, - state: null, - codeVerifier: null, - nonce: null, + state: {}, + codeVerifier: {}, + nonce: {}, hideAccessToken: false, convertAllRequestsToCorsExceptNavigate: true, setAccessTokenToNavigateRequests: true, demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, + allowMultiTabLogin: true } const oidcServerConfigDefault = { diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index dd687f4a1..0b755f467 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -8,6 +8,7 @@ export type DomainDetails = { demonstratingProofOfPossession?:boolean; demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent?:boolean; demonstratingProofOfPossessionConfiguration?: DemonstratingProofOfPossessionConfiguration; + allowMultiTabLogin?: boolean; } export interface DemonstratingProofOfPossessionConfiguration { @@ -60,6 +61,7 @@ export type MessageData = { export type MessageEventData = { configurationName: string; + tabId: string; type: MessageEventType; data: MessageData; } @@ -73,9 +75,9 @@ export type OidcConfig = { configurationName: string; tokens: Tokens | null; status: Status; - state: string | null; - codeVerifier: string | null; - nonce: Nonce; + state: Record; + codeVerifier: Record; + nonce: Record; oidcServerConfiguration: OidcServerConfiguration | null; oidcConfiguration?: OidcConfiguration; sessionState?: string | null; @@ -86,6 +88,7 @@ export type OidcConfig = { demonstratingProofOfPossessionNonce: string | null; demonstratingProofOfPossessionJwkJson: string | null; demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: boolean; + allowMultiTabLogin: boolean; } export type IdTokenPayload = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts index d976b355f..262e10ff4 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts @@ -15,8 +15,8 @@ describe('replaceCodeVerifier should', () => { describe('extractConfigurationNameFromCodeVerifier should', () => { it.each([ - { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default", expected: 'default' }, - { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_youhou&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback", expected: 'youhou' }, + { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default_tab1", expected: ['default', 'tab1'] }, + { body: "code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_youhou_tab2&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback", expected: ['youhou', 'tab2'] }, ])('inject new codeVerifier', async ({ body, expected }) => { const configurationName = extractConfigurationNameFromCodeVerifier(body); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index b4531819a..1b64601db 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -39,9 +39,9 @@ describe('domains', () => { configurationName: 'config', tokens: {} as Tokens, status: 'NOT_CONNECTED', - state: null, - codeVerifier: null, - nonce: null, + state: {}, + codeVerifier: {}, + nonce: {}, oidcServerConfiguration: { authorizationEndpoint: 'https://demo.duendesoftware.com/connect/authorize', issuer: 'https://demo.duendesoftware.com', @@ -56,6 +56,7 @@ describe('domains', () => { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, + allowMultiTabLogin: true }, }; }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index fd960ba65..7d68ff316 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -116,9 +116,9 @@ class OidcConfigBuilder { configurationName: '', tokens: null, status: 'NOT_CONNECTED', - state: '', - codeVerifier: '', - nonce: null, + state: { tab1: '' }, + codeVerifier: { tab1: '' }, + nonce: { tab1: null }, oidcServerConfiguration: null, oidcConfiguration: undefined, sessionState: null, @@ -130,15 +130,16 @@ class OidcConfigBuilder { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, + allowMultiTabLogin: true }; public withTestingDefault(): OidcConfigBuilder { this.oidcConfig.configurationName = 'test'; this.oidcConfig.tokens = new TokenBuilder().withNonExpiredToken().build(); this.oidcConfig.status = 'NOT_CONNECTED'; - this.oidcConfig.state = 'state'; - this.oidcConfig.codeVerifier = 'codeVerifier'; - this.oidcConfig.nonce = null; + this.oidcConfig.state = { tab1: 'state' }; + this.oidcConfig.codeVerifier = { tab1: 'codeVerifier' }; + this.oidcConfig.nonce = { tab1: null }; this.oidcConfig.oidcConfiguration = new OidcConfigurationBuilder().build(); this.oidcConfig.oidcServerConfiguration = new OidcServerConfigBuilder() .withTestingDefault() @@ -170,17 +171,17 @@ class OidcConfigBuilder { } public withState(state: string): OidcConfigBuilder { - this.oidcConfig.state = state; + this.oidcConfig.state = { tab1: state }; return this; } public withCodeVerifier(codeVerifier: string): OidcConfigBuilder { - this.oidcConfig.codeVerifier = codeVerifier; + this.oidcConfig.codeVerifier = { tab1: codeVerifier }; return this; } public withNonce(nonce: Nonce): OidcConfigBuilder { - this.oidcConfig.nonce = nonce; + this.oidcConfig.nonce = { tab1: nonce }; return this; } diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 72bf460a9..725609b77 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -97,7 +97,7 @@ describe('tokens', () => { describe('_hideTokens', () => { it.each([ - { hideAccessToken: true, expectedAccessToken: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_test', issued_at: "0", expires_in: "2" }, + { hideAccessToken: true, expectedAccessToken: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_test_tab1', issued_at: "0", expires_in: "2" }, { hideAccessToken: false, expectedAccessToken: 'test_access_token', issued_at: 0, expires_in: 2 }, ])('accesstoken will be hide $hideAccessToken result should be $expectedAccessToken', ({ hideAccessToken, expectedAccessToken, issued_at, expires_in }) => { const token = new TokenBuilder() @@ -113,7 +113,7 @@ describe('tokens', () => { .withIssuedAt(issued_at) .build(); const oidcConfiguration = new OidcConfigBuilder().withTestingDefault().withHideAccessToken(hideAccessToken).build(); - const secureTokens = _hideTokens(token, oidcConfiguration, 'test'); + const secureTokens = _hideTokens(token, oidcConfiguration, 'test', 'tab1'); expect(secureTokens.access_token).toBe(expectedAccessToken); expect(typeof secureTokens.expiresAt).toBe("number"); }); @@ -141,7 +141,7 @@ describe('tokens', () => { nonce: null, }) .build()).build(); - _hideTokens(token, oidcConfiguration, 'test'); + _hideTokens(token, oidcConfiguration, 'test', 'tab1'); expect(token.id_token).toBe("old_id_token"); }); diff --git a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts index e84f47c19..f0f175c19 100644 --- a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts +++ b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts @@ -3,12 +3,12 @@ export function replaceCodeVerifier(codeVerifier:string, newCodeVerifier:string) return codeVerifier.replace(regex, `code_verifier=${newCodeVerifier}`); } -export const extractConfigurationNameFromCodeVerifier = (chaine:string):string | null => { - const regex = /CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_([^&\s]+)/; +export const extractConfigurationNameFromCodeVerifier = (chaine:string):string[] | null => { + const regex = /CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_([^&\s]+)_([^&\s]+)/; const result = chaine.match(regex); - if (result && result.length > 1) { - return result[1]; + if (result && result.length > 2) { + return [result[1], result[2]]; } else { return null; } diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 67c7296c5..0ea1561d3 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -115,7 +115,7 @@ function extractedIssueAt(tokens: Tokens, accessTokenPayload: AccessTokenPayload return tokens.issued_at; } -function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string) { +function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string, currentTabId: string) { if (!tokens.issued_at) { const currentTimeUnixSecond = new Date().getTime() / 1000; tokens.issued_at = currentTimeUnixSecond; @@ -129,7 +129,7 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu accessTokenPayload, }; if (currentDatabaseElement.hideAccessToken) { - secureTokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName; + secureTokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName + '_' + currentTabId; } tokens.accessTokenPayload = accessTokenPayload; @@ -149,14 +149,14 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu tokens.idTokenPayload = _idTokenPayload !=null ? { ..._idTokenPayload }: null; if (_idTokenPayload && _idTokenPayload.nonce && currentDatabaseElement.nonce != null) { const keyNonce = - TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName; + TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName + '_' + currentTabId; _idTokenPayload.nonce = keyNonce; } secureTokens.idTokenPayload = _idTokenPayload; } if (tokens.refresh_token) { secureTokens.refresh_token = - TOKEN.REFRESH_TOKEN + '_' + configurationName; + TOKEN.REFRESH_TOKEN + '_' + configurationName + '_' + currentTabId; } tokens.issued_at = extractedIssueAt(tokens, accessTokenPayload, _idTokenPayload); @@ -189,12 +189,12 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu secureTokens.expiresAt = expiresAt; tokens.expiresAt = expiresAt; - const nonce = currentDatabaseElement.nonce - ? currentDatabaseElement.nonce.nonce + const nonce = currentDatabaseElement.nonce[currentTabId] + ? currentDatabaseElement.nonce[currentTabId]?.nonce : null; const { isValid, reason } = isTokensOidcValid( tokens, - nonce, + nonce as string, currentDatabaseElement.oidcServerConfiguration as OidcServerConfiguration, ); // TODO: Type assertion, could be null. if (!isValid) { @@ -222,7 +222,7 @@ function _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configu } const demonstratingProofOfPossessionNonceResponseHeader = "DPoP-Nonce"; -function hideTokens(currentDatabaseElement: OidcConfig) { +function hideTokens(currentDatabaseElement: OidcConfig, currentTabId: string) { const configurationName = currentDatabaseElement.configurationName; return (response: Response) => { if (response.status !== 200) { @@ -235,7 +235,7 @@ function hideTokens(currentDatabaseElement: OidcConfig) { } return response.json().then((tokens: Tokens) => { - const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName); + const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName, currentTabId); const body = JSON.stringify(secureTokens); return new Response(body, { status: response.status, diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 576aadcbc..73d9fa3ab 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -121,6 +121,12 @@ trustedDomains.config_with_dpop = { }*/ }; +// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) +// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. +trustedDomains.config_multi_tab_login = { + domains: ["https://demo.duendesoftware.com"], + allowMultiTabLogin: true +}; ``` The code of the demo : diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index aa47abf98..19ae12b25 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -65,7 +65,18 @@ const sendMessageAsync = (registration) => (data) : Promise => { }; export const initWorkerAsync = async(configuration, configurationName) => { - + const getTabId = () => { + const tabId = sessionStorage.getItem(`oidc.tabId.${configurationName}`); + + if (tabId) { + return tabId; + } + + const newTabId = globalThis.crypto.randomUUID(); + sessionStorage.setItem(`oidc.tabId.${configurationName}`, newTabId); + return newTabId; + } + const serviceWorkerRelativeUrl = configuration.service_worker_relative_url; if (typeof window === 'undefined' || typeof navigator === 'undefined' || !navigator.serviceWorker || !serviceWorkerRelativeUrl) { return null; @@ -89,7 +100,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { } catch (err) { return null; } - + const clearAsync = async (status) => { return sendMessageAsync(registration)({ type: 'clear', data: { status }, configurationName }); }; @@ -105,6 +116,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { }, }, configurationName, + tabId: getTabId() }); // @ts-ignore @@ -136,12 +148,14 @@ export const initWorkerAsync = async(configuration, configurationName) => { }; const setNonceAsync = (nonce) => { + const tabId = getTabId(); sessionStorage[`oidc.nonce.${configurationName}`] = nonce.nonce; - return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName }); + return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName, tabId }); }; const getNonceAsync = async () => { + const tabId = getTabId(); // @ts-ignore - const result = await sendMessageAsync(registration)({ type: 'getNonce', data: null, configurationName }); + const result = await sendMessageAsync(registration)({ type: 'getNonce', data: null, configurationName, tabId }); // @ts-ignore let nonce = result.nonce; if (!nonce) { @@ -188,7 +202,8 @@ export const initWorkerAsync = async(configuration, configurationName) => { }; const getStateAsync = async () => { - const result = await sendMessageAsync(registration)({ type: 'getState', data: null, configurationName }); + const tabId = getTabId(); + const result = await sendMessageAsync(registration)({ type: 'getState', data: null, configurationName, tabId }); // @ts-ignore let state = result.state; if (!state) { @@ -199,12 +214,14 @@ export const initWorkerAsync = async(configuration, configurationName) => { }; const setStateAsync = async (state:string) => { + const tabId = getTabId(); sessionStorage[`oidc.state.${configurationName}`] = state; - return sendMessageAsync(registration)({ type: 'setState', data: { state }, configurationName }); + return sendMessageAsync(registration)({ type: 'setState', data: { state }, configurationName, tabId }); }; const getCodeVerifierAsync = async () => { - const result = await sendMessageAsync(registration)({ type: 'getCodeVerifier', data: null, configurationName }); + const tabId = getTabId(); + const result = await sendMessageAsync(registration)({ type: 'getCodeVerifier', data: null, configurationName, tabId }); // @ts-ignore let codeVerifier = result.codeVerifier; if (!codeVerifier) { @@ -215,8 +232,9 @@ export const initWorkerAsync = async(configuration, configurationName) => { }; const setCodeVerifierAsync = async (codeVerifier:string) => { + const tabId = getTabId(); sessionStorage[`oidc.code_verifier.${configurationName}`] = codeVerifier; - return sendMessageAsync(registration)({ type: 'setCodeVerifier', data: { codeVerifier }, configurationName }); + return sendMessageAsync(registration)({ type: 'setCodeVerifier', data: { codeVerifier }, configurationName, tabId }); }; return { diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index 2a35493fb..daed92708 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -117,6 +117,12 @@ trustedDomains.config_with_dpop = { }*/ }; +// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) +// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. +trustedDomains.config_multi_tab_login = { + domains: ["https://demo.duendesoftware.com"], + allowMultiTabLogin: true +}; ``` From ddc37868dae1b3c1642651aa4b919e391bed63bb Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jul 2024 19:35:48 +0000 Subject: [PATCH 306/565] [skip ci] Update to version 7.22.18 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index d31aad534..82f6a762d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.22.17", + "version": "7.22.18", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 34018eb9a..85f099e5b 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.22.17'; +export default '7.22.18'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 82bd15624..fdc2866a0 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.22.17", + "version": "7.22.18", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 34018eb9a..85f099e5b 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.22.17'; +export default '7.22.18'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 4b3593fd0..d72d01592 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.22.17", + "version": "7.22.18", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 4ca142efe9d32cc0900cbb618f2106df8922b1bb Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jul 2024 19:35:50 +0000 Subject: [PATCH 307/565] [skip ci] Generate changelog to version 7.22.18 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 373e36d4e..b887dbf34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.22.17 +## 7.22.18 + +- [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* + + +## v7.22.17 - [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* - [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* @@ -317,8 +322,3 @@ - [64a8df3](https://github.com/AxaFrance/oidc-client/commit/64a8df3281f95159a60e5f9ec61db315a8d20c7d) - fix(oidc-client): make locks work only ifAvailable (#1237)(alpha), 2023-12-09 by *abhilashlr* -## v7.13.6 - -- [da77bb9](https://github.com/AxaFrance/oidc-client/commit/da77bb912b61e5aad93c53e84ce4fbea2a503fb2) - build(npm): bump typescript from 5.1.6 to 5.3.3 (#1232), 2023-12-07 by *dependabot[bot]* - - From cd2f57edb99e04495b9884723cd05277a45aad43 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Jul 2024 21:38:55 +0200 Subject: [PATCH 308/565] fix(demo): Update configurations.ts --- examples/react-oidc-demo/src/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index 4447f3a8b..16efca83f 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -9,7 +9,7 @@ export const configurationIdentityServer = { authority: 'https://demo.duendesoftware.com', // authority_time_cache_wellknowurl_in_second: 60* 60, refresh_time_before_tokens_expiration_in_second: 40, - // service_worker_relative_url: '/OidcServiceWorker.js', + service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, // storage: localStorage, // silent_login_timeout: 3333000 From bb7bc929f7a1bc4f1d210216d89fad881056990f Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Fri, 12 Jul 2024 23:01:14 +1000 Subject: [PATCH 309/565] fix (lint): Fix all lint errors reporting by eslint. --- eslint.config.mjs | 23 ++++--- examples/oidc-client-demo/src/index.tsx | 4 +- examples/react-oidc-demo/src/App.tsx | 2 +- examples/react-oidc-demo/src/FetchUser.tsx | 2 +- examples/react-oidc-demo/src/Home.tsx | 4 +- examples/react-oidc-demo/src/MultiAuth.tsx | 2 +- examples/react-oidc-demo/src/Profile.tsx | 2 +- .../react-oidc-demo/src/configurations.ts | 4 +- .../src/override/SessionLost.component.tsx | 2 +- .../src/OidcServiceWorker.ts | 14 ++-- .../src/OidcTrustedDomains.js | 2 +- .../src/__tests__/oidcConfig.spec.ts | 65 ++++++++++--------- .../oidc-client-service-worker/src/dpop.ts | 10 +-- .../oidc-client-service-worker/src/jwt.ts | 27 ++++---- .../oidc-client-service-worker/src/types.ts | 18 ++--- .../src/utils/__tests__/codeVerifier.spec.ts | 2 +- .../src/utils/__tests__/tokens.spec.ts | 6 +- .../src/utils/codeVerifier.ts | 2 +- .../src/utils/tokens.ts | 6 +- .../bin/copy-service-worker-files.mjs | 10 +-- packages/oidc-client/src/checkSession.ts | 6 +- packages/oidc-client/src/fetch.ts | 5 +- packages/oidc-client/src/index.ts | 19 +++--- packages/oidc-client/src/initSession.ts | 4 +- packages/oidc-client/src/initWorker.ts | 10 +-- packages/oidc-client/src/initWorkerOption.ts | 2 +- packages/oidc-client/src/jwt.ts | 27 ++++---- packages/oidc-client/src/keepSession.ts | 10 +-- packages/oidc-client/src/login.ts | 8 +-- packages/oidc-client/src/logout.spec.ts | 2 +- packages/oidc-client/src/logout.ts | 20 +++--- packages/oidc-client/src/oidc.ts | 30 ++++----- packages/oidc-client/src/oidcClient.ts | 4 +- packages/oidc-client/src/parseTokens.spec.ts | 39 +++++------ packages/oidc-client/src/parseTokens.ts | 4 +- packages/oidc-client/src/renewTokens.ts | 19 +++--- packages/oidc-client/src/requests.ts | 6 +- packages/oidc-client/src/silentLogin.ts | 2 +- packages/oidc-client/src/types.ts | 12 ++-- packages/oidc-client/src/user.ts | 2 +- packages/oidc-client/tests/setup.js | 8 +-- .../bin/copy-service-worker-files.mjs | 10 +-- packages/react-oidc/src/OidcProvider.tsx | 10 +-- packages/react-oidc/src/OidcSecure.tsx | 2 +- packages/react-oidc/src/ReactOidc.tsx | 14 ++-- packages/react-oidc/src/User.ts | 2 +- .../react-oidc/src/core/routes/OidcRoutes.tsx | 1 - packages/react-oidc/src/index.ts | 7 +- packages/react-oidc/vite.config.ts | 2 +- 49 files changed, 245 insertions(+), 249 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ccf603f77..e86569eb0 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,21 +1,22 @@ -import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; -import typescriptEslint from "@typescript-eslint/eslint-plugin"; -import simpleImportSort from "eslint-plugin-simple-import-sort"; -import testingLibrary from "eslint-plugin-testing-library"; -import react from "eslint-plugin-react"; -import prettier from "eslint-plugin-prettier"; -import tsParser from "@typescript-eslint/parser"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import js from "@eslint/js"; + +import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; import { FlatCompat } from "@eslint/eslintrc"; +import js from "@eslint/js"; +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import prettier from "eslint-plugin-prettier"; +import react from "eslint-plugin-react"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; +//import testingLibrary from "eslint-plugin-testing-library"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, - allConfig: js.configs.all + allConfig: js.configs.all, }); export default [{ @@ -74,6 +75,10 @@ export default [{ }, settings: { + env: { + browser: true, + node: true, + }, react: { version: "18", }, diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index b81c4f853..50f237b0a 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -105,9 +105,9 @@ const display = (element:any) => { // @ts-ignore window.document.getElementById('buttonxsshack').addEventListener('click',()=> { // @ts-ignore - eval(document.getElementById('xsshack').value) + eval(document.getElementById('xsshack').value); }); -} +}; // @ts-ignore export const execute = () => { diff --git a/examples/react-oidc-demo/src/App.tsx b/examples/react-oidc-demo/src/App.tsx index f80c9250f..fe54fb012 100644 --- a/examples/react-oidc-demo/src/App.tsx +++ b/examples/react-oidc-demo/src/App.tsx @@ -28,7 +28,7 @@ function reducer(state, action) { function App() { - // eslint-disable-next-line @typescript-eslint/naming-convention + const [show, setShow] = React.useState(false); const [events, dispatch] = useReducer(reducer, []); diff --git a/examples/react-oidc-demo/src/FetchUser.tsx b/examples/react-oidc-demo/src/FetchUser.tsx index e9c5206fb..ea86a2a98 100644 --- a/examples/react-oidc-demo/src/FetchUser.tsx +++ b/examples/react-oidc-demo/src/FetchUser.tsx @@ -23,7 +23,7 @@ const DisplayUserInfo = ({ fetch }) => { return () => { isMounted = false; }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); if (isLoading) { diff --git a/examples/react-oidc-demo/src/Home.tsx b/examples/react-oidc-demo/src/Home.tsx index b8b43dd5b..54398b3de 100644 --- a/examples/react-oidc-demo/src/Home.tsx +++ b/examples/react-oidc-demo/src/Home.tsx @@ -8,12 +8,12 @@ import {useNavigate} from "react-router-dom"; const html = 'Foo'; iframe.srcdoc = html; document.body.appendChild(iframe); -} +}; export const Home = () => { const { login, logout, renewTokens, isAuthenticated } = useOidc(); const{ oidcUser, oidcUserLoadingState } = useOidcUser(); - console.log(oidcUser, oidcUserLoadingState) + console.log(oidcUser, oidcUserLoadingState); const navigate = useNavigate(); const navigateProfile = () => { diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index c10070f44..94546178e 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -2,13 +2,13 @@ import { Fetch, OidcProvider, useOidc, useOidcAccessToken, useOidcIdToken } from import React, { useReducer, useState } from 'react'; import { configurationGoogle, configurationIdentityServer, configurationIdentityServerWithHash } from './configurations'; +import {FetchUserHook} from "./FetchUser"; import AuthenticatingError from './override/AuthenticateError.component'; import Authenticating from './override/Authenticating.component'; import { CallBackSuccess } from './override/Callback.component'; import Loading from './override/Loading.component'; import ServiceWorkerNotSupported from './override/ServiceWorkerNotSupported.component'; import SessionLost from './override/SessionLost.component'; -import {FetchUserHook} from "./FetchUser"; const fetchWithLogs = (fetch: Fetch) => async (...params: Parameters) => { const [url, options, ...rest] = params; diff --git a/examples/react-oidc-demo/src/Profile.tsx b/examples/react-oidc-demo/src/Profile.tsx index 73a1028eb..260030839 100644 --- a/examples/react-oidc-demo/src/Profile.tsx +++ b/examples/react-oidc-demo/src/Profile.tsx @@ -5,7 +5,7 @@ import { useOidc, useOidcAccessToken, useOidcIdToken, - useOidcUser + useOidcUser, } from '@axa-fr/react-oidc'; import React from 'react'; diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index 16efca83f..1a8f095d3 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -1,4 +1,4 @@ -import { TokenRenewMode, TokenAutomaticRenewMode } from '@axa-fr/react-oidc'; +import { TokenAutomaticRenewMode,TokenRenewMode } from '@axa-fr/react-oidc'; export const configurationIdentityServer = { client_id: 'interactive.public.short', @@ -18,7 +18,7 @@ export const configurationIdentityServer = { token_renew_mode: TokenRenewMode.access_token_invalid, token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, demonstrating_proof_of_possession: false, - preload_user_info: true + preload_user_info: true, }; export const configurationIdentityServer1 = { diff --git a/examples/react-oidc-demo/src/override/SessionLost.component.tsx b/examples/react-oidc-demo/src/override/SessionLost.component.tsx index 080e599dc..19d137da5 100644 --- a/examples/react-oidc-demo/src/override/SessionLost.component.tsx +++ b/examples/react-oidc-demo/src/override/SessionLost.component.tsx @@ -1,8 +1,8 @@ import { useOidc } from '@axa-fr/react-oidc'; import { ComponentType } from 'react'; +import {useNavigate} from "react-router-dom"; import { style } from './style.js'; -import {useNavigate} from "react-router-dom"; export const SessionLost: ComponentType = ({ configurationName }) => { const { login } = useOidc(configurationName); diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index abca232f5..4cc166946 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -1,4 +1,8 @@ import { acceptAnyDomainToken, scriptFilename, TOKEN } from './constants'; +import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; +import {getDpopConfiguration, getDpopOnlyWhenDpopHeaderPresent} from "./dpop"; +import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import { getCurrentDatabasesTokenEndpoint } from './oidcConfig'; import { Database, MessageEventData, @@ -17,10 +21,6 @@ import { import {extractConfigurationNameFromCodeVerifier, replaceCodeVerifier} from './utils/codeVerifier'; import { normalizeUrl } from './utils/normalizeUrl'; import version from './version'; -import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; -import {getDpopConfiguration, getDpopOnlyWhenDpopHeaderPresent} from "./dpop"; -import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; -import { getCurrentDatabasesTokenEndpoint } from './oidcConfig'; // @ts-ignore if (typeof trustedTypes !== 'undefined' && typeof trustedTypes.createPolicy == 'function') { @@ -132,7 +132,7 @@ const handleFetch = async (event: FetchEvent) => { } else { const authorization = originalRequest.headers.get('authorization'); - let authenticationMode = "Bearer" + let authenticationMode = "Bearer"; if (authorization ) { authenticationMode = authorization.split(" ")[0]; } @@ -184,7 +184,7 @@ const handleFetch = async (event: FetchEvent) => { const currentDbTabs = Object.keys(currentDb.state); if (currentDb?.tokens != null) { - const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(currentDb.tokens.access_token),}; + const claimsExtras = {ath: await base64urlOfHashOfASCIIEncodingAsync(currentDb.tokens.access_token)}; headers = await generateDpopAsync(originalRequest, currentDb, url, claimsExtras); for(let j = 0; j < currentDbTabs.length; j++) { @@ -401,7 +401,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { const demonstratingProofOfPossessionConfiguration = getDpopConfiguration(trustedDomains[configurationName]); if(demonstratingProofOfPossessionConfiguration != null){ if(currentDatabase.oidcConfiguration.demonstrating_proof_of_possession){ - console.warn("In service worker, demonstrating_proof_of_possession must be configured from trustedDomains file") + console.warn("In service worker, demonstrating_proof_of_possession must be configured from trustedDomains file"); } currentDatabase.demonstratingProofOfPossessionConfiguration = demonstratingProofOfPossessionConfiguration; currentDatabase.demonstratingProofOfPossessionJwkJson = await generateJwkAsync(self)(demonstratingProofOfPossessionConfiguration.generateKeyAlgorithm); diff --git a/packages/oidc-client-service-worker/src/OidcTrustedDomains.js b/packages/oidc-client-service-worker/src/OidcTrustedDomains.js index 9a31a5bbd..cc23305c5 100644 --- a/packages/oidc-client-service-worker/src/OidcTrustedDomains.js +++ b/packages/oidc-client-service-worker/src/OidcTrustedDomains.js @@ -3,7 +3,7 @@ // then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. // Domains used by OIDC server must be also declared here -// eslint-disable-next-line @typescript-eslint/no-unused-vars + const trustedDomains = { default: ['https://demo.duendesoftware.com', 'https://kdhttps.auth0.com'], config_classic: ['https://demo.duendesoftware.com'], diff --git a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts index 6480daaf0..5ebd29eb3 100644 --- a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts +++ b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts @@ -1,6 +1,7 @@ -import { describe, expect, it } from 'vitest' -import { getCurrentDatabasesTokenEndpoint } from '../oidcConfig' -import { Database } from '../types' +import { describe, expect, it } from 'vitest'; + +import { getCurrentDatabasesTokenEndpoint } from '../oidcConfig'; +import { Database } from '../types'; const oidcConfigDefaults = { demonstratingProofOfPossessionConfiguration: null, @@ -16,16 +17,16 @@ const oidcConfigDefaults = { demonstratingProofOfPossessionNonce: null, demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, - allowMultiTabLogin: true -} + allowMultiTabLogin: true, +}; const oidcServerConfigDefault = { revocationEndpoint: '', tokenEndpoint: '', issuer: '', userInfoEndpoint: '', - authorizationEndpoint: '' -} + authorizationEndpoint: '', +}; describe('getCurrentDatabasesTokenEndpoint', () => { it('should return configs with matching token endpoint', () => { @@ -51,14 +52,14 @@ describe('getCurrentDatabasesTokenEndpoint', () => { revocationEndpoint: 'https://example.net/revoke', }, }, - } + }; - const url = 'https://example.com/token' - const result = getCurrentDatabasesTokenEndpoint(database, url) + const url = 'https://example.com/token'; + const result = getCurrentDatabasesTokenEndpoint(database, url); - expect(result).toHaveLength(1) - expect(result[0]).toBe(database.config1) - }) + expect(result).toHaveLength(1); + expect(result[0]).toBe(database.config1); + }); it('should return configs with matching revocation endpoint', () => { const database = { @@ -83,14 +84,14 @@ describe('getCurrentDatabasesTokenEndpoint', () => { tokenEndpoint: 'https://example.net/token', }, }, - } + }; - const url = 'https://example.com/revoke' - const result = getCurrentDatabasesTokenEndpoint(database, url) + const url = 'https://example.com/revoke'; + const result = getCurrentDatabasesTokenEndpoint(database, url); - expect(result).toHaveLength(1) - expect(result[0]).toBe(database.config1) - }) + expect(result).toHaveLength(1); + expect(result[0]).toBe(database.config1); + }); it('should return multiple matching configs', () => { const database = { @@ -117,15 +118,15 @@ describe('getCurrentDatabasesTokenEndpoint', () => { revocationEndpoint: 'https://example.com/revoke', }, }, - } + }; - const url = 'https://example.com/token' - const result = getCurrentDatabasesTokenEndpoint(database, url) + const url = 'https://example.com/token'; + const result = getCurrentDatabasesTokenEndpoint(database, url); - expect(result).toHaveLength(2) - expect(result).toContain(database.config1) - expect(result).toContain(database.config3) - }) + expect(result).toHaveLength(2); + expect(result).toContain(database.config1); + expect(result).toContain(database.config3); + }); it('should return empty array for no matching configs', () => { const database = { @@ -143,11 +144,11 @@ describe('getCurrentDatabasesTokenEndpoint', () => { revocationEndpoint: 'https://example.org/revoke', }, }, - } + }; - const url = 'https://example.net/other' - const result = getCurrentDatabasesTokenEndpoint(database, url) + const url = 'https://example.net/other'; + const result = getCurrentDatabasesTokenEndpoint(database, url); - expect(result).toHaveLength(0) - }) -}) + expect(result).toHaveLength(0); + }); +}); diff --git a/packages/oidc-client-service-worker/src/dpop.ts b/packages/oidc-client-service-worker/src/dpop.ts index 921c9f9ad..ebebc6a05 100644 --- a/packages/oidc-client-service-worker/src/dpop.ts +++ b/packages/oidc-client-service-worker/src/dpop.ts @@ -1,12 +1,12 @@ -import {Domain, DomainDetails} from "./types.js"; -import {defaultDemonstratingProofOfPossessionConfiguration} from "./jwt"; +import {defaultDemonstratingProofOfPossessionConfiguration} from "./jwt"; +import {Domain, DomainDetails} from "./types.js"; const isDpop= (trustedDomain: Domain[] | DomainDetails) : boolean => { if (Array.isArray(trustedDomain)) { return false; } return trustedDomain.demonstratingProofOfPossession ?? false; -} +}; export const getDpopConfiguration = (trustedDomain: Domain[] | DomainDetails) => { @@ -19,7 +19,7 @@ export const getDpopConfiguration = (trustedDomain: Domain[] | DomainDetails) => } return trustedDomain.demonstratingProofOfPossessionConfiguration ?? defaultDemonstratingProofOfPossessionConfiguration; -} +}; export const getDpopOnlyWhenDpopHeaderPresent = (trustedDomain: Domain[] | DomainDetails) => { @@ -32,4 +32,4 @@ export const getDpopOnlyWhenDpopHeaderPresent = (trustedDomain: Domain[] | Domai } return trustedDomain.demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent ?? true; -} \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/oidc-client-service-worker/src/jwt.ts b/packages/oidc-client-service-worker/src/jwt.ts index ef7665f19..43c356591 100644 --- a/packages/oidc-client-service-worker/src/jwt.ts +++ b/packages/oidc-client-service-worker/src/jwt.ts @@ -47,7 +47,7 @@ export const uint8ToUrlBase64 =(uint8: Uint8Array) => { bin += String.fromCharCode(code); }); return binToUrlBase64(bin); -} +}; // UCS-2 String to URL-Safe Base64 // @@ -61,16 +61,16 @@ export const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingPr importKeyAlgorithm: { name: 'ECDSA', namedCurve: 'P-256', - hash: {name: 'ES256'} + hash: {name: 'ES256'}, }, signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, generateKeyAlgorithm: { name: 'ECDSA', - namedCurve: 'P-256' + namedCurve: 'P-256', }, digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' -} + jwtHeaderAlgorithm : 'ES256', +}; // @ts-ignore @@ -101,7 +101,7 @@ const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossess protected: strToUrlBase64(JSON.stringify(headers)), // @ts-ignore // JWT "claims" are really a JSON-defined JWS "payload" - payload: strToUrlBase64(JSON.stringify(claims)) + payload: strToUrlBase64(JSON.stringify(claims)), }; // To import as EC (ECDSA, P-256, SHA-256, ES256) @@ -134,8 +134,7 @@ const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossess return `${jws.protected}.${jws.payload}.${jws.signature}`; }; -export var JWT = {sign}; - +export const JWT = {sign}; // @ts-ignore const generate = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { @@ -162,7 +161,7 @@ const neuter = jwk => { const EC = { generate, - neuter + neuter, }; // @ts-ignore const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) => { @@ -187,9 +186,9 @@ const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) // but we're only dealing with P-256 const hash = await w.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); return uint8ToUrlBase64(new Uint8Array(hash)); -} +}; -export var JWK = {thumbprint}; +export const JWK = {thumbprint}; export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { // @ts-ignore @@ -198,7 +197,7 @@ export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashe // @ts-ignore // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); return jwk; -} +}; export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk:any, method = 'POST', url: string, extrasClaims={}) => { @@ -213,10 +212,10 @@ export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demons // @ts-ignore const kid = await JWK.thumbprint(w)(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); // @ts-ignore - const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) + const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration); // console.info('JWT:', jwt); return jwt; -} +}; const guid = () => { // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 0b755f467..319d34113 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -3,8 +3,8 @@ export type DomainDetails = { oidcDomains?: Domain[]; accessTokenDomains?: Domain[]; showAccessToken: boolean; - convertAllRequestsToCorsExceptNavigate?: boolean, - setAccessTokenToNavigateRequests?: boolean, + convertAllRequestsToCorsExceptNavigate?: boolean; + setAccessTokenToNavigateRequests?: boolean; demonstratingProofOfPossession?:boolean; demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent?:boolean; demonstratingProofOfPossessionConfiguration?: DemonstratingProofOfPossessionConfiguration; @@ -12,11 +12,11 @@ export type DomainDetails = { } export interface DemonstratingProofOfPossessionConfiguration { - generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, - digestAlgorithm: AlgorithmIdentifier, - importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, - signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, - jwtHeaderAlgorithm: string + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams; + digestAlgorithm: AlgorithmIdentifier; + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm; + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams; + jwtHeaderAlgorithm: string; } export type Domain = string | RegExp; @@ -83,8 +83,8 @@ export type OidcConfig = { sessionState?: string | null; items?: MessageData; hideAccessToken: boolean; - convertAllRequestsToCorsExceptNavigate: boolean, - setAccessTokenToNavigateRequests: boolean, + convertAllRequestsToCorsExceptNavigate: boolean; + setAccessTokenToNavigateRequests: boolean; demonstratingProofOfPossessionNonce: string | null; demonstratingProofOfPossessionJwkJson: string | null; demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: boolean; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts index 262e10ff4..c46ba60db 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { replaceCodeVerifier, extractConfigurationNameFromCodeVerifier } from '../codeVerifier'; +import { extractConfigurationNameFromCodeVerifier,replaceCodeVerifier } from '../codeVerifier'; describe('replaceCodeVerifier should', () => { it.each([ diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 725609b77..f62911e58 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -39,7 +39,7 @@ describe('tokens', () => { "name": "ƴǢÁìÇ 小名-ホルヘ", "preferred_username": "testingcharacters@inventedmail.com", "given_name": "ƴǢÁìÇ", - "family_name": "小名-ホルヘ" + "family_name": "小名-ホルヘ", }], [ "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCI_IjoiYWE_In0", @@ -48,8 +48,8 @@ describe('tokens', () => { "iat": 1516239022, "name": "John Doe", "sub": "1234567890", - } - ] + }, + ], ])('parseJwtShouldExtractData', (claimsPart, expectedResult) => { it('should parseJwtShouldExtractData ', async () => { const result = parseJwt(claimsPart); diff --git a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts index f0f175c19..d71749c9e 100644 --- a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts +++ b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts @@ -12,4 +12,4 @@ export const extractConfigurationNameFromCodeVerifier = (chaine:string):string[] } else { return null; } -} +}; diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 0ea1561d3..a489bb812 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -6,7 +6,7 @@ import { OidcConfig, OidcConfiguration, OidcServerConfiguration, - Tokens + Tokens, } from '../types'; import {countLetter} from './strings'; @@ -14,7 +14,7 @@ export const parseJwt = (payload: string) => { return JSON.parse( b64DecodeUnicode(payload.replaceAll(/-/g, '+').replaceAll(/_/g, '/')), ); -} +}; function b64DecodeUnicode(str: string) { return decodeURIComponent( Array.prototype.map @@ -240,7 +240,7 @@ function hideTokens(currentDatabaseElement: OidcConfig, currentTabId: string) { return new Response(body, { status: response.status, statusText: response.statusText, - headers: newHeaders + headers: newHeaders, }); }); }; diff --git a/packages/oidc-client/bin/copy-service-worker-files.mjs b/packages/oidc-client/bin/copy-service-worker-files.mjs index 599985339..9553fbb25 100644 --- a/packages/oidc-client/bin/copy-service-worker-files.mjs +++ b/packages/oidc-client/bin/copy-service-worker-files.mjs @@ -1,5 +1,7 @@ -import path from 'path'; +/* global console, process */ +/* eslint no-console: "off" */ import fs from 'fs'; +import path from 'path'; import { fileURLToPath } from 'url'; try { @@ -24,7 +26,7 @@ try { } await fs.promises.copyFile(src, dest); console.log(`[${script_prefix}:copy] ${dest}`); - return true + return true; }; const fileExists = (path) => { @@ -53,13 +55,13 @@ try { const success = await copyFile( path.join(srcDir, file.fileName), path.join(destinationDir, file.fileName), - file.overwrite + file.overwrite, ); if(!success){ await copyFile( path.join(srcDirFallback, file.fileName), path.join(destinationDir, file.fileName), - file.overwrite + file.overwrite, ); } } diff --git a/packages/oidc-client/src/checkSession.ts b/packages/oidc-client/src/checkSession.ts index c313c8c99..496b9cc67 100644 --- a/packages/oidc-client/src/checkSession.ts +++ b/packages/oidc-client/src/checkSession.ts @@ -1,9 +1,9 @@ import { CheckSessionIFrame } from './checkSessionIFrame.js'; +import Oidc from "./oidc"; import { _silentLoginAsync, SilentLoginResponse } from './silentLogin.js'; import { OidcConfiguration } from './types.js'; -import Oidc from "./oidc"; -// eslint-disable-next-line @typescript-eslint/ban-types + export const startCheckSessionAsync = (oidc:Oidc, oidcDatabase:any, configuration :OidcConfiguration) => (checkSessionIFrameUri, clientId, sessionState, isSilentSignin = false) => { const silentLoginAsync = (extras, state = undefined, scope = undefined):Promise => { return _silentLoginAsync(oidc.configurationName, configuration, oidc.publishEvent.bind(oidc))(extras, state, scope); @@ -39,7 +39,7 @@ export const startCheckSessionAsync = (oidc:Oidc, oidcDatabase:any, configuratio } else { console.debug('SessionMonitor._callback: Different subject signed into OP:', iFrameIdTokenPayload.sub); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars + }).catch(async (e) => { console.warn('SessionMonitor._callback: Silent login failed, logging out other tabs:', e); // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts index 1d33fc86d..e93ee2a99 100644 --- a/packages/oidc-client/src/fetch.ts +++ b/packages/oidc-client/src/fetch.ts @@ -1,6 +1,5 @@ -import {Fetch} from "./types"; -import {OidcClient} from "./oidcClient"; -import {getValidTokenAsync} from "./parseTokens"; +import {getValidTokenAsync} from "./parseTokens"; +import {Fetch} from "./types"; // @ts-ignore export const fetchWithTokens = (fetch: Fetch, oidcClient: Oidc | null, demonstrating_proof_of_possession:boolean=false) : Fetch => async (...params: Parameters) :Promise => { diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index a5f0906b2..b95075424 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -1,21 +1,18 @@ +export type { ILOidcLocation } from './location.js'; +export { OidcLocation } from './location.js'; export { getFetchDefault } from './oidc.js'; -export { TokenRenewMode } from './parseTokens.js'; -export { getParseQueryStringFromLocation, getPath } from './route-utils'; - +export type { OidcUserInfo } from './oidcClient.js'; +export { OidcClient } from './oidcClient.js'; export type { - Tokens + Tokens, } from './parseTokens.js'; - +export { TokenRenewMode } from './parseTokens.js'; +export { getParseQueryStringFromLocation, getPath } from './route-utils'; export type { AuthorityConfiguration, Fetch, OidcConfiguration, - StringMap + StringMap, } from './types.js'; - -export { OidcLocation } from './location.js'; -export type { ILOidcLocation } from './location.js'; export { TokenAutomaticRenewMode } from './types.js'; -export { OidcClient } from './oidcClient.js'; -export type { OidcUserInfo } from './oidcClient.js'; diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index e01b591ae..46d5219a1 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -46,7 +46,7 @@ export const initSession = (configurationName, storage = sessionStorage) => { storage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; }; - const getDemonstratingProofOfPossessionNonce = () => { + const getDemonstratingProofOfPossessionNonce = (): string => { return storage[`oidc.dpop_nonce.${configurationName}`]; }; @@ -57,7 +57,7 @@ export const initSession = (configurationName, storage = sessionStorage) => { return JSON.stringify({ tokens: JSON.parse(storage[`oidc.${configurationName}`]).tokens }); }; - let getLoginParamsCache = {}; + const getLoginParamsCache = {}; const setLoginParams = (data) => { getLoginParamsCache[configurationName] = data; storage[`oidc.login.${configurationName}`] = JSON.stringify(data); diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 19ae12b25..80999d2b5 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -1,8 +1,8 @@ +import {ILOidcLocation} from "./location"; import { parseOriginalTokens } from './parseTokens.js'; import timer from './timer.js'; import { OidcConfiguration } from './types.js'; import codeVersion from './version.js'; -import {ILOidcLocation} from "./location"; let keepAliveServiceWorkerTimeoutId = null; let keepAliveController; @@ -36,14 +36,14 @@ const isServiceWorkerProxyActiveAsync = (service_worker_keep_alive_path='/') => }).catch(error => { console.log(error); }); }; -export const defaultServiceWorkerUpdateRequireCallback = (location:ILOidcLocation) => async (registration: any, stopKeepAlive: Function) => { +export const defaultServiceWorkerUpdateRequireCallback = (location:ILOidcLocation) => async (registration: any, stopKeepAlive: ()=>void) => { stopKeepAlive(); await registration.update(); const isSuccess = await registration.unregister(); - console.log(`Service worker unregistering ${isSuccess}`) + console.log(`Service worker unregistration ${isSuccess ? 'successful' : 'failed'}`); await sleepAsync({milliseconds: 2000}); location.reload(); -} +}; @@ -165,7 +165,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { return { nonce }; }; - let getLoginParamsCache = {}; + const getLoginParamsCache = {}; const setLoginParams = (data) => { getLoginParamsCache[configurationName] = data; localStorage[`oidc.login.${configurationName}`] = JSON.stringify(data); diff --git a/packages/oidc-client/src/initWorkerOption.ts b/packages/oidc-client/src/initWorkerOption.ts index dc1ddabed..0307b696a 100644 --- a/packages/oidc-client/src/initWorkerOption.ts +++ b/packages/oidc-client/src/initWorkerOption.ts @@ -130,4 +130,4 @@ export const activateServiceWorker : ServiceWorkerActivate = () : boolean =>{ const operatingSystem = getOperatingSystem(navigator); return !excludeOs(operatingSystem); -} \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index 4aadb41fe..fcb1b8f4d 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -46,7 +46,7 @@ export const uint8ToUrlBase64 =(uint8: Uint8Array) => { bin += String.fromCharCode(code); }); return binToUrlBase64(bin); -} +}; // UCS-2 String to URL-Safe Base64 // @@ -60,16 +60,16 @@ export const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingPr importKeyAlgorithm: { name: 'ECDSA', namedCurve: 'P-256', - hash: {name: 'ES256'} + hash: {name: 'ES256'}, }, signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, generateKeyAlgorithm: { name: 'ECDSA', - namedCurve: 'P-256' + namedCurve: 'P-256', }, digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' -} + jwtHeaderAlgorithm : 'ES256', +}; // @ts-ignore @@ -100,7 +100,7 @@ const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossess protected: strToUrlBase64(JSON.stringify(headers)), // @ts-ignore // JWT "claims" are really a JSON-defined JWS "payload" - payload: strToUrlBase64(JSON.stringify(claims)) + payload: strToUrlBase64(JSON.stringify(claims)), }; // To import as EC (ECDSA, P-256, SHA-256, ES256) @@ -133,8 +133,7 @@ const sign = (w:any) => async (jwk, headers, claims, demonstratingProofOfPossess return `${jws.protected}.${jws.payload}.${jws.signature}`; }; -export var JWT = {sign}; - +export const JWT = {sign}; // @ts-ignore const generate = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { @@ -161,7 +160,7 @@ const neuter = jwk => { const EC = { generate, - neuter + neuter, }; // @ts-ignore const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) => { @@ -186,9 +185,9 @@ const thumbprint = (w:any) => async (jwk, digestAlgorithm: AlgorithmIdentifier) // but we're only dealing with P-256 const hash = await w.crypto.subtle.digest(digestAlgorithm, strToUint8(sortedPub)); return uint8ToUrlBase64(new Uint8Array(hash)); -} +}; -export var JWK = {thumbprint}; +export const JWK = {thumbprint}; export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams) => { // @ts-ignore @@ -197,7 +196,7 @@ export const generateJwkAsync = (w:any) => async (generateKeyAlgorithm: RsaHashe // @ts-ignore // console.info('Public Key:', JSON.stringify(EC.neuter(jwk))); return jwk; -} +}; export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration) => async (jwk, method = 'POST', url: string, extrasClaims={}) => { @@ -212,10 +211,10 @@ export const generateJwtDemonstratingProofOfPossessionAsync = (w:any) => (demons // @ts-ignore const kid = await JWK.thumbprint(w)(jwk, demonstratingProofOfPossessionConfiguration.digestAlgorithm); // @ts-ignore - const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration) + const jwt = await JWT.sign(w)(jwk, { kid: kid }, claims, demonstratingProofOfPossessionConfiguration); // console.info('JWT:', jwt); return jwt; -} +}; const guid = () => { // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or diff --git a/packages/oidc-client/src/keepSession.ts b/packages/oidc-client/src/keepSession.ts index e863229cd..4f18b36ea 100644 --- a/packages/oidc-client/src/keepSession.ts +++ b/packages/oidc-client/src/keepSession.ts @@ -1,9 +1,9 @@ -import {initWorkerAsync} from "./initWorker"; -import {autoRenewTokens} from "./renewTokens"; +import {eventNames} from "./events"; import {initSession} from "./initSession"; -import {setTokens} from "./parseTokens"; -import {eventNames} from "./events"; +import {initWorkerAsync} from "./initWorker"; import Oidc from "./oidc"; +import {setTokens} from "./parseTokens"; +import {autoRenewTokens} from "./renewTokens"; export const tryKeepSessionAsync = async (oidc: Oidc) =>{ @@ -81,4 +81,4 @@ export const tryKeepSessionAsync = async (oidc: Oidc) =>{ oidc.publishEvent(eventNames.tryKeepExistingSessionAsync_error, 'tokens inside ServiceWorker are invalid'); return false; } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 95547c304..54d3ab234 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -2,16 +2,16 @@ import {generateRandom} from './crypto.js'; import {eventNames} from './events.js'; import {initSession} from './initSession.js'; import {initWorkerAsync} from './initWorker.js'; +import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; +import {ILOidcLocation} from "./location"; +import Oidc from "./oidc"; import {isTokensOidcValid} from './parseTokens.js'; import { performAuthorizationRequestAsync, - performFirstTokenRequestAsync + performFirstTokenRequestAsync, } from './requests.js'; import {getParseQueryStringFromLocation} from './route-utils.js'; import {OidcConfiguration, StringMap} from './types.js'; -import {generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync} from "./jwt"; -import {ILOidcLocation} from "./location"; -import Oidc from "./oidc"; // eslint-disable-next-line @typescript-eslint/ban-types export const defaultLoginAsync = (configurationName:string, configuration:OidcConfiguration, publishEvent :(string, any)=>void, initAsync:Function, oidcLocation: ILOidcLocation) => (callbackPath:string = undefined, extras:StringMap = null, isSilentSignin = false, scope:string = undefined) => { diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index c6b9e8ff5..06e9317bd 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -2,8 +2,8 @@ import { describe, expect, it, vi } from 'vitest'; +import { ILOidcLocation } from "./location"; import { logoutAsync } from "./logout"; -import {ILOidcLocation, OidcLocation} from "./location"; describe('Logout test suite', () => { const expectedFinalUrl = "http://api/connect/endsession?id_token_hint=abcd&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out"; diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index d422a9a8d..8c1c838be 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -1,10 +1,10 @@ +import {eventNames} from "./events"; import { initSession } from './initSession.js'; import { initWorkerAsync } from './initWorker.js'; +import {ILOidcLocation} from "./location"; import { performRevocationRequestAsync, TOKEN_TYPE } from './requests.js'; import timer from './timer.js'; import { StringMap } from './types.js'; -import {ILOidcLocation} from "./location"; -import {eventNames} from "./events"; export const oidcLogoutTokens = { access_token: 'access_token', @@ -23,7 +23,7 @@ const extractExtras = (extras: StringMap, postKey: string):StringMap => { return postExtras; } return postExtras; -} +}; const keepExtras = (extras: StringMap):StringMap => { const postExtras : StringMap = {}; @@ -36,7 +36,7 @@ const keepExtras = (extras: StringMap):StringMap => { return postExtras; } return postExtras; -} +}; export const destroyAsync = (oidc) => async (status) => { timer.clearTimeout(oidc.timeoutId); @@ -70,7 +70,7 @@ export const logoutAsync = (oidc, if (callbackPathOrUrl) { isUri = callbackPathOrUrl.includes('https://') || callbackPathOrUrl.includes('http://'); } - const url = isUri ? callbackPathOrUrl : oicLocation.getOrigin() + path + const url = isUri ? callbackPathOrUrl : oicLocation.getOrigin() + path; // @ts-ignore const idToken = oidc.tokens ? oidc.tokens.idToken : ''; try { @@ -105,12 +105,10 @@ export const logoutAsync = (oidc, console.warn('logoutAsync: error when revoking tokens, if the error persist, you ay configure property logout_tokens_to_invalidate from configuration to avoid this error'); console.warn(exception); } - // @ts-ignore - const sub = oidc.tokens && oidc.tokens.idTokenPayload ? oidc.tokens.idTokenPayload.sub : null; - - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const sub = oidc.tokens?.idTokenPayload?.sub ?? null; + await oidc.destroyAsync('LOGGED_OUT'); - for (const [key, itemOidc] of Object.entries(oidcDatabase)) { + for (const [, itemOidc] of Object.entries(oidcDatabase)) { if (itemOidc !== oidc) { // @ts-ignore await oidc.logoutSameTabAsync(oidc.configuration.client_id, sub); @@ -120,7 +118,7 @@ export const logoutAsync = (oidc, } const oidcExtras = extractExtras(extras, ':oidc'); - let noReload = oidcExtras && oidcExtras['no_reload'] === 'true'; + const noReload = oidcExtras && oidcExtras['no_reload'] === 'true'; if(noReload) { return; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 59f6d2532..184257824 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -1,14 +1,22 @@ import {startCheckSessionAsync as defaultStartCheckSessionAsync} from './checkSession.js'; import {CheckSessionIFrame} from './checkSessionIFrame.js'; +import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; import {eventNames} from './events.js'; import {initSession} from './initSession.js'; -import {defaultServiceWorkerUpdateRequireCallback, initWorkerAsync, sleepAsync} from './initWorker.js'; +import {defaultServiceWorkerUpdateRequireCallback, initWorkerAsync } from './initWorker.js'; +import {activateServiceWorker} from "./initWorkerOption"; +import { + defaultDemonstratingProofOfPossessionConfiguration, + generateJwtDemonstratingProofOfPossessionAsync, +} from "./jwt"; +import {tryKeepSessionAsync} from "./keepSession"; +import {ILOidcLocation, OidcLocation} from "./location"; import {defaultLoginAsync, loginCallbackAsync} from './login.js'; import {destroyAsync, logoutAsync} from './logout.js'; -import {TokenRenewMode, Tokens,} from './parseTokens.js'; +import {TokenRenewMode, Tokens} from './parseTokens.js'; import { autoRenewTokens, - renewTokensAndStartTimerAsync + renewTokensAndStartTimerAsync, } from './renewTokens.js'; import {fetchFromIssuer} from './requests.js'; import {getParseQueryStringFromLocation} from './route-utils.js'; @@ -16,14 +24,6 @@ import defaultSilentLoginAsync from './silentLogin.js'; import timer from './timer.js'; import {AuthorityConfiguration, Fetch, OidcConfiguration, StringMap, TokenAutomaticRenewMode} from './types.js'; import {userInfoAsync} from './user.js'; -import {base64urlOfHashOfASCIIEncodingAsync} from "./crypto"; -import { - defaultDemonstratingProofOfPossessionConfiguration, - generateJwtDemonstratingProofOfPossessionAsync -} from "./jwt"; -import {ILOidcLocation, OidcLocation} from "./location"; -import {activateServiceWorker} from "./initWorkerOption"; -import {tryKeepSessionAsync} from "./keepSession"; @@ -305,20 +305,18 @@ Please checkout that you are using OIDC hook inside a { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -29,9 +29,9 @@ describe('ParseTokens test Suite', () => { issuedAt, }, configuration: { token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticBeforeTokenExpiration}, - renewTokensAsync: async (extras: StringMap) => { + renewTokensAsync: async (_extras: StringMap) => { await sleepAsync({milliseconds:10}); - } + }, }; const result = await getValidTokenAsync(oidc, 1, 1); expect(result.isTokensValid).toEqual(expectIsValidToken); @@ -47,7 +47,7 @@ describe('ParseTokens test Suite', () => { "name": "ƴǢÁìÇ 小名-ホルヘ", "preferred_username": "testingcharacters@inventedmail.com", "given_name": "ƴǢÁìÇ", - "family_name": "小名-ホルヘ" + "family_name": "小名-ホルヘ", }], [ "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCI_IjoiYWE_In0", @@ -56,8 +56,8 @@ describe('ParseTokens test Suite', () => { "iat": 1516239022, "name": "John Doe", "sub": "1234567890", - } - ] + }, + ], ])('parseJwtShouldExtractData', (claimsPart, expectedResult) => { it('should parseJwtShouldExtractData ', async () => { const result = parseJwt(claimsPart); @@ -74,14 +74,14 @@ describe('ParseTokens test Suite', () => { "token_type": "Bearer", "expires_in": "900", // Here a string instead of a number "refresh_token": refresh_token, - "id_token": id_token + "id_token": id_token, }], [{ "access_token": access_token, "token_type": "Bearer", "expires_in": 900, "refresh_token": refresh_token, - "id_token": id_token + "id_token": id_token, }], [{ "access_token": access_token, @@ -89,7 +89,7 @@ describe('ParseTokens test Suite', () => { "expires_in": 900, "expiresAt": 1609987454, // Here expiresAt that come from Service Worker "refresh_token": refresh_token, - "id_token": id_token + "id_token": id_token, }], ])('getValidTokenAsync', (tokens) => { it('should parseOriginalTokens', async () => { @@ -141,10 +141,10 @@ describe('ParseTokens test Suite', () => { "profile", "email", "api", - "offline_access" + "offline_access", ], "amr": [ - "pwd" + "pwd", ], "client_id": "interactive.public.short", "sub": "2", @@ -153,7 +153,7 @@ describe('ParseTokens test Suite', () => { "name": "Bob Smith", "email": "BobSmith@email.com", "sid": "345ABC88E6E50AF1273ED415A7FD6A23", - "jti": "E3CF3853D77AC90ABC774266CD381C43" + "jti": "E3CF3853D77AC90ABC774266CD381C43", }, "idTokenPayload": { "iss": "https://demo.duendesoftware.com", @@ -162,17 +162,17 @@ describe('ParseTokens test Suite', () => { "exp": 1706540558, "aud": "interactive.public.short", "amr": [ - "pwd" + "pwd", ], "nonce": "NONCE_SECURED_BY_OIDC_SERVICE_WORKER_default", "at_hash": "NZvaGGYbXhzTMZUqR9MbNg", "sid": "345ABC88E6E50AF1273ED415A7FD6A23", "sub": "2", "auth_time": 1706531665, - "idp": "local" + "idp": "local", }, - "expiresAt": 1706540333 - } + "expiresAt": 1706540333, + }; describe.each([ [testTokens, null, TokenRenewMode.access_token_invalid, () => {}], @@ -182,11 +182,8 @@ describe('ParseTokens test Suite', () => { }], ])('setTokens', (tokens, oldTokens, tokenRenewMode, validationFunction) => { it('should setTokens return updatedTokens' , async () => { - const oidc = { - idTokenPayload, - }; const newTokens = setTokens(tokens, oldTokens, tokenRenewMode); - validationFunction(newTokens) + validationFunction(newTokens); }); }); diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index 82d2bfeff..1823418b7 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -1,5 +1,5 @@ import {sleepAsync} from './initWorker.js'; -import {OidcConfiguration, StringMap, TokenAutomaticRenewMode} from "./types"; +import {StringMap, TokenAutomaticRenewMode} from "./types"; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); @@ -175,7 +175,7 @@ export type ValidToken = { export interface OidcToken{ tokens?: Tokens; - configuration: { token_automatic_renew_mode?: TokenAutomaticRenewMode; }, + configuration: { token_automatic_renew_mode?: TokenAutomaticRenewMode }; renewTokensAsync: (extras: StringMap) => Promise; } diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 1fa25211d..f4d2edbb8 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -1,12 +1,12 @@ +import {eventNames} from "./events"; import {initSession} from './initSession.js'; import {initWorkerAsync, sleepAsync} from './initWorker.js'; import Oidc from './oidc.js'; import {computeTimeLeft, isTokensOidcValid, setTokens, Tokens} from './parseTokens.js'; +import {performTokenRequestAsync} from "./requests"; +import {_silentLoginAsync} from "./silentLogin"; import timer from './timer.js'; import {OidcConfiguration, StringMap, TokenAutomaticRenewMode} from './types.js'; -import {_silentLoginAsync} from "./silentLogin"; -import {performTokenRequestAsync} from "./requests"; -import {eventNames} from "./events"; async function syncTokens(oidc:Oidc, forceRefresh: boolean, extras: StringMap) { const updateTokens = (tokens) => { @@ -40,7 +40,7 @@ const loadLatestTokensAsync = async (oidc:Oidc, configuration:OidcConfiguration) tokens = setTokens(tokens, oidc.tokens, configuration.token_renew_mode); return tokens; } -} +}; export async function renewTokensAndStartTimerAsync(oidc, forceRefresh = false, extras:StringMap = null) { @@ -92,7 +92,7 @@ export const synchroniseTokensStatus ={ TOKENS_VALID:'TOKENS_VALID', TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID: 'TOKEN_UPDATED_BY_ANOTHER_TAB_TOKENS_VALID', LOGOUT_FROM_ANOTHER_TAB: 'LOGOUT_FROM_ANOTHER_TAB', - REQUIRE_SYNC_TOKENS: 'REQUIRE_SYNC_TOKENS' + REQUIRE_SYNC_TOKENS: 'REQUIRE_SYNC_TOKENS', }; export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConfiguration, configurationName: string, currentTokens: Tokens, forceRefresh = false) => { @@ -122,7 +122,9 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf nonce = await serviceWorker.getNonceAsync(); } else { const session = initSession(configurationName, configuration.storage ?? sessionStorage); - let { tokens, status } = await session.initAsync(); + const initAsyncResponse = await session.initAsync(); + let { tokens } = initAsyncResponse; + const { status } = initAsyncResponse; if(tokens){ tokens = setTokens(tokens, oidc.tokens, configuration.token_renew_mode); } @@ -145,7 +147,7 @@ export const syncTokensInfoAsync = (oidc: Oidc) => async (configuration:OidcConf return { tokens: currentTokens, status: 'FORCE_REFRESH', nonce }; } return { tokens: currentTokens, status, nonce }; -} +}; const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = false, extras:StringMap = null, updateTokens) =>{ @@ -159,7 +161,6 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f numberTryOnline--; oidc.publishEvent(eventNames.refreshTokensAsync, { message: `wait because navigator is offline try ${numberTryOnline}` }); } - const isDocumentHidden = document.hidden; const nextIndex = index + 1; if (!extras) { extras = {}; @@ -336,4 +337,4 @@ const synchroniseTokensAsync = (oidc:Oidc) => async (index = 0, forceRefresh = f }, 1000); }); } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 5321210f0..ff1d49780 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -1,9 +1,9 @@ import { getFromCache, setCache } from './cache.js'; import { deriveChallengeAsync, generateRandom } from './crypto.js'; +import {ILOidcLocation} from "./location"; import { OidcAuthorizationServiceConfiguration } from './oidc.js'; import { parseOriginalTokens } from './parseTokens.js'; import { Fetch, StringMap } from './types.js'; -import {ILOidcLocation} from "./location"; const oneHourSecond = 60 * 60; export const fetchFromIssuer = (fetch) => async (openIdIssuerUrl: string, timeCacheSecond = oneHourSecond, storage = window.sessionStorage, timeoutMs = 10000): @@ -128,7 +128,7 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - ...headersExtras + ...headersExtras, }, body: formBodyString, }, timeoutMs); @@ -136,7 +136,7 @@ export const performTokenRequestAsync = (fetch:Fetch) => async (url:string, return { success: false, status: response.status, - demonstratingProofOfPossessionNonce:null + demonstratingProofOfPossessionNonce:null, }; } const tokens = await response.json(); diff --git a/packages/oidc-client/src/silentLogin.ts b/packages/oidc-client/src/silentLogin.ts index e5b2c1174..4f14a7c36 100644 --- a/packages/oidc-client/src/silentLogin.ts +++ b/packages/oidc-client/src/silentLogin.ts @@ -117,7 +117,7 @@ export const _silentLoginAsync = (configurationName:string, configuration:OidcCo } }; -// eslint-disable-next-line @typescript-eslint/ban-types + export const defaultSilentLoginAsync = (window, configurationName, configuration:OidcConfiguration, publishEvent :(string, any)=>void, oidc:any) => (extras:StringMap = null, scope:string = undefined) => { extras = { ...extras }; diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index a2dd29267..0aa4faf75 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -2,7 +2,7 @@ export type Fetch = typeof window.fetch; export type LogoutToken = 'access_token' | 'refresh_token'; -export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAlive:Function) => Promise; +export type ServiceWorkerUpdateRequireCallback = (registration:any, stopKeepAlive:()=>void) => Promise; export type ServiceWorkerRegister = (serviceWorkerRelativeUrl:string) => Promise; export type ServiceWorkerActivate = () => boolean; @@ -44,11 +44,11 @@ export type OidcConfiguration = { }; export interface DemonstratingProofOfPossessionConfiguration { - generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, - digestAlgorithm: AlgorithmIdentifier, - importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, - signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, - jwtHeaderAlgorithm: string + generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams; + digestAlgorithm: AlgorithmIdentifier; + importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm; + signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams; + jwtHeaderAlgorithm: string; } export interface StringMap { diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index 361b59c9b..44156795f 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -1,5 +1,5 @@ -import Oidc from "./oidc"; import {fetchWithTokens} from "./fetch"; +import Oidc from "./oidc"; export const userInfoAsync = (oidc:Oidc) => async (noCache = false, demonstrating_proof_of_possession=false) => { if (oidc.userInfo != null && !noCache) { diff --git a/packages/oidc-client/tests/setup.js b/packages/oidc-client/tests/setup.js index aece2885f..5c4174199 100644 --- a/packages/oidc-client/tests/setup.js +++ b/packages/oidc-client/tests/setup.js @@ -1,11 +1,11 @@ -import { configDefaults } from 'vitest/config' -import {defineConfig} from "vite"; +import {defineConfig} from "vite"; +import { configDefaults } from 'vitest/config'; export default defineConfig({ test: { exclude:[ ...configDefaults.exclude, - 'public/*' - ] + 'public/*', + ], }, }); \ No newline at end of file diff --git a/packages/react-oidc/bin/copy-service-worker-files.mjs b/packages/react-oidc/bin/copy-service-worker-files.mjs index 3fe82d871..3625811ee 100644 --- a/packages/react-oidc/bin/copy-service-worker-files.mjs +++ b/packages/react-oidc/bin/copy-service-worker-files.mjs @@ -1,5 +1,7 @@ -import path from 'path'; +/* global console, process */ +/* eslint no-console: "off" */ import fs from 'fs'; +import path from 'path'; import { fileURLToPath } from 'url'; try { @@ -24,7 +26,7 @@ try { } await fs.promises.copyFile(src, dest); console.log(`[${script_prefix}:copy] ${dest}`); - return true + return true; }; const fileExists = (path) => { @@ -53,13 +55,13 @@ try { const success = await copyFile( path.join(srcDir, file.fileName), path.join(destinationDir, file.fileName), - file.overwrite + file.overwrite, ); if(!success){ await copyFile( path.join(srcDirFallback, file.fileName), path.join(destinationDir, file.fileName), - file.overwrite + file.overwrite, ); } } diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index 41cd2625c..d51c70f9b 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -1,4 +1,4 @@ -import {Fetch, getFetchDefault, OidcConfiguration, OidcClient, ILOidcLocation, OidcLocation} from '@axa-fr/oidc-client'; +import {Fetch, getFetchDefault, ILOidcLocation, OidcClient, OidcConfiguration, OidcLocation} from '@axa-fr/oidc-client'; import { ComponentType, FC, PropsWithChildren, useEffect, useState } from 'react'; import AuthenticatingError from './core/default-component/AuthenticateError.component.js'; @@ -29,7 +29,7 @@ export type OidcProviderProps = { withCustomHistory?: () => CustomHistory; onEvent?: (configuration: string, name: string, data: any) => void; getFetch?: () => Fetch; - location?: ILOidcLocation + location?: ILOidcLocation; }; export type OidcSessionProps = { @@ -53,7 +53,7 @@ const OidcSession: FC> = ({ loadingComponent return () => { isMounted = false; }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [configurationName]); const LoadingComponent = loadingComponent; return ( @@ -98,7 +98,7 @@ export const OidcProvider: FC> = ({ const getOidc = (configurationName = 'default') => { return OidcClient.getOrCreate(getFetch ?? getFetchDefault, location ?? new OidcLocation())(configuration, configurationName); }; - // eslint-disable-next-line @typescript-eslint/naming-convention + const [loading, setLoading] = useState(true); const [event, setEvent] = useState(defaultEventState); const [currentConfigurationName, setConfigurationName] = useState('default'); @@ -154,7 +154,7 @@ export const OidcProvider: FC> = ({ previousOidc.removeEventSubscription(newSubscriptionId); setEvent(defaultEventState); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [configuration, configurationName]); const SessionLostComponent = sessionLostComponent; diff --git a/packages/react-oidc/src/OidcSecure.tsx b/packages/react-oidc/src/OidcSecure.tsx index 0a44df84e..65de58fc5 100644 --- a/packages/react-oidc/src/OidcSecure.tsx +++ b/packages/react-oidc/src/OidcSecure.tsx @@ -1,4 +1,4 @@ -import { StringMap, OidcClient } from '@axa-fr/oidc-client'; +import { OidcClient,StringMap } from '@axa-fr/oidc-client'; import { FC, PropsWithChildren, useEffect } from 'react'; export type OidcSecureProps = { diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 9a2aef457..1e0339d23 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,4 +1,4 @@ -import { StringMap, OidcClient, Tokens } from '@axa-fr/oidc-client'; +import { OidcClient, StringMap, Tokens } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; const defaultConfigurationName = 'default'; @@ -24,7 +24,7 @@ export const useOidc = (configurationName = defaultConfigurationName) => { let isMounted = true; const oidc = getOidc(configurationName); setIsAuthenticated(defaultIsAuthenticated(getOidc, configurationName)); - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if (name === OidcClient.eventNames.logout_from_another_tab || name === OidcClient.eventNames.logout_from_same_tab || name === OidcClient.eventNames.token_aquired) { if (isMounted) { @@ -36,7 +36,7 @@ export const useOidc = (configurationName = defaultConfigurationName) => { isMounted = false; oidc.removeEventSubscription(newSubscriptionId); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [configurationName]); const login = (callbackPath:string | undefined = undefined, extras:StringMap = null, silentLoginOnly = false) => { @@ -99,7 +99,7 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) const tokens = oidc.tokens; setAccessToken({ accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload }); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if (name === OidcClient.eventNames.token_renewed || name === OidcClient.eventNames.token_aquired || @@ -121,7 +121,7 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) isMounted = false; oidc.removeEventSubscription(newSubscriptionId); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [configurationName]); return state; }; @@ -155,7 +155,7 @@ export const useOidcIdToken = (configurationName = defaultConfigurationName) => const tokens = oidc.tokens; setIDToken({ idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload }); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if (name === OidcClient.eventNames.token_renewed || name === OidcClient.eventNames.token_aquired || @@ -173,7 +173,7 @@ export const useOidcIdToken = (configurationName = defaultConfigurationName) => isMounted = false; oidc.removeEventSubscription(newSubscriptionId); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [configurationName]); return state; }; diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index 53490a08b..0145cf68d 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -1,4 +1,4 @@ -import { type OidcUserInfo, OidcClient } from '@axa-fr/oidc-client'; +import { OidcClient,type OidcUserInfo } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; export enum OidcUserStatus { diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.tsx index 836211f7c..ab77f8ce6 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.tsx @@ -26,7 +26,6 @@ const OidcRoutes: FC> = ({ silent_login_uri, children, configurationName, withCustomHistory = null, - location, }) => { // This exist because in next.js window outside useEffect is null const pathname = window ? getPath(window.location.href) : ''; diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index ebfb520e6..e891b1c5d 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -6,9 +6,8 @@ export { OidcUserStatus, useOidcUser } from './User.js'; export type { AuthorityConfiguration, Fetch, + ILOidcLocation, OidcConfiguration, - StringMap, - ILOidcLocation -} from '@axa-fr/oidc-client'; -export { TokenRenewMode, OidcClient, TokenAutomaticRenewMode, OidcLocation } from '@axa-fr/oidc-client'; + StringMap} from '@axa-fr/oidc-client'; export type { OidcUserInfo } from '@axa-fr/oidc-client'; +export { OidcClient, OidcLocation,TokenAutomaticRenewMode, TokenRenewMode } from '@axa-fr/oidc-client'; diff --git a/packages/react-oidc/vite.config.ts b/packages/react-oidc/vite.config.ts index 7b4ed8c80..d5e468c07 100644 --- a/packages/react-oidc/vite.config.ts +++ b/packages/react-oidc/vite.config.ts @@ -19,7 +19,7 @@ export default defineConfig({ rollupOptions: { external: [ ...dependencies, - 'react/jsx-runtime' + 'react/jsx-runtime', ], output: { globals: { From 8797330ea5060a77b8d10a352ff166a33210f6aa Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Sat, 13 Jul 2024 13:21:51 +1000 Subject: [PATCH 310/565] refactor(lint): Fix minor lint issues - Imports, unused variables, - deprecated use of substr replaced with slice. - remove await on non awaitable code. --- examples/react-oidc-demo/src/MultiAuth.tsx | 2 +- packages/oidc-client-service-worker/src/OidcServiceWorker.ts | 2 +- packages/oidc-client/src/checkSession.ts | 3 +-- packages/oidc-client/src/checkSessionIFrame.ts | 2 +- packages/oidc-client/src/oidc.ts | 2 +- packages/oidc-client/src/oidcClient.ts | 2 +- packages/oidc-client/src/silentLogin.ts | 2 +- packages/react-oidc/src/core/routes/withRouter.tsx | 2 +- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/examples/react-oidc-demo/src/MultiAuth.tsx b/examples/react-oidc-demo/src/MultiAuth.tsx index 94546178e..31abce013 100644 --- a/examples/react-oidc-demo/src/MultiAuth.tsx +++ b/examples/react-oidc-demo/src/MultiAuth.tsx @@ -16,7 +16,7 @@ const fetchWithLogs = (fetch: Fetch) => async (...params: Parameters) => return await fetch(url, options, ...rest); }; -const MultiAuth = ({ configurationName, handleConfigurationChange }) => {; +const MultiAuth = ({ configurationName, handleConfigurationChange }) => { const { login, logout, isAuthenticated } = useOidc(configurationName); const { isAuthenticated: isAuthenticatedDefault } = useOidc('default'); const [fname, setFname] = useState(''); diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 4cc166946..6e3ce4f71 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -15,11 +15,11 @@ import { getDomains, hideTokens, isTokensValid, + normalizeUrl, serializeHeaders, sleep, } from './utils'; import {extractConfigurationNameFromCodeVerifier, replaceCodeVerifier} from './utils/codeVerifier'; -import { normalizeUrl } from './utils/normalizeUrl'; import version from './version'; // @ts-ignore diff --git a/packages/oidc-client/src/checkSession.ts b/packages/oidc-client/src/checkSession.ts index 496b9cc67..3a399e8be 100644 --- a/packages/oidc-client/src/checkSession.ts +++ b/packages/oidc-client/src/checkSession.ts @@ -42,8 +42,7 @@ export const startCheckSessionAsync = (oidc:Oidc, oidcDatabase:any, configuratio }).catch(async (e) => { console.warn('SessionMonitor._callback: Silent login failed, logging out other tabs:', e); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - for (const [key, oidc] of Object.entries(oidcDatabase)) { + for (const [, oidc] of Object.entries(oidcDatabase)) { // @ts-ignore await oidc.logoutOtherTabAsync(configuration.client_id, idTokenPayload.sub); } diff --git a/packages/oidc-client/src/checkSessionIFrame.ts b/packages/oidc-client/src/checkSessionIFrame.ts index 247cbb24e..60cac1e6c 100644 --- a/packages/oidc-client/src/checkSessionIFrame.ts +++ b/packages/oidc-client/src/checkSessionIFrame.ts @@ -19,7 +19,7 @@ export class CheckSessionIFrame { this._interval = interval || DefaultInterval; this._stopOnError = stopOnError; const idx = url.indexOf('/', url.indexOf('//') + 2); - this._frame_origin = url.substr(0, idx); + this._frame_origin = url.substring(0, idx); this._frame = window.document.createElement('iframe'); this._frame.style.visibility = 'hidden'; this._frame.style.position = 'absolute'; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 184257824..a9a98c644 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -316,7 +316,7 @@ Please checkout that you are using OIDC hook inside a ) => { + const listener = (e: MessageEvent) => { if (e.origin === iFrameOrigin && e.source === iframe.contentWindow ) { diff --git a/packages/react-oidc/src/core/routes/withRouter.tsx b/packages/react-oidc/src/core/routes/withRouter.tsx index dd87edb1c..0a9769320 100644 --- a/packages/react-oidc/src/core/routes/withRouter.tsx +++ b/packages/react-oidc/src/core/routes/withRouter.tsx @@ -1,7 +1,7 @@ const generateKey = () => Math.random() .toString(36) - .substr(2, 6); + .slice(2, 8); // Exported only for test export type WindowInternal = Window & { From f6cf194d9c14d7eba20f23a89e215bb9cc6cacd1 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Sat, 13 Jul 2024 13:30:08 +1000 Subject: [PATCH 311/565] refactor(silentcallback): Catch any errors in async playCallbackAsync --- .../SilentCallback.component.tsx | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx index 019110e6e..56709c298 100644 --- a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx @@ -1,17 +1,24 @@ import { OidcClient } from '@axa-fr/oidc-client'; -import { ComponentType, useEffect } from 'react'; +import { FC, useEffect } from 'react'; -const SilentCallbackManager: ComponentType = ({ configurationName }) => { +export interface SilentCallbackProps { + configurationName: string; + } + +const SilentCallbackManager: FC = ({ configurationName }) => { useEffect(() => { const playCallbackAsync = async () => { - const getOidc = OidcClient.get; - const oidc = getOidc(configurationName); + const oidc = OidcClient.get(configurationName); oidc.silentLoginCallbackAsync(); }; - playCallbackAsync(); - }, []); - return <>; + playCallbackAsync().catch(error => { + console.error('Error during silent login callback:', error); + }); + + }, [configurationName]); + + return null; }; export default SilentCallbackManager; From a082b20a943ab6322e69c00770d8ba86c9b8eaa2 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Wed, 17 Jul 2024 09:27:31 +1000 Subject: [PATCH 312/565] fix (Lint): Fix lint errors after rebase. --- packages/oidc-client-service-worker/src/OidcServiceWorker.ts | 4 ++-- .../src/utils/__tests__/domains.spec.ts | 2 +- .../src/utils/__tests__/testHelper.ts | 2 +- packages/oidc-client/src/initWorker.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index 6e3ce4f71..b4ed59238 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -356,7 +356,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, - allowMultiTabLogin: allowMultiTabLogin ?? false + allowMultiTabLogin: allowMultiTabLogin ?? false, }; currentDatabase = database[configurationName]; @@ -500,7 +500,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { return; } case 'getNonce': { - const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName + '_' + tabId + const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName + '_' + tabId; const nonce = currentDatabase.nonce ? keyNonce : null; port.postMessage({ configurationName, nonce }); return; diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 1b64601db..f265f69f3 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -56,7 +56,7 @@ describe('domains', () => { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, - allowMultiTabLogin: true + allowMultiTabLogin: true, }, }; }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 7d68ff316..4029eb6ab 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -130,7 +130,7 @@ class OidcConfigBuilder { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, - allowMultiTabLogin: true + allowMultiTabLogin: true, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 80999d2b5..79b5f325b 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -75,7 +75,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { const newTabId = globalThis.crypto.randomUUID(); sessionStorage.setItem(`oidc.tabId.${configurationName}`, newTabId); return newTabId; - } + }; const serviceWorkerRelativeUrl = configuration.service_worker_relative_url; if (typeof window === 'undefined' || typeof navigator === 'undefined' || !navigator.serviceWorker || !serviceWorkerRelativeUrl) { @@ -116,7 +116,7 @@ export const initWorkerAsync = async(configuration, configurationName) => { }, }, configurationName, - tabId: getTabId() + tabId: getTabId(), }); // @ts-ignore From 9191b0c2f95491fd12cf93673bb468d9b6d61774 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Wed, 17 Jul 2024 11:07:47 +1000 Subject: [PATCH 313/565] chore(packages): Bump packages for eslint/prettier --- package.json | 12 +- pnpm-lock.yaml | 364 ++++++++++++++++++++++++++++--------------------- 2 files changed, 215 insertions(+), 161 deletions(-) diff --git a/package.json b/package.json index 8b42615f5..4a9e52dc3 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ }, "devDependencies": { "@eslint/compat": "^1.1.1", - "@typescript-eslint/eslint-plugin": "^7.16.0", - "@typescript-eslint/parser": "^7.16.0", - "eslint": "^9.6.0", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "eslint": "^9.7.0", "eslint-config-prettier": "^9.1.0", "eslint-define-config": "^2.1.0", "eslint-plugin-import": "^2.29.1", @@ -38,13 +38,13 @@ "eslint-plugin-n": "^17.9.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-react": "^7.34.3", + "eslint-plugin-react": "^7.34.4", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-regexp": "^2.6.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-testing-library": "^6.2.2", - "prettier": "^3.3.2", - "tslib": "^2.6.2", + "prettier": "^3.3.3", + "tslib": "^2.6.3", "tsx": "4.10.5", "typescript": "5.4.5", "vitest": "1.6.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83edb275f..d83a5560a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,56 +12,56 @@ importers: specifier: ^1.1.1 version: 1.1.1 '@typescript-eslint/eslint-plugin': - specifier: ^7.16.0 - version: 7.16.0(@typescript-eslint/parser@7.16.0)(eslint@9.6.0)(typescript@5.4.5) + specifier: ^7.16.1 + version: 7.16.1(@typescript-eslint/parser@7.16.1)(eslint@9.7.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.16.0 - version: 7.16.0(eslint@9.6.0)(typescript@5.4.5) + specifier: ^7.16.1 + version: 7.16.1(eslint@9.7.0)(typescript@5.4.5) eslint: - specifier: ^9.6.0 - version: 9.6.0 + specifier: ^9.7.0 + version: 9.7.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.6.0) + version: 9.1.0(eslint@9.7.0) eslint-define-config: specifier: ^2.1.0 version: 2.1.0 eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.16.0)(eslint@9.6.0) + version: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@9.7.0) eslint-plugin-jsx-a11y: specifier: ^6.9.0 - version: 6.9.0(eslint@9.6.0) + version: 6.9.0(eslint@9.7.0) eslint-plugin-n: specifier: ^17.9.0 - version: 17.9.0(eslint@9.6.0) + version: 17.9.0(eslint@9.7.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.7.0)(prettier@3.3.3) eslint-plugin-react: - specifier: ^7.34.3 - version: 7.34.3(eslint@9.6.0) + specifier: ^7.34.4 + version: 7.34.4(eslint@9.7.0) eslint-plugin-react-hooks: specifier: ^4.6.2 - version: 4.6.2(eslint@9.6.0) + version: 4.6.2(eslint@9.7.0) eslint-plugin-regexp: specifier: ^2.6.0 - version: 2.6.0(eslint@9.6.0) + version: 2.6.0(eslint@9.7.0) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.6.0) + version: 12.1.1(eslint@9.7.0) eslint-plugin-testing-library: specifier: ^6.2.2 - version: 6.2.2(eslint@9.6.0)(typescript@5.4.5) + version: 6.2.2(eslint@9.7.0)(typescript@5.4.5) prettier: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^3.3.3 + version: 3.3.3 tslib: - specifier: ^2.6.2 - version: 2.6.2 + specifier: ^2.6.3 + version: 2.6.3 tsx: specifier: 4.10.5 version: 4.10.5 @@ -97,7 +97,7 @@ importers: version: 6.4.2(@types/jest@29.5.12)(vitest@1.6.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.1.0) + version: 14.5.2(@testing-library/dom@10.3.2) '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -141,7 +141,7 @@ importers: version: 15.0.7(@types/react@18.3.2)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.1.0) + version: 14.5.2(@testing-library/dom@10.3.2) '@types/react': specifier: 18.3.2 version: 18.3.2 @@ -257,7 +257,7 @@ importers: version: 15.0.7(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.1.0) + version: 14.5.2(@testing-library/dom@10.3.2) '@types/react': specifier: 18.3.2 version: 18.3.2 @@ -337,6 +337,13 @@ packages: '@babel/highlight': 7.23.4 chalk: 2.4.2 + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} @@ -455,6 +462,10 @@ packages: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -479,6 +490,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + /@babel/parser@7.23.9: resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} @@ -513,6 +533,12 @@ packages: dependencies: regenerator-runtime: 0.14.1 + /@babel/runtime@7.24.8: + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + /@babel/template@7.23.9: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} @@ -956,13 +982,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.6.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.7.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.6.0 + eslint: 9.7.0 eslint-visitor-keys: 3.4.3 dev: true @@ -971,6 +997,11 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint/compat@1.1.1: resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1004,8 +1035,8 @@ packages: - supports-color dev: true - /@eslint/js@9.6.0: - resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} + /@eslint/js@9.7.0: + resolution: {integrity: sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -1642,6 +1673,20 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true + + /@testing-library/dom@10.3.2: + resolution: {integrity: sha512-0bxIdP9mmPiOJ6wHLj8bdJRq+51oddObeCGdEf6PNEhYd93ZYAN+lPRnEOVFtheVwDM7+p+tza3LAQgp0PTudg==} + engines: {node: '>=18'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.8 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(vitest@1.6.0): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} @@ -1746,13 +1791,13 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): + /@testing-library/user-event@14.5.2(@testing-library/dom@10.3.2): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 10.1.0 + '@testing-library/dom': 10.3.2 /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1888,8 +1933,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0)(eslint@9.6.0)(typescript@5.4.5): - resolution: {integrity: sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==} + /@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1)(eslint@9.7.0)(typescript@5.4.5): + resolution: {integrity: sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1900,12 +1945,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/type-utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.16.0 - eslint: 9.6.0 + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/type-utils': 7.16.1(eslint@9.7.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.1(eslint@9.7.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.1 + eslint: 9.7.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -1915,8 +1960,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.4.5): - resolution: {integrity: sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==} + /@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.4.5): + resolution: {integrity: sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1925,12 +1970,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.1 debug: 4.3.5 - eslint: 9.6.0 + eslint: 9.7.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -1944,16 +1989,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.16.0: - resolution: {integrity: sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==} + /@typescript-eslint/scope-manager@7.16.1: + resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 dev: true - /@typescript-eslint/type-utils@7.16.0(eslint@9.6.0)(typescript@5.4.5): - resolution: {integrity: sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==} + /@typescript-eslint/type-utils@7.16.1(eslint@9.7.0)(typescript@5.4.5): + resolution: {integrity: sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1962,10 +2007,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.1(eslint@9.7.0)(typescript@5.4.5) debug: 4.3.5 - eslint: 9.6.0 + eslint: 9.7.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -1977,8 +2022,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.16.0: - resolution: {integrity: sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==} + /@typescript-eslint/types@7.16.1: + resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} engines: {node: ^18.18.0 || >=20.0.0} dev: true @@ -1996,15 +2041,15 @@ packages: debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.16.0(typescript@5.4.5): - resolution: {integrity: sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==} + /@typescript-eslint/typescript-estree@7.16.1(typescript@5.4.5): + resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -2012,50 +2057,50 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@9.6.0)(typescript@5.4.5): + /@typescript-eslint/utils@5.62.0(eslint@9.7.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - eslint: 9.6.0 + eslint: 9.7.0 eslint-scope: 5.1.1 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.16.0(eslint@9.6.0)(typescript@5.4.5): - resolution: {integrity: sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==} + /@typescript-eslint/utils@7.16.1(eslint@9.7.0)(typescript@5.4.5): + resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.4.5) - eslint: 9.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + eslint: 9.7.0 transitivePeerDependencies: - supports-color - typescript @@ -2069,11 +2114,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.16.0: - resolution: {integrity: sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==} + /@typescript-eslint/visitor-keys@7.16.1: + resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/types': 7.16.1 eslint-visitor-keys: 3.4.3 dev: true @@ -2501,18 +2546,18 @@ packages: balanced-match: 1.0.2 dev: true - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 /browserslist@4.22.3: resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001641 + caniuse-lite: 1.0.30001642 electron-to-chromium: 1.4.657 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.3) @@ -2545,8 +2590,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001641: - resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==} + /caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} @@ -2734,7 +2779,7 @@ packages: cp-file: 10.0.0 globby: 13.2.2 junk: 4.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 nested-error-stacks: 2.1.1 p-filter: 3.0.0 p-map: 6.0.0 @@ -3195,22 +3240,22 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@9.6.0): + /eslint-compat-utils@0.1.2(eslint@9.7.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.6.0 + eslint: 9.7.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.6.0): + /eslint-config-prettier@9.1.0(eslint@9.7.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.6.0 + eslint: 9.7.0 dev: true /eslint-define-config@2.1.0: @@ -3228,7 +3273,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.0)(eslint-import-resolver-node@0.3.9)(eslint@9.6.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-node@0.3.9)(eslint@9.7.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3249,27 +3294,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 9.6.0 + eslint: 9.7.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@9.6.0): + /eslint-plugin-es-x@7.5.0(eslint@9.7.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.10.0 - eslint: 9.6.0 - eslint-compat-utils: 0.1.2(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/regexpp': 4.11.0 + eslint: 9.7.0 + eslint-compat-utils: 0.1.2(eslint@9.7.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.0)(eslint@9.6.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1)(eslint@9.7.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3279,16 +3324,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.6.0 + eslint: 9.7.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.0)(eslint-import-resolver-node@0.3.9)(eslint@9.6.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-node@0.3.9)(eslint@9.7.0) hasown: 2.0.2 is-core-module: 2.14.0 is-glob: 4.0.3 @@ -3304,7 +3349,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.9.0(eslint@9.6.0): + /eslint-plugin-jsx-a11y@6.9.0(eslint@9.7.0): resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} peerDependencies: @@ -3319,7 +3364,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.6.0 + eslint: 9.7.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -3329,16 +3374,16 @@ packages: string.prototype.includes: 2.0.0 dev: true - /eslint-plugin-n@17.9.0(eslint@9.6.0): + /eslint-plugin-n@17.9.0(eslint@9.7.0): resolution: {integrity: sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) enhanced-resolve: 5.17.0 - eslint: 9.6.0 - eslint-plugin-es-x: 7.5.0(eslint@9.6.0) + eslint: 9.7.0 + eslint-plugin-es-x: 7.5.0(eslint@9.7.0) get-tsconfig: 4.7.5 globals: 15.2.0 ignore: 5.3.1 @@ -3351,7 +3396,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.7.0)(prettier@3.3.3): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3365,24 +3410,24 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.6.0 - eslint-config-prettier: 9.1.0(eslint@9.6.0) - prettier: 3.3.2 + eslint: 9.7.0 + eslint-config-prettier: 9.1.0(eslint@9.7.0) + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.2(eslint@9.6.0): + /eslint-plugin-react-hooks@4.6.2(eslint@9.7.0): resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.6.0 + eslint: 9.7.0 dev: true - /eslint-plugin-react@7.34.3(eslint@9.6.0): - resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==} + /eslint-plugin-react@7.34.4(eslint@9.7.0): + resolution: {integrity: sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -3394,52 +3439,53 @@ packages: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 9.6.0 + eslint: 9.7.0 estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.hasown: 1.1.4 object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-regexp@2.6.0(eslint@9.6.0): + /eslint-plugin-regexp@2.6.0(eslint@9.7.0): resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.6.0 + eslint: 9.7.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@12.1.1(eslint@9.6.0): + /eslint-plugin-simple-import-sort@12.1.1(eslint@9.7.0): resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 9.6.0 + eslint: 9.7.0 dev: true - /eslint-plugin-testing-library@6.2.2(eslint@9.6.0)(typescript@5.4.5): + /eslint-plugin-testing-library@6.2.2(eslint@9.7.0)(typescript@5.4.5): resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.4.5) - eslint: 9.6.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.7.0)(typescript@5.4.5) + eslint: 9.7.0 transitivePeerDependencies: - supports-color - typescript @@ -3453,8 +3499,8 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + /eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 @@ -3471,16 +3517,16 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@9.6.0: - resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} + /eslint@9.7.0: + resolution: {integrity: sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.6.0 + '@eslint/js': 9.7.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -3489,7 +3535,7 @@ packages: cross-spawn: 7.0.3 debug: 4.3.5 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 + eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 esquery: 1.5.0 @@ -3602,7 +3648,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 dev: true /fast-json-stable-stringify@2.1.0: @@ -3626,8 +3672,8 @@ packages: flat-cache: 4.0.1 dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 @@ -4227,7 +4273,7 @@ packages: engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.5 + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -4294,7 +4340,7 @@ packages: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -4544,7 +4590,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.2 + semver: 7.6.3 dev: true /meow@12.1.1: @@ -4564,7 +4610,15 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 picomatch: 2.3.1 /mime-db@1.52.0: @@ -4710,7 +4764,7 @@ packages: '@next/env': 14.2.4 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001641 + caniuse-lite: 1.0.30001642 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -4814,15 +4868,6 @@ packages: es-errors: 1.3.0 dev: true - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - /object.values@1.2.0: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} @@ -5051,8 +5096,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true dev: true @@ -5425,6 +5470,12 @@ packages: hasBin: true dev: true + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: true + /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -5578,6 +5629,13 @@ packages: side-channel: 1.0.6 dev: true + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + /string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -5797,10 +5855,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true - /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -6264,7 +6318,7 @@ packages: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.4.5) - semver: 7.6.2 + semver: 7.6.3 typescript: 5.4.5 dev: true From 02b00e075aeb8a291e1fc72b28ffe4eab1787db4 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Wed, 17 Jul 2024 10:41:56 +1000 Subject: [PATCH 314/565] fix(eslint): Fix ESLint to run prettier --- eslint.config.mjs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index e86569eb0..990582939 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,7 +6,7 @@ import { FlatCompat } from "@eslint/eslintrc"; import js from "@eslint/js"; import typescriptEslint from "@typescript-eslint/eslint-plugin"; import tsParser from "@typescript-eslint/parser"; -import prettier from "eslint-plugin-prettier"; +import prettier from "eslint-plugin-prettier/recommended"; import react from "eslint-plugin-react"; import simpleImportSort from "eslint-plugin-simple-import-sort"; //import testingLibrary from "eslint-plugin-testing-library"; @@ -38,7 +38,6 @@ export default [{ "**/.changeset", "**/vite.config.js", "**/webpack-runtime.js", - "**/.prettierrc.cjs", ], }, ...fixupConfigRules(compat.extends( "plugin:react/recommended", @@ -48,16 +47,13 @@ export default [{ "plugin:@typescript-eslint/recommended", "plugin:import/typescript", "plugin:jsx-a11y/recommended", - "prettier", )), { plugins: { "@typescript-eslint": fixupPluginRules(typescriptEslint), "simple-import-sort": simpleImportSort, //"testing-library": testingLibrary, //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 react: fixupPluginRules(react), - prettier, }, - languageOptions: { parser: tsParser, ecmaVersion: 2022, @@ -179,6 +175,7 @@ export default [{ }], }, }, +prettier, //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 // ...compat.extends("plugin:testing-library/react").map(config => ({ // ...config, From e4f4d9774acb94f968b566b69cb8f11581a76830 Mon Sep 17 00:00:00 2001 From: Alex Werman Date: Thu, 18 Jul 2024 11:34:32 +0200 Subject: [PATCH 315/565] chore: apply prettier in repo --- .prettierrc.cjs | 14 +- CHANGELOG.md | 234 ++--- CONTRIBUTING.md | 5 +- FAQ.md | 31 +- MIGRATION_GUIDE_V3_TO_V4.md | 35 +- MIGRATION_GUIDE_V3_TO_V5.md | 36 +- MIGRATION_GUIDE_V6_TO_V7.md | 14 +- README.md | 13 +- SECURITY.md | 2 +- eslint.config.mjs | 360 +++---- examples/nextjs-demo/README.md | 58 +- examples/nextjs-demo/components/layout.js | 47 +- examples/nextjs-demo/pages/_app.js | 2 +- examples/nextjs-demo/pages/index.js | 169 ++-- .../nextjs-demo/public/OidcTrustedDomains.js | 23 +- examples/oidc-client-demo/index.html | 7 +- .../public/OidcTrustedDomains.js | 29 +- .../public/staticwebapp.config.json | 28 +- examples/oidc-client-demo/src/index.tsx | 213 ++-- examples/oidc-client-demo/tsconfig.json | 10 +- examples/oidc-client-demo/vite.config.js | 2 +- examples/react-oidc-demo/README.md | 185 ++-- examples/react-oidc-demo/index.html | 7 +- examples/react-oidc-demo/package.json | 2 +- .../public/OidcTrustedDomains.js | 43 +- examples/react-oidc-demo/public/package.json | 2 +- .../public/staticwebapp.config.json | 28 +- .../public/tsconfig.eslint.json | 2 +- .../react-oidc-demo/public/vite.config.js | 15 +- examples/react-oidc-demo/src/App.spec.tsx | 162 ++- examples/react-oidc-demo/src/App.tsx | 152 +-- examples/react-oidc-demo/src/FetchUser.tsx | 83 +- examples/react-oidc-demo/src/Home.tsx | 121 ++- examples/react-oidc-demo/src/MultiAuth.tsx | 412 ++++---- examples/react-oidc-demo/src/Profile.tsx | 156 +-- .../react-oidc-demo/src/configurations.ts | 154 +-- examples/react-oidc-demo/src/index.css | 8 +- examples/react-oidc-demo/src/index.tsx | 6 +- .../override/AuthenticateError.component.tsx | 12 +- .../src/override/Authenticating.component.tsx | 8 +- .../src/override/Callback.component.tsx | 19 +- .../src/override/Loading.component.tsx | 4 +- .../ServiceWorkerNotSupported.component.tsx | 11 +- .../src/override/SessionLost.component.tsx | 38 +- examples/react-oidc-demo/src/utils/sleep.ts | 4 +- examples/react-oidc-demo/src/utils/timer.ts | 284 +++--- examples/react-oidc-demo/tsconfig.eslint.json | 2 +- examples/react-oidc-demo/tsconfig.json | 6 +- package.json | 2 +- .../src/OidcServiceWorker.ts | 950 +++++++++--------- .../src/OidcTrustedDomains.js | 30 +- .../src/__tests__/oidcConfig.spec.ts | 4 +- .../oidc-client-service-worker/src/crypto.ts | 14 +- .../oidc-client-service-worker/src/dpop.ts | 51 +- .../oidc-client-service-worker/src/jwt.ts | 287 +++--- .../src/oidcConfig.ts | 18 +- .../oidc-client-service-worker/src/types.ts | 208 ++-- .../src/utils/__tests__/codeVerifier.spec.ts | 51 +- .../src/utils/__tests__/domains.spec.ts | 262 ++--- .../src/utils/__tests__/normalizeUrl.spec.ts | 42 +- .../utils/__tests__/serializeHeaders.spec.ts | 4 +- .../src/utils/__tests__/testHelper.ts | 34 +- .../src/utils/__tests__/tokens.spec.ts | 118 ++- .../src/utils/codeVerifier.ts | 22 +- .../src/utils/domains.ts | 148 +-- .../src/utils/normalizeUrl.ts | 13 +- .../src/utils/sleep.ts | 2 +- .../src/utils/tokens.ts | 127 +-- .../tsconfig.eslint.json | 2 +- .../oidc-client-service-worker/vite.config.js | 11 +- packages/oidc-client/README.md | 70 +- .../bin/copy-service-worker-files.mjs | 35 +- .../oidc-client/public/OidcTrustedDomains.js | 26 +- packages/oidc-client/src/cache.ts | 39 +- packages/oidc-client/src/checkSession.ts | 142 ++- .../oidc-client/src/checkSessionIFrame.ts | 139 +-- packages/oidc-client/src/crypto.ts | 52 +- packages/oidc-client/src/events.ts | 56 +- packages/oidc-client/src/fetch.ts | 50 +- packages/oidc-client/src/index.ts | 12 +- packages/oidc-client/src/iniWorker.spec.ts | 42 +- packages/oidc-client/src/initSession.ts | 228 ++--- packages/oidc-client/src/initWorker.ts | 509 ++++++---- packages/oidc-client/src/initWorkerOption.ts | 235 ++--- packages/oidc-client/src/jwt.ts | 281 +++--- packages/oidc-client/src/keepSession.ts | 181 ++-- packages/oidc-client/src/location.ts | 50 +- packages/oidc-client/src/login.ts | 435 ++++---- packages/oidc-client/src/logout.spec.ts | 207 ++-- packages/oidc-client/src/logout.ts | 231 +++-- packages/oidc-client/src/oidc.ts | 763 +++++++------- packages/oidc-client/src/oidcClient.ts | 234 +++-- packages/oidc-client/src/parseTokens.spec.ts | 374 +++---- packages/oidc-client/src/parseTokens.ts | 407 ++++---- packages/oidc-client/src/renewTokens.ts | 680 +++++++------ packages/oidc-client/src/requests.spec.ts | 12 +- packages/oidc-client/src/requests.ts | 256 ++--- packages/oidc-client/src/route-utils.spec.ts | 36 +- packages/oidc-client/src/route-utils.ts | 55 +- packages/oidc-client/src/silentLogin.ts | 272 ++--- packages/oidc-client/src/timer.ts | 21 +- packages/oidc-client/src/types.ts | 102 +- packages/oidc-client/src/user.ts | 29 +- packages/oidc-client/tests/setup.js | 13 +- packages/oidc-client/tsconfig.eslint.json | 2 +- packages/oidc-client/tsconfig.json | 9 +- packages/oidc-client/vite.config.ts | 2 - packages/react-oidc/README.md | 201 ++-- .../bin/copy-service-worker-files.mjs | 35 +- .../react-oidc/public/OidcTrustedDomains.js | 23 +- packages/react-oidc/src/FetchToken.tsx | 49 +- packages/react-oidc/src/OidcProvider.tsx | 398 ++++---- packages/react-oidc/src/OidcSecure.tsx | 57 +- packages/react-oidc/src/ReactOidc.tsx | 321 +++--- packages/react-oidc/src/User.ts | 110 +- .../Authenticating.component.tsx | 2 +- .../default-component/Callback.component.tsx | 29 +- .../default-component/Loading.component.tsx | 6 +- .../ServiceWorkerNotSupported.component.tsx | 7 +- .../SessionLost.component.tsx | 2 +- .../SilentCallback.component.tsx | 25 +- .../SilentLogin.component.tsx | 36 +- .../src/core/routes/OidcRoutes.spec.tsx | 4 +- .../react-oidc/src/core/routes/OidcRoutes.tsx | 16 +- .../src/core/routes/withRouter.spec.tsx | 11 +- .../react-oidc/src/core/routes/withRouter.tsx | 40 +- packages/react-oidc/src/index.ts | 12 +- packages/react-oidc/tests/setup.js | 4 +- packages/react-oidc/tsconfig.eslint.json | 2 +- packages/react-oidc/tsconfig.json | 13 +- packages/react-oidc/vite.config.ts | 5 +- 131 files changed, 7213 insertions(+), 6140 deletions(-) diff --git a/.prettierrc.cjs b/.prettierrc.cjs index dbb27c237..6fb26d080 100644 --- a/.prettierrc.cjs +++ b/.prettierrc.cjs @@ -1,12 +1,14 @@ module.exports = { printWidth: 100, - semi: true, - singleQuote: true, - jsxSingleQuote: true, tabWidth: 2, - trailingComma: 'es5', - useTabs: true, - plugins: [], + trailingComma: 'all', + arrowParens: 'avoid', + endOfLine: 'auto', + bracketSameLine: false, + bracketSpacing: true, + singleQuote: true, + useTabs: false, + semi: true, overrides: [ { files: ['.*', '*.json', '*.md', '*.toml', '*.yml'], diff --git a/CHANGELOG.md b/CHANGELOG.md index b887dbf34..d1fd352e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,323 +2,261 @@ ## 7.22.18 -- [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* - +- [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by _Miya_ ## v7.22.17 -- [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* -- [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* -- [b94fa5c](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by *Jason Finch* -- [7caee91](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by *Jason Finch* -- [a46b1aa](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by *Jason Finch* -- [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* - +- [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by _wermanoid_ +- [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by _Jason Finch_ +- [b94fa5c](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by _Jason Finch_ +- [7caee91](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by _Jason Finch_ +- [a46b1aa](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by _Jason Finch_ +- [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by _Jason Finch_ ## v7.22.16 -- [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* -- [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* - +- [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by _Miya_ +- [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by _Jason Finch_ ## v7.22.15 -- [73eae7e](https://github.com/AxaFrance/oidc-client/commit/73eae7e9d68dea6ebec0ed82ba7873941c0e371e) - refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release), 2024-07-11 by *Jason Finch* -- [e51aef2](https://github.com/AxaFrance/oidc-client/commit/e51aef268e783259c035e3ba58bf9aa16a111bea) - fix (Style): fix 'container' classname in demo. (#1401), 2024-07-11 by *Jason Finch* - +- [73eae7e](https://github.com/AxaFrance/oidc-client/commit/73eae7e9d68dea6ebec0ed82ba7873941c0e371e) - refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release), 2024-07-11 by _Jason Finch_ +- [e51aef2](https://github.com/AxaFrance/oidc-client/commit/e51aef268e783259c035e3ba58bf9aa16a111bea) - fix (Style): fix 'container' classname in demo. (#1401), 2024-07-11 by _Jason Finch_ ## v7.22.14 -- [25c55ee](https://github.com/AxaFrance/oidc-client/commit/25c55eeb7682356c13987a91d7b8645cca1b0ad5) - refactor(oidc): null coalescing (#1404) (release), 2024-07-11 by *Jason Finch* - +- [25c55ee](https://github.com/AxaFrance/oidc-client/commit/25c55eeb7682356c13987a91d7b8645cca1b0ad5) - refactor(oidc): null coalescing (#1404) (release), 2024-07-11 by _Jason Finch_ ## v7.22.13 -- [95c814d](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by *Guillaume Chervet* - +- [95c814d](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by _Guillaume Chervet_ ## v7.22.12 - - ## v7.22.11 - - ## v7.22.10 -- [6c80c5c](https://github.com/AxaFrance/oidc-client/commit/6c80c5cc77750aead50e62136a6594b05f21b42b) - fix(oidc): logout trigger login (release) (#1394), 2024-07-04 by *Guillaume Chervet* - +- [6c80c5c](https://github.com/AxaFrance/oidc-client/commit/6c80c5cc77750aead50e62136a6594b05f21b42b) - fix(oidc): logout trigger login (release) (#1394), 2024-07-04 by _Guillaume Chervet_ ## v7.22.9 -- [77eb9e1](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by *radk0s* - +- [77eb9e1](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by _radk0s_ ## v7.22.8 -- [c4cf94b](https://github.com/AxaFrance/oidc-client/commit/c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0) - fix(oidc): remove dynamic web worker blocked by policies (release) (#1386), 2024-06-18 by *Guillaume Chervet* - +- [c4cf94b](https://github.com/AxaFrance/oidc-client/commit/c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0) - fix(oidc): remove dynamic web worker blocked by policies (release) (#1386), 2024-06-18 by _Guillaume Chervet_ ## v7.22.7 -- [9f4cbf4](https://github.com/AxaFrance/oidc-client/commit/9f4cbf414e1b41f448b2a36d759a035786d26668) - fix(oidc): 2 readmes with the same name (release) (#1377), 2024-06-07 by *meesvandongen* -- [0bfabd4](https://github.com/AxaFrance/oidc-client/commit/0bfabd41d67cad57415905b7ce729ee4fe85c8b4) - fix(oidc): session lost to quickly (alpha) (#1381), 2024-06-07 by *Guillaume Chervet* - +- [9f4cbf4](https://github.com/AxaFrance/oidc-client/commit/9f4cbf414e1b41f448b2a36d759a035786d26668) - fix(oidc): 2 readmes with the same name (release) (#1377), 2024-06-07 by _meesvandongen_ +- [0bfabd4](https://github.com/AxaFrance/oidc-client/commit/0bfabd41d67cad57415905b7ce729ee4fe85c8b4) - fix(oidc): session lost to quickly (alpha) (#1381), 2024-06-07 by _Guillaume Chervet_ ## v7.22.6 -- [bcba15b](https://github.com/AxaFrance/oidc-client/commit/bcba15b412063d139c0902de117b0516150c13a2) - fix(react-oidc): compatibility with react 19 (release) (#1372), 2024-05-22 by *Guillaume Chervet* -- [c49a857](https://github.com/AxaFrance/oidc-client/commit/c49a8572702c485c9a089b0f9aa11eb4bc6e7f1d) - refactor(test): add missing logout test case, 2024-05-22 by *Guillaume Chervet* - +- [bcba15b](https://github.com/AxaFrance/oidc-client/commit/bcba15b412063d139c0902de117b0516150c13a2) - fix(react-oidc): compatibility with react 19 (release) (#1372), 2024-05-22 by _Guillaume Chervet_ +- [c49a857](https://github.com/AxaFrance/oidc-client/commit/c49a8572702c485c9a089b0f9aa11eb4bc6e7f1d) - refactor(test): add missing logout test case, 2024-05-22 by _Guillaume Chervet_ ## v7.22.5 -- [8d9fd95](https://github.com/AxaFrance/oidc-client/commit/8d9fd9550a74a771936f0e686eb31fe271cd912b) - fix(oidc): user loaded 401 when preload true and not serviceworder mode (release), 2024-05-19 by *Guillaume Chervet* -- [d764b2b](https://github.com/AxaFrance/oidc-client/commit/d764b2bd7319711c49a393c1fd3496d054661065) - refatcor(all): update librairies, 2024-05-18 by *Guillaume Chervet* - +- [8d9fd95](https://github.com/AxaFrance/oidc-client/commit/8d9fd9550a74a771936f0e686eb31fe271cd912b) - fix(oidc): user loaded 401 when preload true and not serviceworder mode (release), 2024-05-19 by _Guillaume Chervet_ +- [d764b2b](https://github.com/AxaFrance/oidc-client/commit/d764b2bd7319711c49a393c1fd3496d054661065) - refatcor(all): update librairies, 2024-05-18 by _Guillaume Chervet_ ## v7.22.4 -- [64c76e0](https://github.com/AxaFrance/oidc-client/commit/64c76e0b1f4fccf1c0ed93269a0307212be9d661) - feature(oidc):preload user (release) (#1352), 2024-04-23 by *Guillaume Chervet* - +- [64c76e0](https://github.com/AxaFrance/oidc-client/commit/64c76e0b1f4fccf1c0ed93269a0307212be9d661) - feature(oidc):preload user (release) (#1352), 2024-04-23 by _Guillaume Chervet_ ## v7.22.3 -- [5af8075](https://github.com/AxaFrance/oidc-client/commit/5af807548e35c64da74fc3547e35c8ec512399ba) - fix(all): types import in index.ts for all typescript (release), 2024-04-18 by *Guillaume Chervet* - +- [5af8075](https://github.com/AxaFrance/oidc-client/commit/5af807548e35c64da74fc3547e35c8ec512399ba) - fix(all): types import in index.ts for all typescript (release), 2024-04-18 by _Guillaume Chervet_ ## v7.22.2 -- [b17217d](https://github.com/AxaFrance/oidc-client/commit/b17217d6b829dee3b28f444fda099fce9c94bc41) - fix(react-oidc): unused var in User.txs (release), 2024-04-16 by *Guillaume Chervet* - +- [b17217d](https://github.com/AxaFrance/oidc-client/commit/b17217d6b829dee3b28f444fda099fce9c94bc41) - fix(react-oidc): unused var in User.txs (release), 2024-04-16 by _Guillaume Chervet_ ## v7.22.1 -- [be24658](https://github.com/AxaFrance/oidc-client/commit/be2465852e837b749abd3a86c5c0caa57a2ea8b6) - refactor(all): update libs (release), 2024-04-15 by *Guillaume Chervet* - +- [be24658](https://github.com/AxaFrance/oidc-client/commit/be2465852e837b749abd3a86c5c0caa57a2ea8b6) - refactor(all): update libs (release), 2024-04-15 by _Guillaume Chervet_ ## v7.22.0 -- [032a00b](https://github.com/AxaFrance/oidc-client/commit/032a00b501557fe6b5be48e83e4914051ee2c7f0) - feat(oidc): control dpop injection (release) (#1342), 2024-04-10 by *Guillaume Chervet* - +- [032a00b](https://github.com/AxaFrance/oidc-client/commit/032a00b501557fe6b5be48e83e4914051ee2c7f0) - feat(oidc): control dpop injection (release) (#1342), 2024-04-10 by _Guillaume Chervet_ ## v7.21.0 -- [8335b5a](https://github.com/AxaFrance/oidc-client/commit/8335b5a6f5c02d320d642a022ff3828513f5a43e) - feat(dpop): add extras (alpha) (#1325) (release), 2024-03-28 by *Guillaume Chervet* - +- [8335b5a](https://github.com/AxaFrance/oidc-client/commit/8335b5a6f5c02d320d642a022ff3828513f5a43e) - feat(dpop): add extras (alpha) (#1325) (release), 2024-03-28 by _Guillaume Chervet_ ## v7.20.1 -- [9a3ad3a](https://github.com/AxaFrance/oidc-client/commit/9a3ad3a474a66cc77fa2c3eb3eafa42f167f1e45) - feature(oidc): token renew only when required (release) (#1327), 2024-03-24 by *Guillaume Chervet* - +- [9a3ad3a](https://github.com/AxaFrance/oidc-client/commit/9a3ad3a474a66cc77fa2c3eb3eafa42f167f1e45) - feature(oidc): token renew only when required (release) (#1327), 2024-03-24 by _Guillaume Chervet_ ## v7.20.0 -- [44d15be](https://github.com/AxaFrance/oidc-client/commit/44d15be1c4d8f5069f15ddc5351e546fc5eb7730) - fix(oidc): userInfo 401 on first login (release), 2024-03-22 by *Guillaume Chervet* -- [c7793c9](https://github.com/AxaFrance/oidc-client/commit/c7793c9913128dbb82a60dff11261ca5b4749f0c) - feat(oidc-client): add dpop extras to claims (alpha), 2024-03-19 by *Guillaume Chervet* - +- [44d15be](https://github.com/AxaFrance/oidc-client/commit/44d15be1c4d8f5069f15ddc5351e546fc5eb7730) - fix(oidc): userInfo 401 on first login (release), 2024-03-22 by _Guillaume Chervet_ +- [c7793c9](https://github.com/AxaFrance/oidc-client/commit/c7793c9913128dbb82a60dff11261ca5b4749f0c) - feat(oidc-client): add dpop extras to claims (alpha), 2024-03-19 by _Guillaume Chervet_ ## v7.19.6 -- [b7568f8](https://github.com/AxaFrance/oidc-client/commit/b7568f8d73d21ba1b7cd4890bff2ad30941696e2) - fix(oidc-service-worker): normalize userinfo endpoint in service worker (#1320) (release), 2024-03-13 by *meesvandongen* - +- [b7568f8](https://github.com/AxaFrance/oidc-client/commit/b7568f8d73d21ba1b7cd4890bff2ad30941696e2) - fix(oidc-service-worker): normalize userinfo endpoint in service worker (#1320) (release), 2024-03-13 by _meesvandongen_ ## v7.19.5 -- [be24bba](https://github.com/AxaFrance/oidc-client/commit/be24bbab3d699ff003cb14302dedc3463b1f3a1b) - refactor(all): update build libraries (release), 2024-03-12 by *Guillaume Chervet* - +- [be24bba](https://github.com/AxaFrance/oidc-client/commit/be24bbab3d699ff003cb14302dedc3463b1f3a1b) - refactor(all): update build libraries (release), 2024-03-12 by _Guillaume Chervet_ ## v7.19.4 -- [7df257c](https://github.com/AxaFrance/oidc-client/commit/7df257ca7ba32a2605cd5d76881ea3aa50aba208) - refactor(all): update build libraries (release), 2024-03-12 by *Guillaume Chervet* - +- [7df257c](https://github.com/AxaFrance/oidc-client/commit/7df257ca7ba32a2605cd5d76881ea3aa50aba208) - refactor(all): update build libraries (release), 2024-03-12 by _Guillaume Chervet_ ## v7.19.3 -- [397629d](https://github.com/AxaFrance/oidc-client/commit/397629d2c9e1d58efab96c000247382cfc94ce24) - build(npm): bump vite from 5.0.12 to 5.1.5 (#1319), 2024-03-07 by *dependabot[bot]* - +- [397629d](https://github.com/AxaFrance/oidc-client/commit/397629d2c9e1d58efab96c000247382cfc94ce24) - build(npm): bump vite from 5.0.12 to 5.1.5 (#1319), 2024-03-07 by _dependabot[bot]_ ## v7.19.2 -- [95be8f7](https://github.com/AxaFrance/oidc-client/commit/95be8f79a3fc399b05322d0197ab674cf272326a) - build(npm): bump vitest from 1.2.2 to 1.3.1 (#1315), 2024-03-07 by *dependabot[bot]* - +- [95be8f7](https://github.com/AxaFrance/oidc-client/commit/95be8f79a3fc399b05322d0197ab674cf272326a) - build(npm): bump vitest from 1.2.2 to 1.3.1 (#1315), 2024-03-07 by _dependabot[bot]_ ## v7.19.1 -- [7b2b21a](https://github.com/AxaFrance/oidc-client/commit/7b2b21a9837210d0caaea9e16cfea9e9daeb8364) - build(npm): bump rimraf from 5.0.1 to 5.0.5 (#1313) (release), 2024-03-04 by *dependabot[bot]* -- [d4c9ec6](https://github.com/AxaFrance/oidc-client/commit/d4c9ec6b8a4760c81f4d88bc72563cc810b52b00) - fix(oidc): when having multiple iframes, only the last one gets resolved (#1311) (alpha), 2024-02-28 by *Jean-Marc Rakotoarisoa* -- [db13d8b](https://github.com/AxaFrance/oidc-client/commit/db13d8bdfbd49e564452461aeefc6e3024ce4435) - doc(oidc-client-demo): fix workflow, 2024-02-23 by *Guillaume Chervet* -- [322c1f1](https://github.com/AxaFrance/oidc-client/commit/322c1f1fbd3563b27b01a6ca98c8d95eeef12038) - doc(oidc-client-demo): update content and CSP, 2024-02-23 by *Guillaume Chervet* -- [cf92792](https://github.com/AxaFrance/oidc-client/commit/cf92792db7ede5f35c3e2883f4353376e73ff7e3) - doc(oidc-client-demo): repair demo, 2024-02-23 by *Guillaume Chervet* -- [fa33e72](https://github.com/AxaFrance/oidc-client/commit/fa33e7250cd5d46c98940c999b8f701116f78446) - doc(oidc-client): update vanilla to add Hack game, 2024-02-23 by *Guillaume Chervet* - +- [7b2b21a](https://github.com/AxaFrance/oidc-client/commit/7b2b21a9837210d0caaea9e16cfea9e9daeb8364) - build(npm): bump rimraf from 5.0.1 to 5.0.5 (#1313) (release), 2024-03-04 by _dependabot[bot]_ +- [d4c9ec6](https://github.com/AxaFrance/oidc-client/commit/d4c9ec6b8a4760c81f4d88bc72563cc810b52b00) - fix(oidc): when having multiple iframes, only the last one gets resolved (#1311) (alpha), 2024-02-28 by _Jean-Marc Rakotoarisoa_ +- [db13d8b](https://github.com/AxaFrance/oidc-client/commit/db13d8bdfbd49e564452461aeefc6e3024ce4435) - doc(oidc-client-demo): fix workflow, 2024-02-23 by _Guillaume Chervet_ +- [322c1f1](https://github.com/AxaFrance/oidc-client/commit/322c1f1fbd3563b27b01a6ca98c8d95eeef12038) - doc(oidc-client-demo): update content and CSP, 2024-02-23 by _Guillaume Chervet_ +- [cf92792](https://github.com/AxaFrance/oidc-client/commit/cf92792db7ede5f35c3e2883f4353376e73ff7e3) - doc(oidc-client-demo): repair demo, 2024-02-23 by _Guillaume Chervet_ +- [fa33e72](https://github.com/AxaFrance/oidc-client/commit/fa33e7250cd5d46c98940c999b8f701116f78446) - doc(oidc-client): update vanilla to add Hack game, 2024-02-23 by _Guillaume Chervet_ ## v7.19.0 -- [8f3940c](https://github.com/AxaFrance/oidc-client/commit/8f3940c42ad62264abfd61690777b602e0bdc31a) - feat(oidc): dpop inside serviceworker (#1306) (release), 2024-02-22 by *Guillaume Chervet* -- [4a5887f](https://github.com/AxaFrance/oidc-client/commit/4a5887f5e7b3d739d709c7bb4fb7a007ccb051a1) - fix(oidc-service-worker): remove sw unecessary log, 2024-02-19 by *Guillaume Chervet* - +- [8f3940c](https://github.com/AxaFrance/oidc-client/commit/8f3940c42ad62264abfd61690777b602e0bdc31a) - feat(oidc): dpop inside serviceworker (#1306) (release), 2024-02-22 by _Guillaume Chervet_ +- [4a5887f](https://github.com/AxaFrance/oidc-client/commit/4a5887f5e7b3d739d709c7bb4fb7a007ccb051a1) - fix(oidc-service-worker): remove sw unecessary log, 2024-02-19 by _Guillaume Chervet_ ## v7.18.5 -- [7a38d96](https://github.com/AxaFrance/oidc-client/commit/7a38d962b0e08837989a1d2affeb5e557dc09444) - fix(oidc): parse token with many _ or - (#1302) (release), 2024-02-18 by *Guillaume Chervet* - +- [7a38d96](https://github.com/AxaFrance/oidc-client/commit/7a38d962b0e08837989a1d2affeb5e557dc09444) - fix(oidc): parse token with many \_ or - (#1302) (release), 2024-02-18 by _Guillaume Chervet_ ## v7.18.4 -- [b4e5ec8](https://github.com/AxaFrance/oidc-client/commit/b4e5ec834bdfedf8975b79086c2c0144f4e6e9b1) - fix(oidc-service-worker): set Bearer as default (release), 2024-02-17 by *Guillaume Chervet* - +- [b4e5ec8](https://github.com/AxaFrance/oidc-client/commit/b4e5ec834bdfedf8975b79086c2c0144f4e6e9b1) - fix(oidc-service-worker): set Bearer as default (release), 2024-02-17 by _Guillaume Chervet_ ## v7.18.3 -- [8eb75d3](https://github.com/AxaFrance/oidc-client/commit/8eb75d3f2036708d9c3067a2973a4d685d8b4923) - fix(oidc): logout continue to run before redirecting (#1301) (release), 2024-02-15 by *Guillaume Chervet* - +- [8eb75d3](https://github.com/AxaFrance/oidc-client/commit/8eb75d3f2036708d9c3067a2973a4d685d8b4923) - fix(oidc): logout continue to run before redirecting (#1301) (release), 2024-02-15 by _Guillaume Chervet_ ## v7.18.2 -- [77329ce](https://github.com/AxaFrance/oidc-client/commit/77329ce52a5fc7278ff35ccd13ca572ff7ebbf4d) - fix(oidc-service-worker): bad request on many token request at the same time (#1300) (release), 2024-02-15 by *Guillaume Chervet* - +- [77329ce](https://github.com/AxaFrance/oidc-client/commit/77329ce52a5fc7278ff35ccd13ca572ff7ebbf4d) - fix(oidc-service-worker): bad request on many token request at the same time (#1300) (release), 2024-02-15 by _Guillaume Chervet_ ## v7.18.1 -- [0d13cc2](https://github.com/AxaFrance/oidc-client/commit/0d13cc28a8cc40c610d3943d33fe8a7d4e28c32f) - fix(oidc): unload user on logout (#1296) (release), 2024-02-13 by *Guillaume Chervet* - +- [0d13cc2](https://github.com/AxaFrance/oidc-client/commit/0d13cc28a8cc40c610d3943d33fe8a7d4e28c32f) - fix(oidc): unload user on logout (#1296) (release), 2024-02-13 by _Guillaume Chervet_ ## v7.18.0 -- [5e35346](https://github.com/AxaFrance/oidc-client/commit/5e35346bfa477b560f5bde1afb2125a2c5f6e9c4) - feat(oidc): add extras to revoke access_token and refresh_tokens (#1295) (release), 2024-02-13 by *Guillaume Chervet* - +- [5e35346](https://github.com/AxaFrance/oidc-client/commit/5e35346bfa477b560f5bde1afb2125a2c5f6e9c4) - feat(oidc): add extras to revoke access_token and refresh_tokens (#1295) (release), 2024-02-13 by _Guillaume Chervet_ ## v7.17.4 -- [91b11af](https://github.com/AxaFrance/oidc-client/commit/91b11afa983bf4bee8def95c4ee101ede5447dc9) - fix(oidc): resfreshTokenError not triggered when silentsignin disabled (release), 2024-02-11 by *Guillaume Chervet* - +- [91b11af](https://github.com/AxaFrance/oidc-client/commit/91b11afa983bf4bee8def95c4ee101ede5447dc9) - fix(oidc): resfreshTokenError not triggered when silentsignin disabled (release), 2024-02-11 by _Guillaume Chervet_ ## v7.17.3 -- [dbaf602](https://github.com/AxaFrance/oidc-client/commit/dbaf602d31e0b437285496e2711ff7cce5d8d3f7) - fix(react-oidc): typings user can be null (release), 2024-02-11 by *Guillaume Chervet* - +- [dbaf602](https://github.com/AxaFrance/oidc-client/commit/dbaf602d31e0b437285496e2711ff7cce5d8d3f7) - fix(react-oidc): typings user can be null (release), 2024-02-11 by _Guillaume Chervet_ ## v7.17.2 -- [c3d5c6b](https://github.com/AxaFrance/oidc-client/commit/c3d5c6b1a6a2a82450d134134513634031c1c338) - refactor(react-oidc): remove base64js dependencies (release), 2024-02-11 by *Guillaume Chervet* -- [2a7031b](https://github.com/AxaFrance/oidc-client/commit/2a7031bfdd5a7c638940ece97778988ead73cbdc) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-11 by *Guillaume Chervet* -- [3973497](https://github.com/AxaFrance/oidc-client/commit/397349749e9abb75a6910b3824786f3c688447fe) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-10 by *Guillaume Chervet* -- [d20953a](https://github.com/AxaFrance/oidc-client/commit/d20953a0180bdf3b8b6dd3247a025e3b4fc389f8) - refactor(oidc): remove base64.js dependencies (alpha), 2024-02-10 by *Guillaume Chervet* - +- [c3d5c6b](https://github.com/AxaFrance/oidc-client/commit/c3d5c6b1a6a2a82450d134134513634031c1c338) - refactor(react-oidc): remove base64js dependencies (release), 2024-02-11 by _Guillaume Chervet_ +- [2a7031b](https://github.com/AxaFrance/oidc-client/commit/2a7031bfdd5a7c638940ece97778988ead73cbdc) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-11 by _Guillaume Chervet_ +- [3973497](https://github.com/AxaFrance/oidc-client/commit/397349749e9abb75a6910b3824786f3c688447fe) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-02-10 by _Guillaume Chervet_ +- [d20953a](https://github.com/AxaFrance/oidc-client/commit/d20953a0180bdf3b8b6dd3247a025e3b4fc389f8) - refactor(oidc): remove base64.js dependencies (alpha), 2024-02-10 by _Guillaume Chervet_ ## v7.17.1 -- [2511648](https://github.com/AxaFrance/oidc-client/commit/251164830a9a1b976e8d6c743490795a028afa16) - refactor(oidc): remove base64.js dependency (#1292) (release), 2024-02-10 by *Guillaume Chervet* - +- [2511648](https://github.com/AxaFrance/oidc-client/commit/251164830a9a1b976e8d6c743490795a028afa16) - refactor(oidc): remove base64.js dependency (#1292) (release), 2024-02-10 by _Guillaume Chervet_ ## v7.17.0 -- [a09e6fd](https://github.com/AxaFrance/oidc-client/commit/a09e6fda64aa210fe7f63d70b6c64af559012640) - feat(oidc): logout add extras parameter to avoid the page reload (release) (#1290), 2024-02-10 by *Guillaume Chervet* - +- [a09e6fd](https://github.com/AxaFrance/oidc-client/commit/a09e6fda64aa210fe7f63d70b6c64af559012640) - feat(oidc): logout add extras parameter to avoid the page reload (release) (#1290), 2024-02-10 by _Guillaume Chervet_ ## v7.16.0 -- [6b9b524](https://github.com/AxaFrance/oidc-client/commit/6b9b524c54a18dca9cc5bab34f0d058716e9d116) - feat(react): expose dpop method generation (#1291) (release), 2024-02-10 by *Guillaume Chervet* - +- [6b9b524](https://github.com/AxaFrance/oidc-client/commit/6b9b524c54a18dca9cc5bab34f0d058716e9d116) - feat(react): expose dpop method generation (#1291) (release), 2024-02-10 by _Guillaume Chervet_ ## v7.15.5 -- [d79af9a](https://github.com/AxaFrance/oidc-client/commit/d79af9aba023faf78e9816c4d681413618bdd843) - refactor(all): updates dev libraries (release) (#1284), 2024-02-09 by *Guillaume Chervet* - +- [d79af9a](https://github.com/AxaFrance/oidc-client/commit/d79af9aba023faf78e9816c4d681413618bdd843) - refactor(all): updates dev libraries (release) (#1284), 2024-02-09 by _Guillaume Chervet_ ## v7.15.4 -- [f2d74fb](https://github.com/AxaFrance/oidc-client/commit/f2d74fba6d2e48e6d478aa69d261fe9cceb69bfa) - fix(oidc): eternal lock when refresh_token invalid and multiple tabs (#1281) (release), 2024-02-03 by *Guillaume Chervet* - +- [f2d74fb](https://github.com/AxaFrance/oidc-client/commit/f2d74fba6d2e48e6d478aa69d261fe9cceb69bfa) - fix(oidc): eternal lock when refresh_token invalid and multiple tabs (#1281) (release), 2024-02-03 by _Guillaume Chervet_ ## v7.15.3 -- [7a5d32c](https://github.com/AxaFrance/oidc-client/commit/7a5d32cf650870a5b1c2910ceb0a3e6db4cec0b7) - fix(oidc): storage empty update message (release), 2024-02-03 by *Guillaume Chervet* - +- [7a5d32c](https://github.com/AxaFrance/oidc-client/commit/7a5d32cf650870a5b1c2910ceb0a3e6db4cec0b7) - fix(oidc): storage empty update message (release), 2024-02-03 by _Guillaume Chervet_ ## v7.15.2 -- [940ffac](https://github.com/AxaFrance/oidc-client/commit/940ffac724894460af13e4e4a0de5e691e487c74) - fix(oidc): json not valid add warning message (release) (#1258), 2024-02-03 by *Guillaume Chervet* -- [31f295c](https://github.com/AxaFrance/oidc-client/commit/31f295cb549bf55dfd5db1e1c71178363c7f2dae) - fix(logout): add event when same config name (alpha), 2024-02-02 by *Guillaume Chervet* -- [0a15e60](https://github.com/AxaFrance/oidc-client/commit/0a15e60f0e5c167a0418a972c6726eec72add447) - refactor(renew): clean an debug (alpha) (#1273), 2024-02-01 by *Guillaume Chervet* - +- [940ffac](https://github.com/AxaFrance/oidc-client/commit/940ffac724894460af13e4e4a0de5e691e487c74) - fix(oidc): json not valid add warning message (release) (#1258), 2024-02-03 by _Guillaume Chervet_ +- [31f295c](https://github.com/AxaFrance/oidc-client/commit/31f295cb549bf55dfd5db1e1c71178363c7f2dae) - fix(logout): add event when same config name (alpha), 2024-02-02 by _Guillaume Chervet_ +- [0a15e60](https://github.com/AxaFrance/oidc-client/commit/0a15e60f0e5c167a0418a972c6726eec72add447) - refactor(renew): clean an debug (alpha) (#1273), 2024-02-01 by _Guillaume Chervet_ ## v7.15.1 -- [5094e36](https://github.com/AxaFrance/oidc-client/commit/5094e36c1435684c5863e8d27eca59093aaec7b7) - fix(service-worker): unit test broken (release), 2024-01-30 by *Guillaume Chervet* - +- [5094e36](https://github.com/AxaFrance/oidc-client/commit/5094e36c1435684c5863e8d27eca59093aaec7b7) - fix(service-worker): unit test broken (release), 2024-01-30 by _Guillaume Chervet_ ## v7.15.0 -- [1676881](https://github.com/AxaFrance/oidc-client/commit/1676881f1db53cff6652ee7fe9658a437682231f) - feat(oidc): idToken can be null on a refresh (release) (#1271), 2024-01-29 by *Guillaume Chervet* - +- [1676881](https://github.com/AxaFrance/oidc-client/commit/1676881f1db53cff6652ee7fe9658a437682231f) - feat(oidc): idToken can be null on a refresh (release) (#1271), 2024-01-29 by _Guillaume Chervet_ ## v7.14.1 -- [0fe53a6](https://github.com/AxaFrance/oidc-client/commit/0fe53a6b870c13c71330806a045896ea1e0a57e2) - fix(oidc): remove console.log (release), 2024-01-28 by *Guillaume Chervet* -- [b23d6a7](https://github.com/AxaFrance/oidc-client/commit/b23d6a7e1fc04ce43f489ac8977de9fe5affff73) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-01-28 by *Guillaume Chervet* -- [14ccbeb](https://github.com/AxaFrance/oidc-client/commit/14ccbeb83f1d7e790b496e571d424f615a39b43f) - fix(oidc): demo and remove console.log, 2024-01-28 by *Guillaume Chervet* -- [15eb259](https://github.com/AxaFrance/oidc-client/commit/15eb2592d9582cb43798a5d7fc988b3c349e5b43) - doc(oidc): Update README.md, 2024-01-26 by *Guillaume Chervet* - +- [0fe53a6](https://github.com/AxaFrance/oidc-client/commit/0fe53a6b870c13c71330806a045896ea1e0a57e2) - fix(oidc): remove console.log (release), 2024-01-28 by _Guillaume Chervet_ +- [b23d6a7](https://github.com/AxaFrance/oidc-client/commit/b23d6a7e1fc04ce43f489ac8977de9fe5affff73) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-01-28 by _Guillaume Chervet_ +- [14ccbeb](https://github.com/AxaFrance/oidc-client/commit/14ccbeb83f1d7e790b496e571d424f615a39b43f) - fix(oidc): demo and remove console.log, 2024-01-28 by _Guillaume Chervet_ +- [15eb259](https://github.com/AxaFrance/oidc-client/commit/15eb2592d9582cb43798a5d7fc988b3c349e5b43) - doc(oidc): Update README.md, 2024-01-26 by _Guillaume Chervet_ ## v7.14.0 -- [b0510eb](https://github.com/AxaFrance/oidc-client/commit/b0510eb8d7170e8e142cb2d9bec01f41f610ed51) - feat(oidc): add DPOP configuration (#1259) (release), 2024-01-26 by *Guillaume Chervet* - +- [b0510eb](https://github.com/AxaFrance/oidc-client/commit/b0510eb8d7170e8e142cb2d9bec01f41f610ed51) - feat(oidc): add DPOP configuration (#1259) (release), 2024-01-26 by _Guillaume Chervet_ ## v7.13.16 -- [f2310bc](https://github.com/AxaFrance/oidc-client/commit/f2310bc917898b779a40edecf3dd73c21ec32b47) - fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269), 2024-01-25 by *Guillaume Chervet* - +- [f2310bc](https://github.com/AxaFrance/oidc-client/commit/f2310bc917898b779a40edecf3dd73c21ec32b47) - fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269), 2024-01-25 by _Guillaume Chervet_ ## v7.13.15 -- [c56cc84](https://github.com/AxaFrance/oidc-client/commit/c56cc842d8da427b2aa88eb71f7d63937ea3c363) - fix(react-oidc): missing console.log in useOidcFetch (release), 2024-01-16 by *Guillaume Chervet* - +- [c56cc84](https://github.com/AxaFrance/oidc-client/commit/c56cc842d8da427b2aa88eb71f7d63937ea3c363) - fix(react-oidc): missing console.log in useOidcFetch (release), 2024-01-16 by _Guillaume Chervet_ ## v7.13.14 -- [3a1883c](https://github.com/AxaFrance/oidc-client/commit/3a1883c343c55637aa1ce5d118cc2841c76d8752) - build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252), 2024-01-02 by *dependabot[bot]* - +- [3a1883c](https://github.com/AxaFrance/oidc-client/commit/3a1883c343c55637aa1ce5d118cc2841c76d8752) - build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252), 2024-01-02 by _dependabot[bot]_ ## v7.13.13 -- [1faaab4](https://github.com/AxaFrance/oidc-client/commit/1faaab4ecb86144ed6f3c1ed68b938804854bd36) - build(npm): bump next from 14.0.3 to 14.0.4 (#1255), 2024-01-02 by *dependabot[bot]* -- [d009de8](https://github.com/AxaFrance/oidc-client/commit/d009de8091ac256d1384466df9b3fe7de75a5629) - chore(ci): Update npm-publish.yml, 2023-12-28 by *Guillaume Chervet* - +- [1faaab4](https://github.com/AxaFrance/oidc-client/commit/1faaab4ecb86144ed6f3c1ed68b938804854bd36) - build(npm): bump next from 14.0.3 to 14.0.4 (#1255), 2024-01-02 by _dependabot[bot]_ +- [d009de8](https://github.com/AxaFrance/oidc-client/commit/d009de8091ac256d1384466df9b3fe7de75a5629) - chore(ci): Update npm-publish.yml, 2023-12-28 by _Guillaume Chervet_ ## v7.13.12 -- [9ef56f1](https://github.com/AxaFrance/oidc-client/commit/9ef56f17793e1bfbd668d6f001125a8f773c2370) - fix(oidc): Handling of errors returned from authorize endpoint (#1250) (release), 2023-12-28 by *Guillaume Chervet* - +- [9ef56f1](https://github.com/AxaFrance/oidc-client/commit/9ef56f17793e1bfbd668d6f001125a8f773c2370) - fix(oidc): Handling of errors returned from authorize endpoint (#1250) (release), 2023-12-28 by _Guillaume Chervet_ ## v7.13.11 -- [529cabf](https://github.com/AxaFrance/oidc-client/commit/529cabfbe7ee602325ba0f70844c969176371746) - fix(oidc): DPOP type jit instead of jti (#1249) (release), 2023-12-20 by *Guillaume Chervet* - +- [529cabf](https://github.com/AxaFrance/oidc-client/commit/529cabfbe7ee602325ba0f70844c969176371746) - fix(oidc): DPOP type jit instead of jti (#1249) (release), 2023-12-20 by _Guillaume Chervet_ ## v7.13.10 -- [4b1a9a2](https://github.com/AxaFrance/oidc-client/commit/4b1a9a26eba51e24dd1c9c9fd0087ef0b3b1ce8b) - fix(oidc): crash when regex on userAgent empty result iOS (#1248) (release), 2023-12-20 by *Guillaume Chervet* - +- [4b1a9a2](https://github.com/AxaFrance/oidc-client/commit/4b1a9a26eba51e24dd1c9c9fd0087ef0b3b1ce8b) - fix(oidc): crash when regex on userAgent empty result iOS (#1248) (release), 2023-12-20 by _Guillaume Chervet_ ## v7.13.9 -- [819962b](https://github.com/AxaFrance/oidc-client/commit/819962bae1d7c1e7fd997ede7bb42cce27ba76f3) - fix(oidc): renew with simple storage (#1246) (release), 2023-12-19 by *Guillaume Chervet* - +- [819962b](https://github.com/AxaFrance/oidc-client/commit/819962bae1d7c1e7fd997ede7bb42cce27ba76f3) - fix(oidc): renew with simple storage (#1246) (release), 2023-12-19 by _Guillaume Chervet_ ## v7.13.8 -- [b0cf4ad](https://github.com/AxaFrance/oidc-client/commit/b0cf4ad52df9c16c130cce791b05ceea7c4370c4) - fix(oidc): temp renew token fix (#1245) (release), 2023-12-18 by *Guillaume Chervet* - +- [b0cf4ad](https://github.com/AxaFrance/oidc-client/commit/b0cf4ad52df9c16c130cce791b05ceea7c4370c4) - fix(oidc): temp renew token fix (#1245) (release), 2023-12-18 by _Guillaume Chervet_ ## v7.13.7 -- [6667eab](https://github.com/AxaFrance/oidc-client/commit/6667eabc8c5cb0ff5874b6583b2223721bd18525) - fix(oidc): temporary fix on lock need to be continued but require refactor (release), 2023-12-15 by *Guillaume Chervet* -- [23c8715](https://github.com/AxaFrance/oidc-client/commit/23c87152e55c8d7f1c51a33032d48c751b15c4c5) - fix(ci): clean changelog generation, 2023-12-15 by *Guillaume Chervet* -- [9f1f7f6](https://github.com/AxaFrance/oidc-client/commit/9f1f7f684a6b344f59221caf3e3a14faef73a6bc) - fix(oidc): session storage for next (#1240) (alpha), 2023-12-12 by *Guillaume Chervet* -- [64a8df3](https://github.com/AxaFrance/oidc-client/commit/64a8df3281f95159a60e5f9ec61db315a8d20c7d) - fix(oidc-client): make locks work only ifAvailable (#1237)(alpha), 2023-12-09 by *abhilashlr* - - +- [6667eab](https://github.com/AxaFrance/oidc-client/commit/6667eabc8c5cb0ff5874b6583b2223721bd18525) - fix(oidc): temporary fix on lock need to be continued but require refactor (release), 2023-12-15 by _Guillaume Chervet_ +- [23c8715](https://github.com/AxaFrance/oidc-client/commit/23c87152e55c8d7f1c51a33032d48c751b15c4c5) - fix(ci): clean changelog generation, 2023-12-15 by _Guillaume Chervet_ +- [9f1f7f6](https://github.com/AxaFrance/oidc-client/commit/9f1f7f684a6b344f59221caf3e3a14faef73a6bc) - fix(oidc): session storage for next (#1240) (alpha), 2023-12-12 by _Guillaume Chervet_ +- [64a8df3](https://github.com/AxaFrance/oidc-client/commit/64a8df3281f95159a60e5f9ec61db315a8d20c7d) - fix(oidc-client): make locks work only ifAvailable (#1237)(alpha), 2023-12-09 by _abhilashlr_ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 346f0293e..4cf779635 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,7 @@ pnpm install pnpm run dev # then navigate to http://localhost:3001 ``` + You are now ready to contribute! ## Pull Request @@ -39,21 +40,23 @@ Packages are automatically published on npm when a PR is merged on main. Example of commit messages : To publish a patch version (0.0.x) : + - fix(oidc): my message (alpha) => will publish next patch as an alpha - chore(oidc): my message (beta) => will publish next patch as an beta - refactor(oidc): my message (release) => will publish next patch release (with automatic git tag and release) To publish a minor version (0.x.0) : + - feat(oidc): my message (alpha) => will publish next minor as an alpha - feat(oidc): my message (beta) => will publish next minor as an beta - feat(oidc): my message (release) => will publish next minor release (with automatic git tag and release) To publish a major version (x.0.0) : + - fix(oidc): my message containing BREACKING word (alpha) => will publish next major as an alpha - fix(oidc): my message containing BREACKING word (beta) => will publish next major as an beta - fix(oidc): my message containing BREACKING word (release) => will publish next major release (with automatic git tag and release) - ## Issue Please respect the following [ISSUE_TEMPLATE.md](./ISSUE_TEMPLATE.md) diff --git a/FAQ.md b/FAQ.md index a39a5af41..cb3904add 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,6 +1,6 @@ # FAQ (Frequently Asked Questions) -## Condition to make silent signing work +## Condition to make silent signing work Third-party cookies are blocked by default on Safari and will be blocked on all browsers soon. Today, silent signing works on Safari only if the OIDC provider and the client application are on the same domain. @@ -17,24 +17,24 @@ It opens an IFrame in the background, directed to a specific page on your OIDC p ## Condition to make Single Logout to work -The same domain constraint for "silent signing" applies to Single Logout. +The same domain constraint for "silent signing" applies to Single Logout. Single Logout allows you to disconnect from multiple OIDC Client sessions in one action, even if you are connected to different applications. ## Condition to make Monitor Session to work -Same domain constraint for "silent signing" applies to "monitorSession". +Same domain constraint for "silent signing" applies to "monitorSession". Monitor session notifies you when your session expires or when you are disconnected from your OIDC provider. ## Does Service Worker is mandatory ? -Service Worker can be disable. +Service Worker can be disable. You can use classic mode without Service Worker. Just comment "service_worker_relative_url" like bellow: -````javascript +```javascript export const configuration = { client_id: 'interactive.public.short', redirect_uri: window.location.origin + '/#/authentication/callback', @@ -44,24 +44,24 @@ export const configuration = { // service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, }; -```` +``` -If your Service Worker file is already registered on your browser, your need to unregister it. For example from chrome dev tool. +If your Service Worker file is already registered on your browser, your need to unregister it. For example from chrome dev tool. ## Tokens are always refreshed in background every seconds The @axa-fr/oidc-client automatically refreshes tokens in the background. -It refreshes tokens before expiration to maintain valid tokens at all times. +It refreshes tokens before expiration to maintain valid tokens at all times. If your token session lifetime is too short, frequent refreshes will occur. -Token refreshing starts 120 seconds before expiration. +Token refreshing starts 120 seconds before expiration. -Setting a session validity longer than 3 minutes is advisable. +Setting a session validity longer than 3 minutes is advisable. By default, @axa-fr/oidc-client chooses the shorter lifetime between access_token and id_token. Use the "token_renew_mode" option to change this behavior. - - **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" +- **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" ## window.crypto.subtle is unavailable over HTTP @@ -103,23 +103,22 @@ Quick time-to-market: Start with client-side OIDC, migrate to server-side if nee @axa-fr/oidc-client is the simplest and cheapest.

- ## Good Security Practices : does a Hacker can unregister the Service Worker and retrieve tokens via an Iframe ? To block token retrieval via an Iframe call and prevent Service Worker unregistration, comply with these practices: 1 - Correctly configure the CSP (Content Security Policy) on the server side. -Example: +Example: -````bash +```bash server: { headers: { "Content-Security-Policy": "script-src 'self';", }, } -```` +``` -This blocks dynamic script injection into an iframe. +This blocks dynamic script injection into an iframe. 2 - Initialize `` for **React** or the redirect callback for **oidc-client** at the start of your application script. Configure it before making any fetch calls to services. diff --git a/MIGRATION_GUIDE_V3_TO_V4.md b/MIGRATION_GUIDE_V3_TO_V4.md index dbf072330..91ecb47d7 100644 --- a/MIGRATION_GUIDE_V3_TO_V4.md +++ b/MIGRATION_GUIDE_V3_TO_V4.md @@ -18,24 +18,25 @@ Main provider component have been renamed ```javascript import { AuthenticationProvider } from '@axa-fr/react-oidc-context'; -// old v3 +// old v3 - - +; // in v4 becomes import { OidcProvider } from '@axa-fr/react-oidc-context'; // loggerLevel : Logger property has been removed in v4 - - +; ``` Provider properties have changed, you need to keep only required properties for v4 else it won't work. ```javascript -// old v3 +// old v3 const propTypes = { notAuthenticated: PropTypes.elementType, // react component displayed during authentication notAuthorized: PropTypes.elementType, // react component displayed in case user is not Authorised @@ -75,7 +76,7 @@ const propTypes = { UserStore: PropTypes.func, }; -// new v4 +// new v4 const propTypes = { loadingComponent: PropTypes.elementType, // you can inject your own loading component sessionLostComponent: PropTypes.elementType, // you can inject your own session lost component @@ -100,25 +101,27 @@ const propTypes = { Manage Oidc actions and information ```javascript - -// old v3 +// old v3 import { useReactOidc } from '@axa-fr/react-oidc-context'; -const { isEnabled, login, logout, oidcUser, events } = useReactOidc(); +const { isEnabled, login, logout, oidcUser, events } = useReactOidc(); - -// new v4 -import { useOidc, useOidcAccessToken, useOidcIdToken, useOidcUser } from '@axa-fr/react-oidc-context'; +// new v4 +import { + useOidc, + useOidcAccessToken, + useOidcIdToken, + useOidcUser, +} from '@axa-fr/react-oidc-context'; const { login, logout, isAuthenticated } = useOidc(); // login and logout return a Promise const { oidcUser, isOidcUserLoading } = useOidcUser(); // Return user_info endpoint data const { accessToken, accessTokenPayload } = useOidcAccessToken(); // Contain access_token metadata acess_token is a JWK const { idToken, idTokenPayload } = useOidcIdToken(); // contain IDToken metadata - ``` ```javascript -// old v3 +// old v3 import { withFetchRedirectionOn401, withFetchSilentAuthenticateAndRetryOn401, withFetchRedirectionOn403, @@ -160,7 +163,7 @@ Then edit `OidcTrustedDomains.js` in "public" folder for your need // OidcTrustedDomains.js // Add here trusted domains, access tokens will be send to const trustedDomains = { - default:["http://localhost:4200"], + default: ['http://localhost:4200'], }; ``` diff --git a/MIGRATION_GUIDE_V3_TO_V5.md b/MIGRATION_GUIDE_V3_TO_V5.md index f67cae5de..2e68c48bc 100644 --- a/MIGRATION_GUIDE_V3_TO_V5.md +++ b/MIGRATION_GUIDE_V3_TO_V5.md @@ -20,24 +20,25 @@ Main provider component have been renamed ```javascript import { AuthenticationProvider } from '@axa-fr/react-oidc-context'; -// old v3 +// old v3 - - +; // in v5 becomes import { OidcProvider } from '@axa-fr/react-oidc-context'; // loggerLevel : Logger property has been removed in v4 - - +; ``` Provider properties have changed, you need to keep only required properties for v4 else it won't work. ```javascript -// old v3 +// old v3 const propTypes = { notAuthenticated: PropTypes.elementType, // react component displayed during authentication notAuthorized: PropTypes.elementType, // react component displayed in case user is not Authorised @@ -103,16 +104,19 @@ const propTypes = { Manage Oidc actions and information ```javascript - -// old v3 +// old v3 import { useReactOidc } from '@axa-fr/react-oidc-context'; -const { isEnabled, login, logout, oidcUser, events } = useReactOidc(); - +const { isEnabled, login, logout, oidcUser, events } = useReactOidc(); // new v5 -import { useOidc, useOidcAccessToken, useOidcIdToken, useOidcUser } from '@axa-fr/react-oidc-context'; - -const { login, logout, isAuthenticated} = useOidc(); // login and logout return a Promise +import { + useOidc, + useOidcAccessToken, + useOidcIdToken, + useOidcUser, +} from '@axa-fr/react-oidc-context'; + +const { login, logout, isAuthenticated } = useOidc(); // login and logout return a Promise const { oidcUser, oidcUserLoadingState } = useOidcUser(); // Return user_info endpoint data const { accessToken, accessTokenPayload } = useOidcAccessToken(); // Contain access_token metadata acess_token is a JWK const { idToken, idTokenPayload } = useOidcIdToken(); // contain IDToken metadata @@ -120,7 +124,7 @@ const { idToken, idTokenPayload } = useOidcIdToken(); // contain IDToken metadat ```javascript -// old v3 +// old v3 import { withFetchRedirectionOn401, withFetchSilentAuthenticateAndRetryOn401, withFetchRedirectionOn403, @@ -136,7 +140,7 @@ import { withOidcFetch } from '@axa-fr/react-oidc-context'; // withFetchToken in v3 have been rename to withOidcFetch and set inside '@axa-fr/react-oidc-context' package withOidcFetch() - + ``` If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. @@ -162,7 +166,7 @@ Then edit `OidcTrustedDomains.js` in "public" folder for your need // OidcTrustedDomains.js // Add here trusted domains, access tokens will be send to const trustedDomains = { - default:["http://localhost:4200"], + default: ['http://localhost:4200'], }; ``` diff --git a/MIGRATION_GUIDE_V6_TO_V7.md b/MIGRATION_GUIDE_V6_TO_V7.md index 51cb01b41..e3b5838fb 100644 --- a/MIGRATION_GUIDE_V6_TO_V7.md +++ b/MIGRATION_GUIDE_V6_TO_V7.md @@ -5,15 +5,13 @@ - On version 7.3.0 configuration.service_worker_convert_all_requests_to_cors as been moved to TrustedDomains.js ```javascript - // Service worker will continue to give access token to the JavaScript client // Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some // scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { - domains: ['https://demo.duendesoftware.com'], - showAccessToken: true, - // convertAllRequestsToCorsExceptNavigate: false, // default value is false - // setAccessTokenToNavigateRequests: true, // default value is true +trustedDomains.config_show_access_token = { + domains: ['https://demo.duendesoftware.com'], + showAccessToken: true, + // convertAllRequestsToCorsExceptNavigate: false, // default value is false + // setAccessTokenToNavigateRequests: true, // default value is true }; - -``` \ No newline at end of file +``` diff --git a/README.md b/README.md index 2b5748b5b..823aad7ee 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=alert_status)](https://sonarcloud.io/dashboard?id=AxaGuilDEv_react-oidc) [![Reliability](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=reliability_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=reliability_rating) [![Security](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=security_rating)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=security_rating) [![Code Coverage](https://sonarcloud.io/api/project_badges/measure?project=AxaGuilDEv_react-oidc&metric=coverage)](https://sonarcloud.io/component_measures?id=AxaGuilDEv_react-oidc&metric=Coverage) [![Twitter](https://img.shields.io/twitter/follow/GuildDEvOpen?style=social)](https://twitter.com/intent/follow?screen_name=GuildDEvOpen) -

Sample React Oicd [!WARNING] > If you use `Service Worker` mode, the `OidcServiceWorker.js` file should always be up to date with the version of the library. You may setup a postinstall script in your `package.json` file to update it at each npm install. For example : @@ -157,7 +155,6 @@ pnpm run dev The service worker catch access_token and refresh_token that will never be accessible to the client.

- These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. Internally for "`@axa-fr/react-oidc`", native History API is used to be router library agnostic. @@ -170,7 +167,7 @@ More information about OIDC : ## FAQ -- Frequented Asked Question [`FAQ`](./FAQ.md) +- Frequented Asked Question [`FAQ`](./FAQ.md) ## Migrations diff --git a/SECURITY.md b/SECURITY.md index a9c26f5e4..74720879a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ Use this section to tell people about which versions of your project are currently being supported with security updates. | Version | Supported | -|---------|--------------------| +| ------- | ------------------ | | 5.1.x | :white_check_mark: | | 5.0.x | :x: | | 4.0.x | :white_check_mark: | diff --git a/eslint.config.mjs b/eslint.config.mjs index 990582939..2d46ef43c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,195 +1,219 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; -import { FlatCompat } from "@eslint/eslintrc"; -import js from "@eslint/js"; -import typescriptEslint from "@typescript-eslint/eslint-plugin"; -import tsParser from "@typescript-eslint/parser"; -import prettier from "eslint-plugin-prettier/recommended"; -import react from "eslint-plugin-react"; -import simpleImportSort from "eslint-plugin-simple-import-sort"; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import prettier from 'eslint-plugin-prettier/recommended'; +import react from 'eslint-plugin-react'; +import simpleImportSort from 'eslint-plugin-simple-import-sort'; //import testingLibrary from "eslint-plugin-testing-library"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all, + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, }); -export default [{ +export default [ + { ignores: [ - "**/*.d.ts", - "packages/**/dist/**/*", - "packages/**/public/**/*", - "packages/**/coverage/**/*", - "packages/**/fixtures/**/*", - "**/node_modules", - "public/**/*", - "examples/**/static/**/*", - "examples/**/dist/**/*", - "examples/**/OidcTrustedDomains.js", - "examples/**/OidcServiceWorker.js", - "examples/**/nextjs-demo/**", - "scripts/**/*", - "**/.github", - "**/.changeset", - "**/vite.config.js", - "**/webpack-runtime.js", + '**/*.d.ts', + 'packages/**/dist/**/*', + 'packages/**/public/**/*', + 'packages/**/coverage/**/*', + 'packages/**/fixtures/**/*', + '**/node_modules', + 'public/**/*', + 'examples/**/static/**/*', + 'examples/**/dist/**/*', + 'examples/**/OidcTrustedDomains.js', + 'examples/**/OidcServiceWorker.js', + 'examples/**/nextjs-demo/**', + 'scripts/**/*', + '**/.github', + '**/.changeset', + '**/vite.config.js', + '**/webpack-runtime.js', ], -}, ...fixupConfigRules(compat.extends( - "plugin:react/recommended", - "plugin:react-hooks/recommended", - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/typescript", - "plugin:jsx-a11y/recommended", -)), { + }, + ...fixupConfigRules( + compat.extends( + 'plugin:react/recommended', + 'plugin:react-hooks/recommended', + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:import/typescript', + 'plugin:jsx-a11y/recommended', + ), + ), + { plugins: { - "@typescript-eslint": fixupPluginRules(typescriptEslint), - "simple-import-sort": simpleImportSort, - //"testing-library": testingLibrary, //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 - react: fixupPluginRules(react), + '@typescript-eslint': fixupPluginRules(typescriptEslint), + 'simple-import-sort': simpleImportSort, + //"testing-library": testingLibrary, //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 + react: fixupPluginRules(react), }, languageOptions: { - parser: tsParser, - ecmaVersion: 2022, - sourceType: "module", + parser: tsParser, + ecmaVersion: 2022, + sourceType: 'module', - parserOptions: { - project: ["./tsconfig.eslint.json", "./packages/*/tsconfig.eslint.json"], + parserOptions: { + project: ['./tsconfig.eslint.json', './packages/*/tsconfig.eslint.json'], - ecmaFeatures: { - jsx: true, - }, - - warnOnUnsupportedTypeScriptVersion: true, + ecmaFeatures: { + jsx: true, }, + + warnOnUnsupportedTypeScriptVersion: true, + }, }, settings: { - env: { - browser: true, - node: true, - }, - react: { - version: "18", - }, - - "import/resolver": { - typescript: { - alwaysTryTypes: true, - }, + env: { + browser: true, + node: true, + }, + react: { + version: '18', + }, + + 'import/resolver': { + typescript: { + alwaysTryTypes: true, }, + }, }, rules: { - "@typescript-eslint/interface-name-prefix": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "no-unused-vars": "off", - - "@typescript-eslint/no-unused-vars": ["error", { - argsIgnorePattern: "^_|req|res|next|err|ctx|args|context|info|index|data", - ignoreRestSiblings: true, - }], - - "no-array-constructor": "off", - "@typescript-eslint/no-array-constructor": "warn", - "no-redeclare": "off", - "@typescript-eslint/no-redeclare": "warn", - "no-use-before-define": "off", - - "@typescript-eslint/no-use-before-define": ["warn", { - functions: false, - classes: false, - variables: false, - typedefs: false, - }], - - "no-unused-expressions": "off", - - "@typescript-eslint/no-unused-expressions": ["error", { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true, - }], - - "@typescript-eslint/triple-slash-reference": "off", - - "@typescript-eslint/member-delimiter-style": ["error", { - multiline: { - delimiter: "semi", - requireLast: true, - }, - - singleline: { - delimiter: "semi", - requireLast: false, - }, - }], - - camelcase: "off", - - "comma-dangle": ["error", { - arrays: "always-multiline", - objects: "always-multiline", - imports: "always-multiline", - exports: "always-multiline", - functions: "always-multiline", - }], - - "array-callback-return": "warn", - "jsx-quotes": ["error", "prefer-double"], - indent: "off", - semi: ["error", "always"], - "space-before-function-paren": "off", - "import/no-named-as-default": "off", - "import/no-named-as-default-member": "off", - "import/default": "off", - "import/named": "off", - "import/namespace": "off", - "import/no-unresolved": "off", - "simple-import-sort/imports": "error", - "simple-import-sort/exports": "error", - "react/prop-types": "off", - "react/jsx-wrap-multilines": "error", - "react/react-in-jsx-scope": "off", - "react/display-name": "off", - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "off", + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'no-unused-vars': 'off', + + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_|req|res|next|err|ctx|args|context|info|index|data', + ignoreRestSiblings: true, + }, + ], + + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'warn', + 'no-redeclare': 'off', + '@typescript-eslint/no-redeclare': 'warn', + 'no-use-before-define': 'off', + + '@typescript-eslint/no-use-before-define': [ + 'warn', + { + functions: false, + classes: false, + variables: false, + typedefs: false, + }, + ], + + 'no-unused-expressions': 'off', + + '@typescript-eslint/no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTernary: true, + allowTaggedTemplates: true, + }, + ], + + '@typescript-eslint/triple-slash-reference': 'off', + + '@typescript-eslint/member-delimiter-style': [ + 'error', + { + multiline: { + delimiter: 'semi', + requireLast: true, + }, + + singleline: { + delimiter: 'semi', + requireLast: false, + }, + }, + ], + + camelcase: 'off', + + 'comma-dangle': [ + 'error', + { + arrays: 'always-multiline', + objects: 'always-multiline', + imports: 'always-multiline', + exports: 'always-multiline', + functions: 'always-multiline', + }, + ], + + 'array-callback-return': 'warn', + 'jsx-quotes': ['error', 'prefer-double'], + indent: 'off', + semi: ['error', 'always'], + 'space-before-function-paren': 'off', + 'import/no-named-as-default': 'off', + 'import/no-named-as-default-member': 'off', + 'import/default': 'off', + 'import/named': 'off', + 'import/namespace': 'off', + 'import/no-unresolved': 'off', + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + 'react/prop-types': 'off', + 'react/jsx-wrap-multilines': 'error', + 'react/react-in-jsx-scope': 'off', + 'react/display-name': 'off', + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'off', }, -}, { - files: ["**/*.js", "**/*.jsx"], + }, + { + files: ['**/*.js', '**/*.jsx'], rules: { - "@typescript-eslint/no-var-requires": "off", + '@typescript-eslint/no-var-requires': 'off', - "react/no-unknown-property": [2, { - ignore: ["jsx", "global"], - }], + 'react/no-unknown-property': [ + 2, + { + ignore: ['jsx', 'global'], + }, + ], }, -}, -prettier, -//Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 -// ...compat.extends("plugin:testing-library/react").map(config => ({ -// ...config, -// files: ["**/?(*.)+(spec|test).[jt]s?(x)"], -// })), { -// files: ["**/?(*.)+(spec|test).[jt]s?(x)"], - -// rules: { -// "testing-library/no-container": "off" -// "testing-library/await-async-query": "error", -// "testing-library/no-await-sync-query": "error", -// testing-library/no-debugging-utils": "off", -// "testing-library/no-dom-import": "off", -// "testing-library/no-unnecessary-act": "off", -// }, -// } -]; \ No newline at end of file + }, + prettier, + //Not compatible with ESLint9 yet https://github.com/jsx-eslint/eslint-plugin-react/issues/3699 + // ...compat.extends("plugin:testing-library/react").map(config => ({ + // ...config, + // files: ["**/?(*.)+(spec|test).[jt]s?(x)"], + // })), { + // files: ["**/?(*.)+(spec|test).[jt]s?(x)"], + + // rules: { + // "testing-library/no-container": "off" + // "testing-library/await-async-query": "error", + // "testing-library/no-await-sync-query": "error", + // testing-library/no-debugging-utils": "off", + // "testing-library/no-dom-import": "off", + // "testing-library/no-unnecessary-act": "off", + // }, + // } +]; diff --git a/examples/nextjs-demo/README.md b/examples/nextjs-demo/README.md index ee14292a3..763bd368f 100644 --- a/examples/nextjs-demo/README.md +++ b/examples/nextjs-demo/README.md @@ -1,6 +1,7 @@ # Nextjs @axa-fr/react-oidc demo ## Getting Started + ```sh git clone https://github.com/AxaGuilDEv/react-oidc.git cd react-oidc/packages/nextjs-demo @@ -11,44 +12,49 @@ npm run dev To work with NextJS you need to inject your own history surcharge like the sample below. component/layout.js + ```javascript import { OidcProvider } from '@axa-fr/react-oidc'; -import { useRouter } from 'next/router' +import { useRouter } from 'next/router'; const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:3001/#authentication/callback', - silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com' + client_id: 'interactive.public.short', + redirect_uri: 'http://localhost:3001/#authentication/callback', + silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session + scope: 'openid profile email api offline_access', + authority: 'https://demo.duendesoftware.com', }; -const onEvent=(configurationName, eventName, data )=>{ +const onEvent = (configurationName, eventName, data) => { console.log(`oidc:${configurationName}:${eventName}`, data); -} +}; export default function Layout({ children }) { - const router = useRouter() - const withCustomHistory= () => { + const router = useRouter(); + const withCustomHistory = () => { return { - replaceState: (url) => { - router.replace({ - pathname: url, - }).then(() => { + replaceState: url => { + router + .replace({ + pathname: url, + }) + .then(() => { window.dispatchEvent(new Event('popstate')); - }); - } + }); + }, }; }; - + return ( - <> - -
{children}
-
- - ) + <> + +
{children}
+
+ + ); } - - -``` \ No newline at end of file +``` diff --git a/examples/nextjs-demo/components/layout.js b/examples/nextjs-demo/components/layout.js index 911b8090c..fa8a54e09 100644 --- a/examples/nextjs-demo/components/layout.js +++ b/examples/nextjs-demo/components/layout.js @@ -7,35 +7,40 @@ const configuration = { redirect_uri: 'http://localhost:3001/#authentication/callback', silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', + authority: 'https://demo.duendesoftware.com', preload_user_info: 'true', }; -const onEvent=(configurationName, eventName, data )=>{ - // eslint-disable-next-line no-undef - console.log(`oidc:${configurationName}:${eventName}`, data); - }; +const onEvent = (configurationName, eventName, data) => { + // eslint-disable-next-line no-undef + console.log(`oidc:${configurationName}:${eventName}`, data); +}; export default function Layout({ children }) { - const router = useRouter(); - const withCustomHistory= () => { - return { - replaceState: (url) => { - router.replace({ - pathname: url, - }).then(() => { - // eslint-disable-next-line no-undef - window.dispatchEvent(new Event('popstate')); - }, - ); - }, - }; + const router = useRouter(); + const withCustomHistory = () => { + return { + replaceState: url => { + router + .replace({ + pathname: url, + }) + .then(() => { + // eslint-disable-next-line no-undef + window.dispatchEvent(new Event('popstate')); + }); + }, }; + }; return ( <> - -
{children}
+ +
{children}
); -} \ No newline at end of file +} diff --git a/examples/nextjs-demo/pages/_app.js b/examples/nextjs-demo/pages/_app.js index 829aeaaca..95cf06fe0 100644 --- a/examples/nextjs-demo/pages/_app.js +++ b/examples/nextjs-demo/pages/_app.js @@ -6,4 +6,4 @@ export default function MyApp({ Component, pageProps }) { ); -} \ No newline at end of file +} diff --git a/examples/nextjs-demo/pages/index.js b/examples/nextjs-demo/pages/index.js index 60f18e231..59d6a5f0c 100644 --- a/examples/nextjs-demo/pages/index.js +++ b/examples/nextjs-demo/pages/index.js @@ -1,90 +1,97 @@ -import {OidcSecure, OidcUserStatus, useOidc, useOidcAccessToken, useOidcIdToken, useOidcUser} from '@axa-fr/react-oidc'; +import { + OidcSecure, + OidcUserStatus, + useOidc, + useOidcAccessToken, + useOidcIdToken, + useOidcUser, +} from '@axa-fr/react-oidc'; import Head from 'next/head'; -const isBrowser = () => typeof window !== "undefined"; +const isBrowser = () => typeof window !== 'undefined'; const DisplayUserInfo = () => { - const{ oidcUser, oidcUserLoadingState } = useOidcUser(); - const { isAuthenticated } = useOidc(); - console.log( - "isBrowser: " + - isBrowser() + - ", isAuthenticated: " + - isAuthenticated + - ", oidcUser: " - ); - console.log(oidcUser); - - switch (oidcUserLoadingState){ - case OidcUserStatus.Loading: - return

User Information are loading

; - case OidcUserStatus.Unauthenticated: - return

you are not authenticated

; - case OidcUserStatus.LoadingError: - return

Fail to load user information

; - default: - return ( -
-
-
User information
-

{JSON.stringify(oidcUser)}

-
-
- ); + const { oidcUser, oidcUserLoadingState } = useOidcUser(); + const { isAuthenticated } = useOidc(); + console.log( + 'isBrowser: ' + isBrowser() + ', isAuthenticated: ' + isAuthenticated + ', oidcUser: ', + ); + console.log(oidcUser); + + switch (oidcUserLoadingState) { + case OidcUserStatus.Loading: + return

User Information are loading

; + case OidcUserStatus.Unauthenticated: + return

you are not authenticated

; + case OidcUserStatus.LoadingError: + return

Fail to load user information

; + default: + return ( +
+
+
User information
+

{JSON.stringify(oidcUser)}

+
+
+ ); } }; export const Profile = () => { - return ( -
- - - -
+
+ + + +
); }; const DisplayAccessToken = () => { - const{ accessToken, accessTokenPayload } = useOidcAccessToken(); + const { accessToken, accessTokenPayload } = useOidcAccessToken(); - if(!accessToken){ - return

you are not authenticated

; + if (!accessToken) { + return

you are not authenticated

; } return ( -
-
-
Access Token
-

- Please consider to configure the ServiceWorker in order to protect your application from XSRF attacks. "access_token" and "refresh_token" will never be accessible from your client side javascript.

- {

Access Token: {JSON.stringify(accessToken)}

} - {accessTokenPayload != null &&

Access Token Payload: {JSON.stringify(accessTokenPayload)}

} -
+
+
+
Access Token
+

+ Please consider to configure the ServiceWorker in order to protect your application from + XSRF attacks. "access_token" and "refresh_token" will never be + accessible from your client side javascript. +

+ {

Access Token: {JSON.stringify(accessToken)}

} + {accessTokenPayload != null && ( +

Access Token Payload: {JSON.stringify(accessTokenPayload)}

+ )}
+
); }; +const DisplayIdToken = () => { + const { idToken, idTokenPayload } = useOidcIdToken(); -const DisplayIdToken =() => { - const{ idToken, idTokenPayload } = useOidcIdToken(); - - if(!idToken){ - return

you are not authenticated

; + if (!idToken) { + return

you are not authenticated

; } return ( -
-
-
ID Token
- {

IdToken: {JSON.stringify(idToken)}

} - {idTokenPayload != null &&

IdToken Payload: {JSON.stringify(idTokenPayload)}

} -
+
+
+
ID Token
+ {

IdToken: {JSON.stringify(idToken)}

} + {idTokenPayload != null && ( +

IdToken Payload: {JSON.stringify(idTokenPayload)}

+ )}
+
); }; export default function Home() { - return (
@@ -93,18 +100,16 @@ export default function Home() {
-

- Welcome to Next.js @axa-fr/react-oidc demo! + Welcome to{' '} + Next.js @axa-fr/react-oidc demo!

- +
- -
-
+
+ + +
+ ); +} + diff --git a/examples/nextjs-demo/package.json b/examples/nextjs-demo/package.json index 48f54b625..2587b2cd4 100644 --- a/examples/nextjs-demo/package.json +++ b/examples/nextjs-demo/package.json @@ -8,8 +8,9 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "next": "latest", - "react": "latest", - "react-dom": "latest" + "next": "^16.2.4", + "react": "^19.2.5", + "react-dom": "^19.2.5", + "styled-jsx": "^5.1.7" } } diff --git a/examples/nextjs-demo/pages/_app.js b/examples/nextjs-demo/pages/_app.js index 95cf06fe0..680bef9ce 100644 --- a/examples/nextjs-demo/pages/_app.js +++ b/examples/nextjs-demo/pages/_app.js @@ -1,4 +1,6 @@ -import Layout from '../components/layout'; +import dynamic from 'next/dynamic'; + +const Layout = dynamic(() => import('../components/layout'), { ssr: false }); export default function MyApp({ Component, pageProps }) { return ( diff --git a/examples/nextjs-demo/pages/index.js b/examples/nextjs-demo/pages/index.js index 59d6a5f0c..035b89697 100644 --- a/examples/nextjs-demo/pages/index.js +++ b/examples/nextjs-demo/pages/index.js @@ -1,285 +1,5 @@ -import { - OidcSecure, - OidcUserStatus, - useOidc, - useOidcAccessToken, - useOidcIdToken, - useOidcUser, -} from '@axa-fr/react-oidc'; -import Head from 'next/head'; +import dynamic from 'next/dynamic'; -const isBrowser = () => typeof window !== 'undefined'; +const Home = dynamic(() => import('../components/home'), { ssr: false }); -const DisplayUserInfo = () => { - const { oidcUser, oidcUserLoadingState } = useOidcUser(); - const { isAuthenticated } = useOidc(); - console.log( - 'isBrowser: ' + isBrowser() + ', isAuthenticated: ' + isAuthenticated + ', oidcUser: ', - ); - console.log(oidcUser); - - switch (oidcUserLoadingState) { - case OidcUserStatus.Loading: - return

User Information are loading

; - case OidcUserStatus.Unauthenticated: - return

you are not authenticated

; - case OidcUserStatus.LoadingError: - return

Fail to load user information

; - default: - return ( -
-
-
User information
-

{JSON.stringify(oidcUser)}

-
-
- ); - } -}; - -export const Profile = () => { - return ( -
- - - -
- ); -}; - -const DisplayAccessToken = () => { - const { accessToken, accessTokenPayload } = useOidcAccessToken(); - - if (!accessToken) { - return

you are not authenticated

; - } - return ( -
-
-
Access Token
-

- Please consider to configure the ServiceWorker in order to protect your application from - XSRF attacks. "access_token" and "refresh_token" will never be - accessible from your client side javascript. -

- {

Access Token: {JSON.stringify(accessToken)}

} - {accessTokenPayload != null && ( -

Access Token Payload: {JSON.stringify(accessTokenPayload)}

- )} -
-
- ); -}; - -const DisplayIdToken = () => { - const { idToken, idTokenPayload } = useOidcIdToken(); - - if (!idToken) { - return

you are not authenticated

; - } - - return ( -
-
-
ID Token
- {

IdToken: {JSON.stringify(idToken)}

} - {idTokenPayload != null && ( -

IdToken Payload: {JSON.stringify(idTokenPayload)}

- )} -
-
- ); -}; - -export default function Home() { - return ( -
- - Create Next App - - - -
-

- Welcome to{' '} - Next.js @axa-fr/react-oidc demo! -

- - - -
- -
- - - - -
- ); -} - -import Layout from '../components/layout'; - -Home.getLayout = function getLayout(page) { - return {page}; -}; +export default Home; diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 861d153c9..5c9147764 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@axa-fr/oidc-client": "workspace:~", - "typescript": "5.7.3", - "web-vitals": "4.2.4" + "typescript": "6.0.3", + "web-vitals": "5.2.0" }, "scripts": { "start": "vite", @@ -27,8 +27,8 @@ ] }, "devDependencies": { - "@types/node": "20.11.26", - "cross-env": "^7.0.3", - "vite": "5.1.6" + "@types/node": "25.6.0", + "cross-env": "^10.1.0", + "vite": "8.0.10" } } diff --git a/examples/oidc-client-demo/tsconfig.json b/examples/oidc-client-demo/tsconfig.json index 9d379a3c4..133ea1227 100644 --- a/examples/oidc-client-demo/tsconfig.json +++ b/examples/oidc-client-demo/tsconfig.json @@ -11,6 +11,7 @@ "noFallthroughCasesInSwitch": true, "module": "esnext", "moduleResolution": "node", + "ignoreDeprecations": "6.0", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index c2cac7264..fa52d0d60 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -20,24 +20,24 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-router-dom": "^6.22.3" + "react": "^19.2.5", + "react-dom": "^19.2.5", + "react-router-dom": "^7.14.2" }, "devDependencies": { - "@testing-library/jest-dom": "6.6.3", - "@testing-library/react": "15.0.7", - "@testing-library/user-event": "14.5.2", - "@types/react": "19.0.5", - "@vitejs/plugin-react": "4.3.4", - "bootstrap": "^4.6.2", + "@testing-library/jest-dom": "6.9.1", + "@testing-library/react": "16.3.2", + "@testing-library/user-event": "14.6.1", + "@types/react": "19.2.14", + "@vitejs/plugin-react": "6.0.1", + "bootstrap": "^5.3.8", "copyfiles": "2.4.1", - "cross-env": "^7.0.3", - "jsdom": "26.0.0", - "typescript": "5.7.3", - "vite": "6.0.7", - "vite-plugin-dts": "4.5.0", - "vitest": "2.1.8" + "cross-env": "^10.1.0", + "jsdom": "29.0.2", + "typescript": "6.0.3", + "vite": "8.0.10", + "vite-plugin-dts": "4.5.4", + "vitest": "4.1.5" }, "license": "MIT", "publishConfig": { diff --git a/examples/react-oidc-demo/public/tsconfig.json b/examples/react-oidc-demo/public/tsconfig.json index cde526795..84021634e 100644 --- a/examples/react-oidc-demo/public/tsconfig.json +++ b/examples/react-oidc-demo/public/tsconfig.json @@ -7,6 +7,7 @@ "module": "ESNext", "target": "ESNext", "moduleResolution": "Node", + "ignoreDeprecations": "6.0", "sourceMap": true, "declarationMap": true, "outDir": "../dist", diff --git a/examples/react-oidc-demo/tsconfig.json b/examples/react-oidc-demo/tsconfig.json index 60aae80a8..a7bee6859 100644 --- a/examples/react-oidc-demo/tsconfig.json +++ b/examples/react-oidc-demo/tsconfig.json @@ -1,4 +1,4 @@ -{ +{ "compilerOptions": { "target": "ES2019", "lib": ["ES2021", "DOM"], @@ -21,6 +21,7 @@ "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true diff --git a/package.json b/package.json index 74f3fc305..efaa4ada3 100644 --- a/package.json +++ b/package.json @@ -28,29 +28,31 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@eslint/compat": "^2.0.1", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", - "eslint": "^9.39.2", + "@eslint/compat": "^2.0.5", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "^10.0.1", + "@typescript-eslint/eslint-plugin": "^8.59.0", + "@typescript-eslint/parser": "^8.59.0", + "eslint": "^10.2.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-n": "^17.23.2", + "eslint-plugin-n": "^17.24.0", "eslint-plugin-no-only-tests": "^3.3.0", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-regexp": "^3.0.0", - "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-testing-library": "^7.15.4", - "prettier": "^3.8.1", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-regexp": "^3.1.0", + "eslint-plugin-simple-import-sort": "^13.0.0", + "eslint-plugin-testing-library": "^7.16.2", + "prettier": "^3.8.3", "tslib": "^2.8.1", "tsx": "4.21.0", - "typescript": "5.9.3", - "vitest": "4.0.18" + "typescript": "6.0.3", + "vitest": "4.1.5" }, "engines": { - "node": ">= 18.0.0" + "node": ">= 20.19.0" }, "packageManager": "pnpm@8.6.11" } diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index d347cf725..2eeefc4ce 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,14 +34,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "4.0.18", - "cpy": "12.1.0", - "cpy-cli": "^6.0.0", - "rimraf": "6.1.2", - "typescript": "5.9.3", - "vite": "7.3.1", + "@vitest/coverage-v8": "4.1.5", + "cpy": "13.2.1", + "cpy-cli": "^7.0.0", + "rimraf": "6.1.3", + "typescript": "6.0.3", + "vite": "8.0.10", "vite-plugin-dts": "4.5.4", - "vitest": "4.0.18" + "vitest": "4.1.5" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 5eae77bbf..47695cc61 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -43,11 +43,6 @@ export type OidcConfiguration = { demonstrating_proof_of_possession: boolean; }; -// Uncertain why the Headers interface in lib.webworker.d.ts does not have a keys() function, so extending -export interface FetchHeaders extends Headers { - keys(): string[]; -} - export type Status = | 'LOGGED' | 'LOGGED_IN' diff --git a/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts b/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts index d9d9bc3d4..58f2ae3eb 100644 --- a/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts +++ b/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts @@ -1,8 +1,6 @@ -import { FetchHeaders } from '../types'; - function serializeHeaders(headers: Headers) { const headersObj: Record = {}; - for (const key of (headers as FetchHeaders).keys()) { + for (const key of headers.keys()) { if (headers.has(key)) { headersObj[key] = headers.get(key) as string; } diff --git a/packages/oidc-client-service-worker/tsconfig.json b/packages/oidc-client-service-worker/tsconfig.json index cde526795..84021634e 100644 --- a/packages/oidc-client-service-worker/tsconfig.json +++ b/packages/oidc-client-service-worker/tsconfig.json @@ -7,6 +7,7 @@ "module": "ESNext", "target": "ESNext", "moduleResolution": "Node", + "ignoreDeprecations": "6.0", "sourceMap": true, "declarationMap": true, "outDir": "../dist", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index b344d4692..d2039d98b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -26,15 +26,15 @@ "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", - "@types/node": "^22.12.0", - "@vitest/coverage-v8": "4.0.18", - "cpy": "12.1.0", - "cpy-cli": "^6.0.0", - "rimraf": "6.1.2", - "typescript": "5.9.3", - "vite": "7.3.1", + "@types/node": "^25.6.0", + "@vitest/coverage-v8": "4.1.5", + "cpy": "13.2.1", + "cpy-cli": "^7.0.0", + "rimraf": "6.1.3", + "typescript": "6.0.3", + "vite": "8.0.10", "vite-plugin-dts": "4.5.4", - "vitest": "4.0.18" + "vitest": "4.1.5" }, "keywords": [ "oidc", diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 1bb908008..95b8cb1f5 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -133,7 +133,7 @@ export const syncTokensInfoAsync = if (!currentTokens) { return { tokens: null, status: synchroniseTokensStatus.NOT_CONNECTED, nonce: nullNonce }; } - let nonce = nullNonce; + let nonce; const oidcServerConfiguration = await oidc.initAsync( configuration.authority, configuration.authority_configuration, diff --git a/packages/oidc-client/tsconfig.json b/packages/oidc-client/tsconfig.json index 5619bc76a..952485acc 100644 --- a/packages/oidc-client/tsconfig.json +++ b/packages/oidc-client/tsconfig.json @@ -1,4 +1,4 @@ -{ +{ "compilerOptions": { "target": "ES2019", "lib": ["ES2021", "DOM"], @@ -22,6 +22,7 @@ "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 34c587354..56ac6d47b 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -40,8 +40,8 @@ "lint": "eslint src" }, "dependencies": { - "@axa-fr/oidc-client-service-worker": "workspace:*", - "@axa-fr/oidc-client": "workspace:*" + "@axa-fr/oidc-client": "workspace:*", + "@axa-fr/oidc-client-service-worker": "workspace:*" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -50,21 +50,21 @@ "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", - "@types/react": "19.2.10", - "@vitejs/plugin-react": "5.1.2", - "@vitest/coverage-v8": "4.0.18", - "cpy": "12.1.0", - "cpy-cli": "^6.0.0", + "@types/react": "19.2.14", + "@vitejs/plugin-react": "6.0.1", + "@vitest/coverage-v8": "4.1.5", + "cpy": "13.2.1", + "cpy-cli": "^7.0.0", "cross-env": "^10.1.0", - "jsdom": "27.4.0", - "msw": "2.12.7", - "react": "^19.2.4", - "react-dom": "^19.2.4", - "rimraf": "6.1.2", - "typescript": "5.9.3", - "vite": "7.3.1", + "jsdom": "29.0.2", + "msw": "2.13.6", + "react": "^19.2.5", + "react-dom": "^19.2.5", + "rimraf": "6.1.3", + "typescript": "6.0.3", + "vite": "8.0.10", "vite-plugin-dts": "4.5.4", - "vitest": "4.0.18" + "vitest": "4.1.5" }, "license": "MIT", "publishConfig": { diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index a568186fb..7149c6ae3 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -181,10 +181,6 @@ export const OidcProvider: FC> = ({ }; }, [configuration, configurationName]); - useEffect(() => { - setConfigurationName(configurationName); - }, [configurationName]); - const SessionLostComponent = sessionLostComponent; const AuthenticatingComponent = authenticatingComponent; const LoadingComponent = loadingComponent; diff --git a/packages/react-oidc/tsconfig.json b/packages/react-oidc/tsconfig.json index e9a40a38d..e27939401 100644 --- a/packages/react-oidc/tsconfig.json +++ b/packages/react-oidc/tsconfig.json @@ -1,4 +1,4 @@ -{ +{ "compilerOptions": { "target": "ES2019", "lib": ["ES2021", "DOM"], @@ -23,6 +23,7 @@ "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 716dbb482..5532898c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,53 +9,59 @@ importers: .: devDependencies: '@eslint/compat': - specifier: ^2.0.1 - version: 2.0.1(eslint@9.39.2) + specifier: ^2.0.5 + version: 2.0.5(eslint@10.2.1) + '@eslint/eslintrc': + specifier: ^3.3.5 + version: 3.3.5 + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1(eslint@10.2.1) '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0)(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.59.0 + version: 8.59.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1)(typescript@6.0.3) '@typescript-eslint/parser': - specifier: ^8.54.0 - version: 8.54.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.59.0 + version: 8.59.0(eslint@10.2.1)(typescript@6.0.3) eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.2.1 + version: 10.2.1 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.2) + version: 10.1.8(eslint@10.2.1) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.54.0)(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.39.2) + version: 6.10.2(eslint@10.2.1) eslint-plugin-n: - specifier: ^17.23.2 - version: 17.23.2(eslint@9.39.2)(typescript@5.9.3) + specifier: ^17.24.0 + version: 17.24.0(eslint@10.2.1)(typescript@6.0.3) eslint-plugin-no-only-tests: specifier: ^3.3.0 version: 3.3.0 eslint-plugin-prettier: specifier: ^5.5.5 - version: 5.5.5(eslint-config-prettier@10.1.8)(eslint@9.39.2)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8)(eslint@10.2.1)(prettier@3.8.3) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.39.2) + version: 7.37.5(eslint@10.2.1) eslint-plugin-react-hooks: - specifier: ^7.0.1 - version: 7.0.1(eslint@9.39.2) + specifier: ^7.1.1 + version: 7.1.1(eslint@10.2.1) eslint-plugin-regexp: - specifier: ^3.0.0 - version: 3.0.0(eslint@9.39.2) + specifier: ^3.1.0 + version: 3.1.0(eslint@10.2.1) eslint-plugin-simple-import-sort: - specifier: ^12.1.1 - version: 12.1.1(eslint@9.39.2) + specifier: ^13.0.0 + version: 13.0.0(eslint@10.2.1) eslint-plugin-testing-library: - specifier: ^7.15.4 - version: 7.15.4(eslint@9.39.2)(typescript@5.9.3) + specifier: ^7.16.2 + version: 7.16.2(eslint@10.2.1)(typescript@6.0.3) prettier: - specifier: ^3.8.1 - version: 3.8.1 + specifier: ^3.8.3 + version: 3.8.3 tslib: specifier: ^2.8.1 version: 2.8.1 @@ -63,11 +69,11 @@ importers: specifier: 4.21.0 version: 4.21.0 typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 6.0.3 + version: 6.0.3 vitest: - specifier: 4.0.18 - version: 4.0.18(@types/node@22.19.7)(tsx@4.21.0) + specifier: 4.1.5 + version: 4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10) examples/nextjs-demo: dependencies: @@ -75,14 +81,17 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc next: - specifier: latest - version: 16.1.6(@babel/core@7.28.6)(react-dom@19.2.4)(react@19.2.4) + specifier: ^16.2.4 + version: 16.2.4(@babel/core@7.29.0)(react-dom@19.2.5)(react@19.2.5) react: - specifier: latest - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: latest - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) + styled-jsx: + specifier: ^5.1.7 + version: 5.1.7(@babel/core@7.29.0)(react@19.2.5) examples/oidc-client-demo: dependencies: @@ -90,21 +99,21 @@ importers: specifier: workspace:~ version: link:../../packages/oidc-client typescript: - specifier: 5.7.3 - version: 5.7.3 + specifier: 6.0.3 + version: 6.0.3 web-vitals: - specifier: 4.2.4 - version: 4.2.4 + specifier: 5.2.0 + version: 5.2.0 devDependencies: '@types/node': - specifier: 20.11.26 - version: 20.11.26 + specifier: 25.6.0 + version: 25.6.0 cross-env: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^10.1.0 + version: 10.1.0 vite: - specifier: 5.1.6 - version: 5.1.6(@types/node@20.11.26) + specifier: 8.0.10 + version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) examples/react-oidc-demo: dependencies: @@ -112,54 +121,54 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc react: - specifier: ^19.0.0 - version: 19.0.0 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.0.0 - version: 19.0.0(react@19.0.0) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-router-dom: - specifier: ^6.22.3 - version: 6.22.3(react-dom@19.0.0)(react@19.0.0) + specifier: ^7.14.2 + version: 7.14.2(react-dom@19.2.5)(react@19.2.5) devDependencies: '@testing-library/jest-dom': - specifier: 6.6.3 - version: 6.6.3 + specifier: 6.9.1 + version: 6.9.1 '@testing-library/react': - specifier: 15.0.7 - version: 15.0.7(@types/react@19.0.5)(react-dom@19.0.0)(react@19.0.0) + specifier: 16.3.2 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) '@testing-library/user-event': - specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@10.4.1) + specifier: 14.6.1 + version: 14.6.1(@testing-library/dom@10.4.1) '@types/react': - specifier: 19.0.5 - version: 19.0.5 + specifier: 19.2.14 + version: 19.2.14 '@vitejs/plugin-react': - specifier: 4.3.4 - version: 4.3.4(vite@6.0.7) + specifier: 6.0.1 + version: 6.0.1(vite@8.0.10) bootstrap: - specifier: ^4.6.2 - version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) + specifier: ^5.3.8 + version: 5.3.8(@popperjs/core@2.11.8) copyfiles: specifier: 2.4.1 version: 2.4.1 cross-env: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^10.1.0 + version: 10.1.0 jsdom: - specifier: 26.0.0 - version: 26.0.0 + specifier: 29.0.2 + version: 29.0.2 typescript: - specifier: 5.7.3 - version: 5.7.3 + specifier: 6.0.3 + version: 6.0.3 vite: - specifier: 6.0.7 - version: 6.0.7(tsx@4.21.0) + specifier: 8.0.10 + version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) vite-plugin-dts: - specifier: 4.5.0 - version: 4.5.0(typescript@5.7.3)(vite@6.0.7) + specifier: 4.5.4 + version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) vitest: - specifier: 2.1.8 - version: 2.1.8(jsdom@26.0.0) + specifier: 4.1.5 + version: 4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10) packages/oidc-client: dependencies: @@ -175,61 +184,61 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.10)(react-dom@19.2.4)(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) '@types/node': - specifier: ^22.12.0 - version: 22.19.7 + specifier: ^25.6.0 + version: 25.6.0 '@vitest/coverage-v8': - specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 4.1.5 + version: 4.1.5(vitest@4.1.5) cpy: - specifier: 12.1.0 - version: 12.1.0 + specifier: 13.2.1 + version: 13.2.1 cpy-cli: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^7.0.0 + version: 7.0.0 rimraf: - specifier: 6.1.2 - version: 6.1.2 + specifier: 6.1.3 + version: 6.1.3 typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 6.0.3 + version: 6.0.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + specifier: 8.0.10 + version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@22.19.7)(typescript@5.9.3)(vite@7.3.1) + version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) vitest: - specifier: 4.0.18 - version: 4.0.18(@types/node@22.19.7)(tsx@4.21.0) + specifier: 4.1.5 + version: 4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10) packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 4.1.5 + version: 4.1.5(vitest@4.1.5) cpy: - specifier: 12.1.0 - version: 12.1.0 + specifier: 13.2.1 + version: 13.2.1 cpy-cli: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^7.0.0 + version: 7.0.0 rimraf: - specifier: 6.1.2 - version: 6.1.2 + specifier: 6.1.3 + version: 6.1.3 typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 6.0.3 + version: 6.0.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + specifier: 8.0.10 + version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@22.19.7)(typescript@5.9.3)(vite@7.3.1) + version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) vitest: - specifier: 4.0.18 - version: 4.0.18(@types/node@22.19.7)(tsx@4.21.0) + specifier: 4.1.5 + version: 4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10) packages/react-oidc: dependencies: @@ -245,178 +254,118 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.10)(react-dom@19.2.4)(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) '@types/react': - specifier: 19.2.10 - version: 19.2.10 + specifier: 19.2.14 + version: 19.2.14 '@vitejs/plugin-react': - specifier: 5.1.2 - version: 5.1.2(vite@7.3.1) + specifier: 6.0.1 + version: 6.0.1(vite@8.0.10) '@vitest/coverage-v8': - specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 4.1.5 + version: 4.1.5(vitest@4.1.5) cpy: - specifier: 12.1.0 - version: 12.1.0 + specifier: 13.2.1 + version: 13.2.1 cpy-cli: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^7.0.0 + version: 7.0.0 cross-env: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: 27.4.0 - version: 27.4.0 + specifier: 29.0.2 + version: 29.0.2 msw: - specifier: 2.12.7 - version: 2.12.7(@types/node@22.19.7)(typescript@5.9.3) + specifier: 2.13.6 + version: 2.13.6(typescript@6.0.3) react: - specifier: ^19.2.4 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: - specifier: 6.1.2 - version: 6.1.2 + specifier: 6.1.3 + version: 6.1.3 typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 6.0.3 + version: 6.0.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + specifier: 8.0.10 + version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@22.19.7)(typescript@5.9.3)(vite@7.3.1) + version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) vitest: - specifier: 4.0.18 - version: 4.0.18(@types/node@22.19.7)(jsdom@27.4.0)(msw@2.12.7)(tsx@4.21.0) + specifier: 4.1.5 + version: 4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10) packages: - /@acemir/cssom@0.9.31: - resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} - dev: true - /@adobe/css-tools@4.4.4: resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} dev: true - /@ampproject/remapping@2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@asamuzakjp/css-color@2.8.2: - resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - lru-cache: 11.0.2 - dev: true - - /@asamuzakjp/css-color@4.1.1: - resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} + /@asamuzakjp/css-color@5.1.11: + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.5 + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 dev: true - /@asamuzakjp/dom-selector@6.7.6: - resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + /@asamuzakjp/dom-selector@7.1.1: + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dependencies: + '@asamuzakjp/generational-cache': 1.0.1 '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 - css-tree: 3.1.0 + css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.5 - dev: true - - /@asamuzakjp/nwsapi@2.3.9: - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} dev: true - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.1 + /@asamuzakjp/generational-cache@1.0.1: + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dev: true - /@babel/code-frame@7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 + /@asamuzakjp/nwsapi@2.3.9: + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} dev: true - /@babel/code-frame@7.28.6: - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + /@babel/code-frame@7.29.0: + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - /@babel/compat-data@7.26.5: - resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/compat-data@7.28.6: - resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} - engines: {node: '>=6.9.0'} - - /@babel/core@7.26.0: - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + /@babel/compat-data@7.29.0: + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.5 - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.28.6: - resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} + /@babel/core@7.29.0: + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -426,45 +375,23 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.26.5: - resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + /@babel/generator@7.29.1: + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - dev: true - - /@babel/generator@7.28.6: - resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - /@babel/helper-compilation-targets@7.26.5: - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-compilation-targets@7.28.6: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.28.6 + '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -472,244 +399,83 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - /@babel/helper-module-imports@7.25.9: - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-imports@7.28.6: resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color - - /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6): + /@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0): resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - /@babel/helper-plugin-utils@7.26.5: - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-plugin-utils@7.28.6: - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-string-parser@7.25.9: - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-string-parser@7.27.1: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.25.9: - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.28.5: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.25.9: - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.27.1: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.26.0: - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - dev: true - - /@babel/helpers@7.28.6: - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + /@babel/helpers@7.29.2: + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.28.6 - - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: true - - /@babel/parser@7.26.5: - resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.26.5 - dev: true + '@babel/types': 7.29.0 - /@babel/parser@7.28.6: - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + /@babel/parser@7.29.2: + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.28.6 - - /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - dev: true - - /@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.6): - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.6): - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - dev: true - - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: true - - /@babel/runtime@7.24.8: - resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: true - - /@babel/runtime@7.28.6: - resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/types': 7.29.0 - /@babel/template@7.25.9: - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + /@babel/runtime@7.29.2: + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 dev: true /@babel/template@7.28.6: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - - /@babel/traverse@7.26.5: - resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 - /@babel/traverse@7.28.6: - resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + /@babel/traverse@7.29.0: + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - /@babel/types@7.26.5: - resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - dev: true - - /@babel/types@7.28.6: - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + /@babel/types@7.29.0: + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.27.1 @@ -720,2058 +486,1192 @@ packages: engines: {node: '>=18'} dev: true - /@csstools/color-helpers@5.0.1: - resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} - engines: {node: '>=18'} - dev: true - - /@csstools/color-helpers@5.1.0: - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} - dev: true - - /@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): - resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + /@bramus/specificity@2.4.2: + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + css-tree: 3.2.1 dev: true - /@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4): - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 - dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + /@csstools/color-helpers@6.0.2: + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} dev: true - /@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): - resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} - engines: {node: '>=18'} + /@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0): + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 dependencies: - '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 dev: true - /@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4): - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + /@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0): + resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 dev: true - /@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3): - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} - engines: {node: '>=18'} + /@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0): + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^4.0.0 dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 4.0.0 dev: true - /@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4): - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + /@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1): + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true dependencies: - '@csstools/css-tokenizer': 3.0.4 + css-tree: 3.2.1 dev: true - /@csstools/css-syntax-patches-for-csstree@1.0.26: - resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} + /@csstools/css-tokenizer@4.0.0: + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} dev: true - /@csstools/css-tokenizer@3.0.3: - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} - engines: {node: '>=18'} + /@emnapi/core@1.10.0: + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + requiresBuild: true + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 dev: true + optional: true - /@csstools/css-tokenizer@3.0.4: - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} - dev: true + /@emnapi/runtime@1.10.0: + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + requiresBuild: true + dependencies: + tslib: 2.8.1 + optional: true - /@emnapi/runtime@1.8.1: - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + /@emnapi/wasi-threads@1.2.1: + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} requiresBuild: true dependencies: tslib: 2.8.1 - dev: false + dev: true optional: true /@epic-web/invariant@1.0.0: resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} dev: true - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} + /@esbuild/aix-ppc64@0.27.7: + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] requiresBuild: true dev: true optional: true - /@esbuild/aix-ppc64@0.24.2: - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + /@esbuild/android-arm64@0.27.7: + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + cpu: [arm64] + os: [android] requiresBuild: true dev: true optional: true - /@esbuild/aix-ppc64@0.27.2: - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + /@esbuild/android-arm@0.27.7: + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + cpu: [arm] + os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] + /@esbuild/android-x64@0.27.7: + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64@0.24.2: - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + /@esbuild/darwin-arm64@0.27.7: + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] - os: [android] + os: [darwin] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64@0.27.2: - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + /@esbuild/darwin-x64@0.27.7: + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.27.7: + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] - os: [android] + os: [freebsd] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] + /@esbuild/freebsd-x64@0.27.7: + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.24.2: - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + /@esbuild/linux-arm64@0.27.7: + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} - cpu: [arm] - os: [android] + cpu: [arm64] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.27.2: - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + /@esbuild/linux-arm@0.27.7: + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] - os: [android] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] + /@esbuild/linux-ia32@0.27.7: + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/android-x64@0.24.2: - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + /@esbuild/linux-loong64@0.27.7: + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} - cpu: [x64] - os: [android] + cpu: [loong64] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/android-x64@0.27.2: - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + /@esbuild/linux-mips64el@0.27.7: + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} - cpu: [x64] - os: [android] + cpu: [mips64el] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + /@esbuild/linux-ppc64@0.27.7: + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/darwin-arm64@0.24.2: - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + /@esbuild/linux-riscv64@0.27.7: + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] + cpu: [riscv64] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/darwin-arm64@0.27.2: - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + /@esbuild/linux-s390x@0.27.7: + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] + cpu: [s390x] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} + /@esbuild/linux-x64@0.27.7: + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} cpu: [x64] - os: [darwin] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/darwin-x64@0.24.2: - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + /@esbuild/netbsd-arm64@0.27.7: + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} - cpu: [x64] - os: [darwin] + cpu: [arm64] + os: [netbsd] requiresBuild: true dev: true optional: true - /@esbuild/darwin-x64@0.27.2: - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + /@esbuild/netbsd-x64@0.27.7: + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] - os: [darwin] + os: [netbsd] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} + /@esbuild/openbsd-arm64@0.27.7: + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} cpu: [arm64] - os: [freebsd] + os: [openbsd] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-arm64@0.24.2: - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + /@esbuild/openbsd-x64@0.27.7: + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [openbsd] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-arm64@0.27.2: - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + /@esbuild/openharmony-arm64@0.27.7: + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] - os: [freebsd] + os: [openharmony] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} + /@esbuild/sunos-x64@0.27.7: + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} cpu: [x64] - os: [freebsd] + os: [sunos] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-x64@0.24.2: - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + /@esbuild/win32-arm64@0.27.7: + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] + cpu: [arm64] + os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-x64@0.27.2: - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + /@esbuild/win32-ia32@0.27.7: + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] + cpu: [ia32] + os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + /@esbuild/win32-x64@0.27.7: + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64@0.24.2: - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@eslint-community/eslint-utils@4.9.1(eslint@10.2.1): + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 10.2.1 + eslint-visitor-keys: 3.4.3 dev: true - optional: true - /@esbuild/linux-arm64@0.27.2: - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@eslint-community/regexpp@4.12.2: + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@eslint/compat@2.0.5(eslint@10.2.1): + resolution: {integrity: sha512-IbHDbHJfkVNv6xjlET8AIVo/K1NQt7YT4Rp6ok/clyBGcpRx1l6gv0Rq3vBvYfPJIZt6ODf66Zq08FJNDpnzgg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^8.40 || 9 || 10 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@eslint/core': 1.2.1 + eslint: 10.2.1 dev: true - optional: true - /@esbuild/linux-arm@0.24.2: - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@eslint/config-array@0.23.5: + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@esbuild/linux-arm@0.27.2: - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@eslint/config-helpers@0.5.5: + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dependencies: + '@eslint/core': 1.2.1 dev: true - optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@eslint/core@1.2.1: + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dependencies: + '@types/json-schema': 7.0.15 dev: true - optional: true - /@esbuild/linux-ia32@0.24.2: - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@eslint/eslintrc@3.3.5: + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@esbuild/linux-ia32@0.27.2: - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@eslint/js@10.0.1(eslint@10.2.1): + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + eslint: 10.2.1 dev: true - optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + /@eslint/object-schema@3.0.5: + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} dev: true - optional: true - /@esbuild/linux-loong64@0.24.2: - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - requiresBuild: true + /@eslint/plugin-kit@0.7.1: + resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 dev: true - optional: true - /@esbuild/linux-loong64@0.27.2: - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - requiresBuild: true + /@exodus/bytes@1.15.0: + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true dev: true - optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /@humanfs/core@0.19.2: + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + dependencies: + '@humanfs/types': 0.15.0 dev: true - optional: true - /@esbuild/linux-mips64el@0.24.2: - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /@humanfs/node@0.16.8: + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + dev: true + + /@humanfs/types@0.15.0: + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/retry@0.4.3: + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} dev: true - optional: true - /@esbuild/linux-mips64el@0.27.2: - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + /@img/colour@1.1.0: + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] + /@img/sharp-darwin-arm64@0.34.5: + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] requiresBuild: true - dev: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + dev: false optional: true - /@esbuild/linux-ppc64@0.24.2: - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] + /@img/sharp-darwin-x64@0.34.5: + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] requiresBuild: true - dev: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + dev: false optional: true - /@esbuild/linux-ppc64@0.27.2: - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] + /@img/sharp-libvips-darwin-arm64@1.2.4: + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] + /@img/sharp-libvips-darwin-x64@1.2.4: + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-riscv64@0.24.2: - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} - engines: {node: '>=18'} - cpu: [riscv64] + /@img/sharp-libvips-linux-arm64@1.2.4: + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-riscv64@0.27.2: - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} - engines: {node: '>=18'} - cpu: [riscv64] + /@img/sharp-libvips-linux-arm@1.2.4: + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] + /@img/sharp-libvips-linux-ppc64@1.2.4: + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-s390x@0.24.2: - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] + /@img/sharp-libvips-linux-riscv64@1.2.4: + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-s390x@0.27.2: - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} - engines: {node: '>=18'} + /@img/sharp-libvips-linux-s390x@1.2.4: + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} + /@img/sharp-libvips-linux-x64@1.2.4: + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-x64@0.24.2: - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] + /@img/sharp-libvips-linuxmusl-arm64@1.2.4: + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/linux-x64@0.27.2: - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} - engines: {node: '>=18'} + /@img/sharp-libvips-linuxmusl-x64@1.2.4: + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@esbuild/netbsd-arm64@0.24.2: - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-arm64@0.27.2: - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.24.2: - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.27.2: - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-arm64@0.24.2: - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-arm64@0.27.2: - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.24.2: - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.27.2: - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openharmony-arm64@0.27.2: - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.24.2: - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.27.2: - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.24.2: - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.27.2: - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.24.2: - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.27.2: - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.24.2: - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.27.2: - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@eslint-community/eslint-utils@4.9.1(eslint@9.39.2): - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 9.39.2 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.12.2: - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/compat@2.0.1(eslint@9.39.2): - resolution: {integrity: sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^8.40 || 9 - peerDependenciesMeta: - eslint: - optional: true - dependencies: - '@eslint/core': 1.0.1 - eslint: 9.39.2 - dev: true - - /@eslint/config-array@0.21.1: - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/config-helpers@0.4.2: - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/core': 0.17.0 - dev: true - - /@eslint/core@0.17.0: - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@types/json-schema': 7.0.15 - dev: true - - /@eslint/core@1.0.1: - resolution: {integrity: sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@types/json-schema': 7.0.15 - dev: true - - /@eslint/eslintrc@3.3.3: - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@9.39.2: - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /@eslint/object-schema@2.1.7: - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /@eslint/plugin-kit@0.4.1: - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - dev: true - - /@exodus/bytes@1.10.0: - resolution: {integrity: sha512-tf8YdcbirXdPnJ+Nd4UN1EXnz+IP2DI45YVEr3vvzcVTOyrApkmIB4zvOQVd3XPr7RXnfBtAx+PXImXOIU0Ajg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@noble/hashes': ^1.8.0 || ^2.0.0 - peerDependenciesMeta: - '@noble/hashes': - optional: true - dev: true - - /@humanfs/core@0.19.1: - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - dev: true - - /@humanfs/node@0.16.7: - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} - engines: {node: '>=18.18.0'} - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.4.3 - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/retry@0.4.3: - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - dev: true - - /@img/colour@1.0.0: - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} - engines: {node: '>=18'} - requiresBuild: true - dev: false - optional: true - - /@img/sharp-darwin-arm64@0.34.5: - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - dev: false - optional: true - - /@img/sharp-darwin-x64@0.34.5: - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - dev: false - optional: true - - /@img/sharp-libvips-darwin-arm64@1.2.4: - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-darwin-x64@1.2.4: - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm64@1.2.4: - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm@1.2.4: - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-ppc64@1.2.4: - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-riscv64@1.2.4: - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-s390x@1.2.4: - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-x64@1.2.4: - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-arm64@1.2.4: - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-x64@1.2.4: - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-linux-arm64@0.34.5: - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - dev: false - optional: true - - /@img/sharp-linux-arm@0.34.5: - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - dev: false - optional: true - - /@img/sharp-linux-ppc64@0.34.5: - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - dev: false - optional: true - - /@img/sharp-linux-riscv64@0.34.5: - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - dev: false - optional: true - - /@img/sharp-linux-s390x@0.34.5: - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - dev: false - optional: true - - /@img/sharp-linux-x64@0.34.5: - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - dev: false - optional: true - - /@img/sharp-linuxmusl-arm64@0.34.5: - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - dev: false - optional: true - - /@img/sharp-linuxmusl-x64@0.34.5: - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - dev: false - optional: true - - /@img/sharp-wasm32@0.34.5: - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - requiresBuild: true - dependencies: - '@emnapi/runtime': 1.8.1 - dev: false - optional: true - - /@img/sharp-win32-arm64@0.34.5: - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-win32-ia32@0.34.5: - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-win32-x64@0.34.5: - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@inquirer/confirm@5.1.2(@types/node@22.19.7): - resolution: {integrity: sha512-VKgaKxw2I3cu2smedeMFyxuYyI+HABlFY1Px4j8NueA7xDskKAo9hxEQemTpp1Fu4OiTtOCgU4eK91BVuBKH3g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - dependencies: - '@inquirer/core': 10.1.3(@types/node@22.19.7) - '@inquirer/type': 3.0.2(@types/node@22.19.7) - '@types/node': 22.19.7 - dev: true - - /@inquirer/core@10.1.3(@types/node@22.19.7): - resolution: {integrity: sha512-+7/dCYwDku2xfcWJWX6Urxb8aRz6d0K+4lRgIBM08ktE84dm++RPROgnVfWq4hLK5FVu/O4rbO9HnJtaz3pt2w==} - engines: {node: '>=18'} - dependencies: - '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@22.19.7) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@inquirer/figures@1.0.9: - resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==} - engines: {node: '>=18'} - dev: true - - /@inquirer/type@3.0.2(@types/node@22.19.7): - resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - dependencies: - '@types/node': 22.19.7 - dev: true - - /@isaacs/balanced-match@4.0.1: - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - dev: true - - /@isaacs/brace-expansion@5.0.0: - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - dependencies: - '@isaacs/balanced-match': 4.0.1 - dev: true - - /@jridgewell/gen-mapping@0.3.13: - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@jridgewell/remapping@2.3.5: - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: true - - /@jridgewell/sourcemap-codec@1.5.5: - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - - /@jridgewell/trace-mapping@0.3.31: - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - /@microsoft/api-extractor-model@7.30.2: - resolution: {integrity: sha512-3/t2F+WhkJgBzSNwlkTIL0tBgUoBqDqL66pT+nh2mPbM0NIDGVGtpqbGWPgHIzn/mn7kGS/Ep8D8po58e8UUIw==} - dependencies: - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.2 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor-model@7.32.2(@types/node@22.19.7): - resolution: {integrity: sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==} - dependencies: - '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.0 - '@rushstack/node-core-library': 5.19.1(@types/node@22.19.7) - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.49.1: - resolution: {integrity: sha512-jRTR/XbQF2kb+dYn8hfYSicOGA99+Fo00GrsdMwdfE3eIgLtKdH6Qa2M3wZV9S2XmbgCaGX1OdPtYctbfu5jQg==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.30.2 - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.2 - '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.5 - '@rushstack/ts-command-line': 4.23.3 - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.7.2 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.55.2(@types/node@22.19.7): - resolution: {integrity: sha512-1jlWO4qmgqYoVUcyh+oXYRztZde/pAi7cSVzBz/rc+S7CoVzDasy8QE13dx6sLG4VRo8SfkkLbFORR6tBw4uGQ==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.32.2(@types/node@22.19.7) - '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.0 - '@rushstack/node-core-library': 5.19.1(@types/node@22.19.7) - '@rushstack/rig-package': 0.6.0 - '@rushstack/terminal': 0.19.5(@types/node@22.19.7) - '@rushstack/ts-command-line': 5.1.5(@types/node@22.19.7) - diff: 8.0.3 - lodash: 4.17.23 - minimatch: 10.0.3 - resolve: 1.22.11 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.8.2 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/tsdoc-config@0.17.1: - resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} - dependencies: - '@microsoft/tsdoc': 0.15.1 - ajv: 8.12.0 - jju: 1.4.0 - resolve: 1.22.8 - dev: true - - /@microsoft/tsdoc-config@0.18.0: - resolution: {integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==} - dependencies: - '@microsoft/tsdoc': 0.16.0 - ajv: 8.12.0 - jju: 1.4.0 - resolve: 1.22.11 - dev: true - - /@microsoft/tsdoc@0.15.1: - resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} - dev: true - - /@microsoft/tsdoc@0.16.0: - resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - dev: true - - /@mswjs/interceptors@0.40.0: - resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} - engines: {node: '>=18'} - dependencies: - '@open-draft/deferred-promise': 2.2.0 - '@open-draft/logger': 0.3.0 - '@open-draft/until': 2.1.0 - is-node-process: 1.2.0 - outvariant: 1.4.3 - strict-event-emitter: 0.5.1 - dev: true - - /@next/env@16.1.6: - resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} - dev: false - - /@next/swc-darwin-arm64@16.1.6: - resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} - engines: {node: '>= 10'} + /@img/sharp-linux-arm64@0.34.5: + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] - os: [darwin] + os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 dev: false optional: true - /@next/swc-darwin-x64@16.1.6: - resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] + /@img/sharp-linux-arm@0.34.5: + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 dev: false optional: true - /@next/swc-linux-arm64-gnu@16.1.6: - resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} - engines: {node: '>= 10'} - cpu: [arm64] + /@img/sharp-linux-ppc64@0.34.5: + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 dev: false optional: true - /@next/swc-linux-arm64-musl@16.1.6: - resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} - engines: {node: '>= 10'} - cpu: [arm64] + /@img/sharp-linux-riscv64@0.34.5: + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 dev: false optional: true - /@next/swc-linux-x64-gnu@16.1.6: - resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} - engines: {node: '>= 10'} - cpu: [x64] + /@img/sharp-linux-s390x@0.34.5: + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 dev: false optional: true - /@next/swc-linux-x64-musl@16.1.6: - resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} - engines: {node: '>= 10'} + /@img/sharp-linux-x64@0.34.5: + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 dev: false optional: true - /@next/swc-win32-arm64-msvc@16.1.6: - resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} - engines: {node: '>= 10'} + /@img/sharp-linuxmusl-arm64@0.34.5: + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] - os: [win32] + os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 dev: false optional: true - /@next/swc-win32-x64-msvc@16.1.6: - resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} - engines: {node: '>= 10'} + /@img/sharp-linuxmusl-x64@0.34.5: + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] - os: [win32] + os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 dev: false optional: true - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - dev: true - - /@open-draft/deferred-promise@2.2.0: - resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - dev: true - - /@open-draft/logger@0.3.0: - resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + /@img/sharp-wasm32@0.34.5: + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + requiresBuild: true dependencies: - is-node-process: 1.2.0 - outvariant: 1.4.3 - dev: true - - /@open-draft/until@2.1.0: - resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - dev: true - - /@pkgr/core@0.2.9: - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - - /@remix-run/router@1.15.3: - resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==} - engines: {node: '>=14.0.0'} + '@emnapi/runtime': 1.10.0 dev: false - - /@rolldown/pluginutils@1.0.0-beta.53: - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} - dev: true - - /@rollup/pluginutils@5.1.4: - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - dev: true - - /@rollup/pluginutils@5.3.0: - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - dev: true - - /@rollup/rollup-android-arm-eabi@4.30.1: - resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm-eabi@4.57.0: - resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.30.1: - resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.57.0: - resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true optional: true - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + /@img/sharp-win32-arm64@0.34.5: + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] - os: [android] + os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-darwin-arm64@4.30.1: - resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} - cpu: [arm64] - os: [darwin] + /@img/sharp-win32-ia32@0.34.5: + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-darwin-arm64@4.57.0: - resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} - cpu: [arm64] - os: [darwin] + /@img/sharp-win32-x64@0.34.5: + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true + /@inquirer/ansi@2.0.5: + resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} dev: true - optional: true - /@rollup/rollup-darwin-x64@4.30.1: - resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@inquirer/confirm@6.0.12: + resolution: {integrity: sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/core': 11.1.9 + '@inquirer/type': 4.0.5 dev: true - optional: true - /@rollup/rollup-darwin-x64@4.57.0: - resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@inquirer/core@11.1.9: + resolution: {integrity: sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5 + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 dev: true - optional: true - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@inquirer/figures@2.0.5: + resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} dev: true - optional: true - /@rollup/rollup-freebsd-arm64@4.30.1: - resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + /@inquirer/type@4.0.5: + resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true dev: true - optional: true - /@rollup/rollup-freebsd-arm64@4.57.0: - resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@jridgewell/gen-mapping@0.3.13: + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - /@rollup/rollup-freebsd-x64@4.30.1: - resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@jridgewell/remapping@2.3.5: + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - /@rollup/rollup-freebsd-x64@4.57.0: - resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - /@rollup/rollup-linux-arm-gnueabihf@4.30.1: - resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@jridgewell/sourcemap-codec@1.5.5: + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - /@rollup/rollup-linux-arm-gnueabihf@4.57.0: - resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} - cpu: [arm] - os: [linux] - requiresBuild: true + /@jridgewell/trace-mapping@0.3.31: + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + /@microsoft/api-extractor-model@7.33.8(@types/node@25.6.0): + resolution: {integrity: sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==} + dependencies: + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + transitivePeerDependencies: + - '@types/node' dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} - cpu: [arm] - os: [linux] - requiresBuild: true + /@microsoft/api-extractor@7.58.7(@types/node@25.6.0): + resolution: {integrity: sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.33.8(@types/node@25.6.0) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + '@rushstack/rig-package': 0.7.3 + '@rushstack/terminal': 0.24.0(@types/node@25.6.0) + '@rushstack/ts-command-line': 5.3.9(@types/node@25.6.0) + diff: 8.0.4 + minimatch: 10.2.3 + resolve: 1.22.12 + semver: 7.7.4 + source-map: 0.6.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' dev: true - optional: true - /@rollup/rollup-linux-arm-musleabihf@4.30.1: - resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} - cpu: [arm] - os: [linux] - requiresBuild: true + /@microsoft/tsdoc-config@0.18.1: + resolution: {integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==} + dependencies: + '@microsoft/tsdoc': 0.16.0 + ajv: 8.18.0 + jju: 1.4.0 + resolve: 1.22.12 dev: true - optional: true - /@rollup/rollup-linux-arm-musleabihf@4.57.0: - resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} - cpu: [arm] - os: [linux] - requiresBuild: true + /@microsoft/tsdoc@0.16.0: + resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.30.1: - resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@mswjs/interceptors@0.41.6: + resolution: {integrity: sha512-qmDvJIjcNsZ6tXWy2G9yuCgMPTTn35GMA3dPpSLm7QJVpbQzYdw0ALy1bKoivXnEM3U93/OrK+/M719b+fg84Q==} + engines: {node: '>=18'} + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.57.0: - resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} - cpu: [arm64] - os: [linux] + /@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} requiresBuild: true + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + /@next/env@16.2.4: + resolution: {integrity: sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==} + dev: false + + /@next/swc-darwin-arm64@16.2.4: + resolution: {integrity: sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==} + engines: {node: '>= 10'} cpu: [arm64] - os: [linux] + os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.30.1: - resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} - cpu: [arm64] - os: [linux] + /@next/swc-darwin-x64@16.2.4: + resolution: {integrity: sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.57.0: - resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} + /@next/swc-linux-arm64-gnu@16.2.4: + resolution: {integrity: sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + /@next/swc-linux-arm64-musl@16.2.4: + resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-loong64-gnu@4.57.0: - resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} - cpu: [loong64] + /@next/swc-linux-x64-gnu@16.2.4: + resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-loong64-musl@4.57.0: - resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} - cpu: [loong64] + /@next/swc-linux-x64-musl@16.2.4: + resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-loongarch64-gnu@4.30.1: - resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} - cpu: [loong64] - os: [linux] + /@next/swc-win32-arm64-msvc@16.2.4: + resolution: {integrity: sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.30.1: - resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} - cpu: [ppc64] - os: [linux] + /@next/swc-win32-x64-msvc@16.2.4: + resolution: {integrity: sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-ppc64-gnu@4.57.0: - resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 dev: true - optional: true - /@rollup/rollup-linux-ppc64-musl@4.57.0: - resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.30.1: - resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.57.0: - resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@open-draft/deferred-promise@2.2.0: + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@open-draft/deferred-promise@3.0.0: + resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} dev: true - optional: true - /@rollup/rollup-linux-riscv64-musl@4.57.0: - resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@open-draft/logger@0.3.0: + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 dev: true - optional: true - /@rollup/rollup-linux-s390x-gnu@4.30.1: - resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} - cpu: [s390x] - os: [linux] - requiresBuild: true + /@open-draft/until@2.1.0: + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} dev: true - optional: true - /@rollup/rollup-linux-s390x-gnu@4.57.0: - resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} - cpu: [s390x] - os: [linux] - requiresBuild: true + /@oxc-project/types@0.127.0: + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.30.1: - resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@pkgr/core@0.2.9: + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.57.0: - resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} - cpu: [x64] - os: [linux] + /@rolldown/binding-android-arm64@1.0.0-rc.17: + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.30.1: - resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} - cpu: [x64] - os: [linux] + /@rolldown/binding-darwin-arm64@1.0.0-rc.17: + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.57.0: - resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} + /@rolldown/binding-darwin-x64@1.0.0-rc.17: + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] - os: [linux] + os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + /@rolldown/binding-freebsd-x64@1.0.0-rc.17: + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] - os: [linux] + os: [freebsd] requiresBuild: true dev: true optional: true - /@rollup/rollup-openbsd-x64@4.57.0: - resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} - cpu: [x64] - os: [openbsd] + /@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17: + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-openharmony-arm64@4.57.0: - resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} + /@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17: + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [openharmony] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.30.1: - resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} + /@rolldown/binding-linux-arm64-musl@1.0.0-rc.17: + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [win32] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.57.0: - resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} - cpu: [arm64] - os: [win32] + /@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17: + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} - cpu: [arm64] - os: [win32] + /@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17: + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.30.1: - resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} - cpu: [ia32] - os: [win32] + /@rolldown/binding-linux-x64-gnu@1.0.0-rc.17: + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.57.0: - resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} - cpu: [ia32] - os: [win32] + /@rolldown/binding-linux-x64-musl@1.0.0-rc.17: + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} - cpu: [ia32] - os: [win32] + /@rolldown/binding-openharmony-arm64@1.0.0-rc.17: + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-gnu@4.57.0: - resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} - cpu: [x64] - os: [win32] + /@rolldown/binding-wasm32-wasi@1.0.0-rc.17: + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] requiresBuild: true + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.30.1: - resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} - cpu: [x64] + /@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17: + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.57.0: - resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} + /@rolldown/binding-win32-x64-msvc@1.0.0-rc.17: + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} - cpu: [x64] - os: [win32] - requiresBuild: true + /@rolldown/pluginutils@1.0.0-rc.17: + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} dev: true - optional: true - /@rtsao/scc@1.1.0: - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + /@rolldown/pluginutils@1.0.0-rc.7: + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} dev: true - /@rushstack/node-core-library@5.10.2: - resolution: {integrity: sha512-xOF/2gVJZTfjTxbo4BDj9RtQq/HFnrrKdtem4JkyRLnwsRz2UDTg8gA1/et10fBx5RxmZD9bYVGST69W8ME5OQ==} + /@rollup/pluginutils@5.3.0: + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} peerDependencies: - '@types/node': '*' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: - '@types/node': + rollup: optional: true dependencies: - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.4 + dev: true + + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@rushstack/node-core-library@5.19.1(@types/node@22.19.7): - resolution: {integrity: sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==} + /@rushstack/node-core-library@5.23.1(@types/node@25.6.0): + resolution: {integrity: sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true dependencies: - '@types/node': 22.19.7 - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 11.3.3 + '@types/node': 25.6.0 + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv-formats: 3.0.1(ajv@8.18.0) + fs-extra: 11.3.4 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.11 - semver: 7.5.4 + resolve: 1.22.12 + semver: 7.7.4 dev: true - /@rushstack/problem-matcher@0.1.1(@types/node@22.19.7): - resolution: {integrity: sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==} + /@rushstack/problem-matcher@0.2.1(@types/node@25.6.0): + resolution: {integrity: sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true dependencies: - '@types/node': 22.19.7 - dev: true - - /@rushstack/rig-package@0.5.3: - resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 - dev: true - - /@rushstack/rig-package@0.6.0: - resolution: {integrity: sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==} - dependencies: - resolve: 1.22.11 - strip-json-comments: 3.1.1 + '@types/node': 25.6.0 dev: true - /@rushstack/terminal@0.14.5: - resolution: {integrity: sha512-TEOpNwwmsZVrkp0omnuTUTGZRJKTr6n6m4OITiNjkqzLAkcazVpwR1SOtBg6uzpkIBLgrcNHETqI8rbw3uiUfw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true + /@rushstack/rig-package@0.7.3: + resolution: {integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==} dependencies: - '@rushstack/node-core-library': 5.10.2 - supports-color: 8.1.1 + jju: 1.4.0 + resolve: 1.22.12 dev: true - /@rushstack/terminal@0.19.5(@types/node@22.19.7): - resolution: {integrity: sha512-6k5tpdB88G0K7QrH/3yfKO84HK9ggftfUZ51p7fePyCE7+RLLHkWZbID9OFWbXuna+eeCFE7AkKnRMHMxNbz7Q==} + /@rushstack/terminal@0.24.0(@types/node@25.6.0): + resolution: {integrity: sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true dependencies: - '@rushstack/node-core-library': 5.19.1(@types/node@22.19.7) - '@rushstack/problem-matcher': 0.1.1(@types/node@22.19.7) - '@types/node': 22.19.7 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + '@rushstack/problem-matcher': 0.2.1(@types/node@25.6.0) + '@types/node': 25.6.0 supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.23.3: - resolution: {integrity: sha512-HazKL8fv4HMQMzrKJCrOrhyBPPdzk7iajUXgsASwjQ8ROo1cmgyqxt/k9+SdmrNLGE1zATgRqMUH3s/6smbRMA==} - dependencies: - '@rushstack/terminal': 0.14.5 - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@rushstack/ts-command-line@5.1.5(@types/node@22.19.7): - resolution: {integrity: sha512-YmrFTFUdHXblYSa+Xc9OO9FsL/XFcckZy0ycQ6q7VSBsVs5P0uD9vcges5Q9vctGlVdu27w+Ct6IuJ458V0cTQ==} + /@rushstack/ts-command-line@5.3.9(@types/node@25.6.0): + resolution: {integrity: sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==} dependencies: - '@rushstack/terminal': 0.19.5(@types/node@22.19.7) + '@rushstack/terminal': 0.24.0(@types/node@25.6.0) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -2794,26 +1694,12 @@ packages: tslib: 2.8.1 dev: false - /@testing-library/dom@10.1.0: - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} - engines: {node: '>=18'} - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.8 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - /@testing-library/dom@10.4.1: resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.28.6 - '@babel/runtime': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.29.2 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -2822,19 +1708,6 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.6.3: - resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - dependencies: - '@adobe/css-tools': 4.4.4 - aria-query: 5.3.2 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.23 - redent: 3.0.0 - dev: true - /@testing-library/jest-dom@6.9.1: resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -2847,26 +1720,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react@15.0.7(@types/react@19.0.5)(react-dom@19.0.0)(react@19.0.0): - resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.9 - '@testing-library/dom': 10.1.0 - '@types/react': 19.0.5 - '@types/react-dom': 18.2.7 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - dev: true - - /@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.10)(react-dom@19.2.4)(react@19.2.4): + /@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5): resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} engines: {node: '>=18'} peerDependencies: @@ -2881,15 +1735,15 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@testing-library/dom': 10.4.1 - '@types/react': 19.2.10 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@types/react': 19.2.14 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@10.4.1): - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + /@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1): + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' @@ -2897,14 +1751,13 @@ packages: '@testing-library/dom': 10.4.1 dev: true - /@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1): - resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + /@tybys/wasm-util@0.10.1: + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + requiresBuild: true dependencies: - '@testing-library/dom': 10.4.1 + tslib: 2.8.1 dev: true + optional: true /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -2914,35 +1767,6 @@ packages: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} dev: true - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - dev: true - - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - dependencies: - '@babel/types': 7.26.5 - dev: true - - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - dev: true - - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - dependencies: - '@babel/types': 7.26.5 - dev: true - /@types/chai@5.2.3: resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} dependencies: @@ -2954,12 +1778,8 @@ packages: resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} dev: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - - /@types/estree@1.0.6: - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + /@types/esrecurse@4.3.1: + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} dev: true /@types/estree@1.0.8: @@ -2974,408 +1794,303 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/node@20.11.26: - resolution: {integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==} - dependencies: - undici-types: 5.26.5 - dev: true - - /@types/node@22.19.7: - resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} - dependencies: - undici-types: 6.21.0 - dev: true - - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/node@25.6.0: + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} dependencies: - '@types/react': 19.2.10 + undici-types: 7.19.2 dev: true - /@types/react@19.0.5: - resolution: {integrity: sha512-i4OQzFiqsUCfoBns/KHpz+4QcvfjoCsTUi+mugo3lrSRA3+x0gJVvhZhAJrwLGEqz4EXiFVP4hPnOugx+m2uhg==} + /@types/react@19.2.14: + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} dependencies: - csstype: 3.1.2 + csstype: 3.2.3 dev: true - /@types/react@19.2.10: - resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} + /@types/set-cookie-parser@2.4.10: + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} dependencies: - csstype: 3.2.3 + '@types/node': 25.6.0 dev: true /@types/statuses@2.0.6: resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} dev: true - /@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0)(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + /@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser': ^8.59.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.2 + '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/type-utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.0 + eslint: 10.2.1 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + /@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3 - eslint: 9.39.2 - typescript: 5.9.3 + eslint: 10.2.1 + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/project-service@8.54.0(typescript@5.9.3): - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + /@typescript-eslint/project-service@8.59.0(typescript@6.0.3): + resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 debug: 4.4.3 - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@8.54.0: - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + /@typescript-eslint/scope-manager@8.59.0: + resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 dev: true - /@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3): - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + /@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3): + resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' dependencies: - typescript: 5.9.3 + typescript: 6.0.3 dev: true - /@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + /@typescript-eslint/type-utils@8.59.0(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) debug: 4.4.3 - eslint: 9.39.2 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + eslint: 10.2.1 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@8.54.0: - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + /@typescript-eslint/types@8.59.0: + resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3): - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + /@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3): + resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.59.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.3 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + /@typescript-eslint/utils@8.59.0(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.2 - typescript: 5.9.3 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) + eslint: 10.2.1 + typescript: 6.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.54.0: - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + /@typescript-eslint/visitor-keys@8.59.0: + resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.54.0 - eslint-visitor-keys: 4.2.1 - dev: true - - /@vitejs/plugin-react@4.3.4(vite@6.0.7): - resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 6.0.7(tsx@4.21.0) - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 8.59.0 + eslint-visitor-keys: 5.0.1 dev: true - /@vitejs/plugin-react@5.1.2(vite@7.3.1): - resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} + /@vitejs/plugin-react@6.0.1(vite@8.0.10): + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - dependencies: - '@babel/core': 7.28.6 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.6) - '@rolldown/pluginutils': 1.0.0-beta.53 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) - transitivePeerDependencies: - - supports-color + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) dev: true - /@vitest/coverage-v8@4.0.18(vitest@4.0.18): - resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} + /@vitest/coverage-v8@4.1.5(vitest@4.1.5): + resolution: {integrity: sha512-38C0/Ddb7HcRG0Z4/DUem8x57d2p9jYgp18mkaYswEOQBGsI1CG4f/hjm0ZCeaJfWhSZ4k7jgs29V1Zom7Ki9A==} peerDependencies: - '@vitest/browser': 4.0.18 - vitest: 4.0.18 + '@vitest/browser': 4.1.5 + vitest: 4.1.5 peerDependenciesMeta: '@vitest/browser': optional: true dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.18 - ast-v8-to-istanbul: 0.3.10 + '@vitest/utils': 4.1.5 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.1 + magicast: 0.5.2 obug: 2.1.1 - std-env: 3.10.0 - tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@22.19.7)(tsx@4.21.0) - dev: true - - /@vitest/expect@2.1.8: - resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} - dependencies: - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.2.0 - tinyrainbow: 1.2.0 + std-env: 4.1.0 + tinyrainbow: 3.1.0 + vitest: 4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10) dev: true - /@vitest/expect@4.0.18: - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + /@vitest/expect@4.1.5: + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 chai: 6.2.2 - tinyrainbow: 3.0.3 - dev: true - - /@vitest/mocker@2.1.8(vite@5.1.6): - resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - dependencies: - '@vitest/spy': 2.1.8 - estree-walker: 3.0.3 - magic-string: 0.30.17 - vite: 5.1.6 + tinyrainbow: 3.1.0 dev: true - /@vitest/mocker@4.0.18(msw@2.12.7)(vite@7.3.1): - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + /@vitest/mocker@4.1.5(msw@2.13.6)(vite@8.0.10): + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true dependencies: - '@vitest/spy': 4.0.18 + '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 - msw: 2.12.7(@types/node@22.19.7)(typescript@5.9.3) - vite: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) - dev: true - - /@vitest/pretty-format@2.1.8: - resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - dependencies: - tinyrainbow: 1.2.0 + msw: 2.13.6(typescript@6.0.3) + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) dev: true - /@vitest/pretty-format@4.0.18: - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + /@vitest/pretty-format@4.1.5: + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} dependencies: - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 dev: true - /@vitest/runner@2.1.8: - resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} + /@vitest/runner@4.1.5: + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} dependencies: - '@vitest/utils': 2.1.8 - pathe: 1.1.2 - dev: true - - /@vitest/runner@4.0.18: - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.5 pathe: 2.0.3 dev: true - /@vitest/snapshot@2.1.8: - resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} - dependencies: - '@vitest/pretty-format': 2.1.8 - magic-string: 0.30.17 - pathe: 1.1.2 - dev: true - - /@vitest/snapshot@4.0.18: - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + /@vitest/snapshot@4.1.5: + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 magic-string: 0.30.21 pathe: 2.0.3 dev: true - /@vitest/spy@2.1.8: - resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} - dependencies: - tinyspy: 3.0.2 - dev: true - - /@vitest/spy@4.0.18: - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - dev: true - - /@vitest/utils@2.1.8: - resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - dependencies: - '@vitest/pretty-format': 2.1.8 - loupe: 3.1.3 - tinyrainbow: 1.2.0 - dev: true - - /@vitest/utils@4.0.18: - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} - dependencies: - '@vitest/pretty-format': 4.0.18 - tinyrainbow: 3.0.3 + /@vitest/spy@4.1.5: + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} dev: true - /@volar/language-core@2.4.11: - resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + /@vitest/utils@4.1.5: + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} dependencies: - '@volar/source-map': 2.4.11 + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 dev: true - /@volar/language-core@2.4.27: - resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} + /@volar/language-core@2.4.28: + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} dependencies: - '@volar/source-map': 2.4.27 + '@volar/source-map': 2.4.28 dev: true - /@volar/source-map@2.4.11: - resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + /@volar/source-map@2.4.28: + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} dev: true - /@volar/source-map@2.4.27: - resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} - dev: true - - /@volar/typescript@2.4.11: - resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - dependencies: - '@volar/language-core': 2.4.11 - path-browserify: 1.0.1 - vscode-uri: 3.0.8 - dev: true - - /@volar/typescript@2.4.27: - resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} + /@volar/typescript@2.4.28: + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} dependencies: - '@volar/language-core': 2.4.27 + '@volar/language-core': 2.4.28 path-browserify: 1.0.1 vscode-uri: 3.1.0 dev: true - /@vue/compiler-core@3.5.13: - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + /@vue/compiler-core@3.5.33: + resolution: {integrity: sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==} dependencies: - '@babel/parser': 7.26.5 - '@vue/shared': 3.5.13 - entities: 4.5.0 + '@babel/parser': 7.29.2 + '@vue/shared': 3.5.33 + entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 dev: true - /@vue/compiler-dom@3.5.13: - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + /@vue/compiler-dom@3.5.33: + resolution: {integrity: sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==} dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.33 + '@vue/shared': 3.5.33 dev: true /@vue/compiler-vue2@2.7.16: @@ -3385,26 +2100,7 @@ packages: he: 1.2.0 dev: true - /@vue/language-core@2.2.0(typescript@5.7.3): - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.13 - alien-signals: 0.4.14 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - typescript: 5.7.3 - dev: true - - /@vue/language-core@2.2.0(typescript@5.9.3): + /@vue/language-core@2.2.0(typescript@6.0.3): resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} peerDependencies: typescript: '*' @@ -3412,47 +2108,36 @@ packages: typescript: optional: true dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.13 + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.33 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.33 alien-signals: 0.4.14 - minimatch: 9.0.5 + minimatch: 9.0.9 muggle-string: 0.4.1 path-browserify: 1.0.1 - typescript: 5.9.3 + typescript: 6.0.3 dev: true - /@vue/shared@3.5.13: - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + /@vue/shared@3.5.33: + resolution: {integrity: sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==} dev: true - /acorn-jsx@5.3.2(acorn@8.15.0): + /acorn-jsx@5.3.2(acorn@8.16.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.15.0 - dev: true - - /acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn: 8.16.0 dev: true - /acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + /acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - dev: true - - /ajv-draft-04@1.0.0(ajv@8.13.0): + /ajv-draft-04@1.0.0(ajv@8.18.0): resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: ajv: ^8.5.0 @@ -3460,10 +2145,10 @@ packages: ajv: optional: true dependencies: - ajv: 8.13.0 + ajv: 8.18.0 dev: true - /ajv-formats@3.0.1(ajv@8.13.0): + /ajv-formats@3.0.1(ajv@8.18.0): resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: ajv: ^8.0.0 @@ -3471,11 +2156,11 @@ packages: ajv: optional: true dependencies: - ajv: 8.13.0 + ajv: 8.18.0 dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + /ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -3483,47 +2168,24 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + /ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 dev: true /alien-signals@0.4.14: resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3557,42 +2219,22 @@ packages: engines: {node: '>= 0.4'} dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - is-array-buffer: 3.0.5 - dev: true - /array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-array-buffer: 3.0.5 dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: true - /array-includes@3.1.9: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -3603,9 +2245,9 @@ packages: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3615,52 +2257,32 @@ packages: resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.3: resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-shim-unscopables: 1.1.0 dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.3: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-shim-unscopables: 1.1.0 dev: true @@ -3668,37 +2290,23 @@ packages: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - is-array-buffer: 3.0.5 - is-shared-array-buffer: 1.0.4 - dev: true - /arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 dev: true @@ -3711,27 +2319,28 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true - /ast-v8-to-istanbul@0.3.10: - resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + /ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 - js-tokens: 9.0.1 + js-tokens: 10.0.0 dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + /async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} dev: true /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 dev: true - /axe-core@4.10.2: - resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + /axe-core@4.11.3: + resolution: {integrity: sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==} engines: {node: '>=4'} dev: true @@ -3744,8 +2353,14 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /baseline-browser-mapping@2.9.19: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + /balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + dev: true + + /baseline-browser-mapping@2.10.23: + resolution: {integrity: sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==} + engines: {node: '>=6.0.0'} hasBin: true /bidi-js@1.0.3: @@ -3754,29 +2369,34 @@ packages: require-from-string: 2.0.2 dev: true - /bootstrap@4.6.2(jquery@3.7.1)(popper.js@1.16.1): - resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} + /bootstrap@5.3.8(@popperjs/core@2.11.8): + resolution: {integrity: sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==} peerDependencies: - jquery: 1.9.1 - 3 - popper.js: ^1.16.1 + '@popperjs/core': ^2.11.8 dependencies: - jquery: 3.7.1 - popper.js: 1.16.1 + '@popperjs/core': 2.11.8 dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + /brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + /brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} dependencies: balanced-match: 1.0.2 dev: true + /brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + dependencies: + balanced-match: 4.0.4 + dev: true + /braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -3784,40 +2404,16 @@ packages: fill-range: 7.1.1 dev: true - /browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + /browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.80 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - dev: true - - /browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.279 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - dev: true + baseline-browser-mapping: 2.10.23 + caniuse-lite: 1.0.30001791 + electron-to-chromium: 1.5.344 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) /call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -3827,35 +2423,16 @@ packages: function-bind: 1.1.2 dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.7 - set-function-length: 1.2.2 - dev: true - - /call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + /call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 dev: true - /call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 - dev: true - /call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -3869,70 +2446,14 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001692: - resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} - dev: true - - /caniuse-lite@1.0.30001766: - resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} - - /chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 - dev: true - - /chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 - dev: true + /caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} /chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - dev: true - /cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -3959,12 +2480,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -3972,24 +2487,13 @@ packages: color-name: 1.1.4 dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} requiresBuild: true dev: true - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - - /comment-parser@1.4.5: - resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} + /comment-parser@1.4.6: + resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} engines: {node: '>= 12.0.0'} dev: true @@ -4005,8 +2509,8 @@ packages: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} dev: true - /confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + /confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} dev: true /convert-source-map@2.0.0: @@ -4015,7 +2519,6 @@ packages: /cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - dev: true /copy-file@11.1.0: resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} @@ -4030,7 +2533,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 - minimatch: 3.1.2 + minimatch: 3.1.5 mkdirp: 1.0.4 noms: 0.0.0 through2: 2.0.5 @@ -4042,21 +2545,22 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cpy-cli@6.0.0: - resolution: {integrity: sha512-q7GUqTDnRymCbScJ4Ph1IUM86wWdKG8JbgrvKLgvvehH4wrbRcVN+jRwOTlxJdwm7ykdXMKSp6IESksFeHa0eA==} + /cpy-cli@7.0.0: + resolution: {integrity: sha512-uGCdhIxGfZcPXidCuT8w1jBknVXFx0un7NLjzqBZcdnkIWtLUnWMPk5TC37ceoVjwASLSNsRtTXXNTuFIyE2ng==} engines: {node: '>=20'} hasBin: true dependencies: - cpy: 12.1.0 - meow: 13.2.0 + cpy: 13.2.1 + globby: 16.2.0 + meow: 14.1.0 dev: true - /cpy@12.1.0: - resolution: {integrity: sha512-3z9tP1rPBLG7pQYn9iRgl7JOSew0SMPuWmakaRfzhXpmFBHmRbp7JekpuqPkXbbWOdSeKSbInYEcdIZjov2fNQ==} + /cpy@13.2.1: + resolution: {integrity: sha512-/H2B3WW9gccZJKjKoDZsIrDU3MkkHlxgheT82hUbInC5fEdi4+54zyYpFueZT9pLfr5ObrtgN4MsYYrmTmHzeg==} engines: {node: '>=20'} dependencies: copy-file: 11.1.0 - globby: 15.0.0 + globby: 16.2.0 junk: 4.0.1 micromatch: 4.0.8 p-filter: 4.1.0 @@ -4072,23 +2576,6 @@ packages: cross-spawn: 7.0.6 dev: true - /cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - /cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -4098,11 +2585,11 @@ packages: which: 2.0.2 dev: true - /css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + /css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: - mdn-data: 2.12.2 + mdn-data: 2.27.1 source-map-js: 1.2.1 dev: true @@ -4110,28 +2597,6 @@ packages: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true - /cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} - engines: {node: '>=18'} - dependencies: - '@asamuzakjp/css-color': 2.8.2 - rrweb-cssom: 0.8.0 - dev: true - - /cssstyle@5.3.7: - resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} - engines: {node: '>=20'} - dependencies: - '@asamuzakjp/css-color': 4.1.1 - '@csstools/css-syntax-patches-for-csstree': 1.0.26 - css-tree: 3.1.0 - lru-cache: 11.2.5 - dev: true - - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: true - /csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} dev: true @@ -4140,45 +2605,21 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - dev: true - - /data-urls@6.0.1: - resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} - engines: {node: '>=20'} + /data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dependencies: whatwg-mimetype: 5.0.0 - whatwg-url: 15.1.0 - dev: true - - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.2 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' dev: true /data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: true - - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true @@ -4187,16 +2628,7 @@ packages: resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: true - - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true @@ -4205,7 +2637,7 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true @@ -4225,18 +2657,6 @@ packages: ms: 2.1.3 dev: true - /debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -4248,19 +2668,10 @@ packages: dependencies: ms: 2.1.3 - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true - /decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} dev: true - /deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -4283,11 +2694,6 @@ packages: object-keys: 1.1.1 dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -4297,11 +2703,9 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} requiresBuild: true - dev: false - optional: true - /diff@8.0.3: - resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + /diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} dev: true @@ -4324,17 +2728,13 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 dev: true - /electron-to-chromium@1.5.279: - resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==} - - /electron-to-chromium@1.5.80: - resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} - dev: true + /electron-to-chromium@1.5.344: + resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4344,141 +2744,32 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enhanced-resolve@5.18.4: - resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} + /enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.3 dev: true - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + /entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} dev: true - /entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - dev: true - - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.7 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.2.7 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.0 - math-intrinsics: 1.1.0 - object-inspect: 1.13.3 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 + /entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} dev: true - /es-abstract@1.24.1: - resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + /es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 @@ -4497,7 +2788,7 @@ packages: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -4515,7 +2806,7 @@ packages: object.assign: 4.1.7 own-keys: 1.0.1 regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 + safe-array-concat: 1.1.4 safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 @@ -4531,13 +2822,6 @@ packages: which-typed-array: 1.1.20 dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.7 - dev: true - /es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -4548,14 +2832,14 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-iterator-helpers@1.2.2: - resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==} + /es-iterator-helpers@1.3.2: + resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -4567,22 +2851,11 @@ packages: has-symbols: 1.1.0 internal-slot: 1.1.0 iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - dev: true - - /es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - dev: true - - /es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + math-intrinsics: 1.1.0 dev: true - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 + /es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} dev: true /es-object-atoms@1.1.1: @@ -4597,31 +2870,16 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.2 + hasown: 2.0.3 dev: true /es-shim-unscopables@1.1.0: resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.2 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 + hasown: 2.0.3 dev: true /es-to-primitive@1.3.0: @@ -4633,148 +2891,79 @@ packages: is-symbol: 1.1.1 dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - dev: true - - /esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + /esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - dev: true - - /esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} - engines: {node: '>=18'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 dev: true /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /eslint-compat-utils@0.5.1(eslint@9.39.2): + /eslint-compat-utils@0.5.1(eslint@10.2.1): resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.39.2 - semver: 7.7.3 + eslint: 10.2.1 + semver: 7.7.4 dev: true - /eslint-config-prettier@10.1.8(eslint@9.39.2): + /eslint-config-prettier@10.1.8(eslint@10.2.1): resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.39.2 + eslint: 10.2.1 dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + /eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.11 + resolve: 2.0.0-next.6 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0)(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): + /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0)(eslint-import-resolver-node@0.3.10)(eslint@10.2.1): resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: @@ -4795,27 +2984,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) debug: 3.2.7 - eslint: 9.39.2 - eslint-import-resolver-node: 0.3.9 + eslint: 10.2.1 + eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.8.0(eslint@9.39.2): + /eslint-plugin-es-x@7.8.0(eslint@10.2.1): resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) '@eslint-community/regexpp': 4.12.2 - eslint: 9.39.2 - eslint-compat-utils: 0.5.1(eslint@9.39.2) + eslint: 10.2.1 + eslint-compat-utils: 0.5.1(eslint@10.2.1) dev: true - /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0)(eslint@9.39.2): + /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1): resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -4826,20 +3015,20 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.2 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0)(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) - hasown: 2.0.2 + eslint: 10.2.1 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0)(eslint-import-resolver-node@0.3.10)(eslint@10.2.1) + hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -4852,46 +3041,46 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2): + /eslint-plugin-jsx-a11y@6.10.2(eslint@10.2.1): resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 dependencies: aria-query: 5.3.2 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.10.2 + axe-core: 4.11.3 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.39.2 - hasown: 2.0.2 + eslint: 10.2.1 + hasown: 2.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 + safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 dev: true - /eslint-plugin-n@17.23.2(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==} + /eslint-plugin-n@17.24.0(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - enhanced-resolve: 5.18.4 - eslint: 9.39.2 - eslint-plugin-es-x: 7.8.0(eslint@9.39.2) - get-tsconfig: 4.13.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + enhanced-resolve: 5.21.0 + eslint: 10.2.1 + eslint-plugin-es-x: 7.8.0(eslint@10.2.1) + get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 - semver: 7.7.3 - ts-declaration-location: 1.0.7(typescript@5.9.3) + semver: 7.7.4 + ts-declaration-location: 1.0.7(typescript@6.0.3) transitivePeerDependencies: - typescript dev: true @@ -4901,7 +3090,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8)(eslint@9.39.2)(prettier@3.8.1): + /eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8)(eslint@10.2.1)(prettier@3.8.3): resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4915,22 +3104,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.39.2 - eslint-config-prettier: 10.1.8(eslint@9.39.2) - prettier: 3.8.1 + eslint: 10.2.1 + eslint-config-prettier: 10.1.8(eslint@10.2.1) + prettier: 3.8.3 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 dev: true - /eslint-plugin-react-hooks@7.0.1(eslint@9.39.2): - resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + /eslint-plugin-react-hooks@7.1.1(eslint@10.2.1): + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} engines: {node: '>=18'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 dependencies: - '@babel/core': 7.28.6 - '@babel/parser': 7.28.6 - eslint: 9.39.2 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + eslint: 10.2.1 hermes-parser: 0.25.1 zod: 4.3.6 zod-validation-error: 4.0.2(zod@4.3.6) @@ -4938,7 +3127,7 @@ packages: - supports-color dev: true - /eslint-plugin-react@7.37.5(eslint@9.39.2): + /eslint-plugin-react@7.37.5(eslint@10.2.1): resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: @@ -4949,64 +3138,66 @@ packages: array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.2.2 - eslint: 9.39.2 + es-iterator-helpers: 1.3.2 + eslint: 10.2.1 estraverse: 5.3.0 - hasown: 2.0.2 + hasown: 2.0.3 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 prop-types: 15.8.1 - resolve: 2.0.0-next.5 + resolve: 2.0.0-next.6 semver: 6.3.1 string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-regexp@3.0.0(eslint@9.39.2): - resolution: {integrity: sha512-iW7hgAV8NOG6E2dz+VeKpq67YLQ9jaajOKYpoOSic2/q8y9BMdXBKkSR9gcMtbqEhNQzdW41E3wWzvhp8ExYwQ==} + /eslint-plugin-regexp@3.1.0(eslint@10.2.1): + resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.5 - eslint: 9.39.2 - jsdoc-type-pratt-parser: 7.1.0 + comment-parser: 1.4.6 + eslint: 10.2.1 + jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.2): - resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} + /eslint-plugin-simple-import-sort@13.0.0(eslint@10.2.1): + resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 9.39.2 + eslint: 10.2.1 dev: true - /eslint-plugin-testing-library@7.15.4(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-qP0ZPWAvDrS3oxZJErUfn3SZiIzj5Zh2EWuyWxjR5Bsk84ntxpquh4D0USorfyw5MzECURQ8OcEeBQdspHatzQ==} + /eslint-plugin-testing-library@7.16.2(eslint@10.2.1)(typescript@6.0.3): + resolution: {integrity: sha512-8gleGnQXK2ZA3hHwjCwpYTZvM+9VsrJ+/9kDI8CjqAQGAdMQOdn/rJNu7ZySENuiWlGKQWyZJ4ZjEg2zamaRHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/scope-manager': 8.59.0 + '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + eslint: 10.2.1 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 dev: true @@ -5021,9 +3212,14 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dev: true + + /eslint@10.2.1: + resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -5031,26 +3227,23 @@ packages: jiti: optional: true dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.5.5 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.1 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 - chalk: 4.1.2 + ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5061,8 +3254,7 @@ packages: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -5073,9 +3265,18 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + dev: true + + /espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 dev: true /esquery@1.7.0: @@ -5104,7 +3305,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 dev: true /esutils@2.0.3: @@ -5112,11 +3313,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} - dev: true - /expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -5153,13 +3349,33 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + /fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + dev: true + + /fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + dependencies: + fast-string-truncated-width: 3.0.3 + dev: true + + /fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + dev: true + + /fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} dependencies: - reusify: 1.0.4 + fast-string-width: 3.0.2 dev: true - /fdir@6.5.0(picomatch@4.0.3): + /fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + dependencies: + reusify: 1.1.0 + dev: true + + /fdir@6.5.0(picomatch@4.0.4): resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5168,7 +3384,7 @@ packages: picomatch: optional: true dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 dev: true /file-entry-cache@8.0.0: @@ -5197,18 +3413,12 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 dev: true - /flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - dev: true - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 + /flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} dev: true /for-each@0.3.5: @@ -5218,33 +3428,15 @@ packages: is-callable: 1.2.7 dev: true - /form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /fs-extra@11.3.3: - resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + /fs-extra@11.3.4: + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 dev: true - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -5261,25 +3453,15 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - functions-have-names: 1.2.3 - dev: true - /function.prototype.name@1.1.8: resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.3 is-callable: 1.2.7 dev: true @@ -5287,6 +3469,11 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5296,33 +3483,6 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - dev: true - - /get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - dev: true - /get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -5335,7 +3495,7 @@ packages: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 math-intrinsics: 1.1.0 dev: true @@ -5344,29 +3504,20 @@ packages: engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 - dev: true - - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 + es-object-atoms: 1.1.1 dev: true /get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 dev: true - /get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + /get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -5385,31 +3536,27 @@ packages: is-glob: 4.0.3 dev: true - /glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} + /glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} dependencies: - minimatch: 10.1.1 - minipass: 7.1.2 - path-scurry: 2.0.1 + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 dev: true /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -5428,16 +3575,16 @@ packages: gopd: 1.2.0 dev: true - /globby@15.0.0: - resolution: {integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==} + /globby@16.2.0: + resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} engines: {node: '>=20'} dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 ignore: 7.0.5 - path-type: 6.0.0 + is-path-inside: 4.0.0 slash: 5.1.0 - unicorn-magic: 0.3.0 + unicorn-magic: 0.4.0 dev: true /globrex@0.1.2: @@ -5453,18 +3600,14 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graphql@16.12.0: - resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + /graphql@16.13.2: + resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + /has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} dev: true /has-flag@4.0.0: @@ -5497,8 +3640,8 @@ packages: has-symbols: 1.1.0 dev: true - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + /hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -5509,8 +3652,11 @@ packages: hasBin: true dev: true - /headers-polyfill@4.0.2: - resolution: {integrity: sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==} + /headers-polyfill@5.0.1: + resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} + dependencies: + '@types/set-cookie-parser': 2.4.10 + set-cookie-parser: 3.1.0 dev: true /hermes-estree@0.25.1: @@ -5523,18 +3669,11 @@ packages: hermes-estree: 0.25.1 dev: true - /html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} - dependencies: - whatwg-encoding: 3.1.1 - dev: true - /html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dependencies: - '@exodus/bytes': 1.10.0 + '@exodus/bytes': 1.15.0 transitivePeerDependencies: - '@noble/hashes' dev: true @@ -5543,33 +3682,6 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: true - - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -5605,6 +3717,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -5619,46 +3732,42 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.3 side-channel: 1.1.0 dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.7 - dev: true - /is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 dev: true - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + /is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 dev: true /is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 dev: true - /is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + /is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 dev: true @@ -5671,22 +3780,15 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.2 - dev: true - - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - dependencies: - is-typed-array: 1.1.15 + hasown: 2.0.3 dev: true /is-data-view@1.0.2: resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-typed-array: 1.1.15 dev: true @@ -5694,7 +3796,7 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 dev: true @@ -5707,7 +3809,7 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 dev: true /is-fullwidth-code-point@3.0.0: @@ -5715,11 +3817,15 @@ packages: engines: {node: '>=8'} dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + /is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 dev: true /is-glob@4.0.3: @@ -5747,7 +3853,7 @@ packages: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 dev: true @@ -5756,26 +3862,23 @@ packages: engines: {node: '>=0.12.0'} dev: true - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + /is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} dev: true - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - has-tostringtag: 1.0.2 + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true /is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 dev: true /is-set@2.0.3: @@ -5783,32 +3886,18 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - dev: true - /is-shared-array-buffer@1.0.4: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 + call-bound: 1.0.4 dev: true /is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 dev: true @@ -5816,23 +3905,16 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.18 - dev: true - /is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 dev: true /is-weakmap@2.0.2: @@ -5840,19 +3922,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.8 - dev: true - - /is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.3 - dev: true - /is-weakref@1.1.1: resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} @@ -5860,12 +3929,12 @@ packages: call-bound: 1.0.4 dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + /is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 dev: true /isarray@0.0.1: @@ -5922,17 +3991,13 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /jquery@3.7.1: - resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + /js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} dev: true /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - dev: true - /js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -5940,81 +4005,43 @@ packages: argparse: 2.0.1 dev: true - /jsdoc-type-pratt-parser@7.1.0: - resolution: {integrity: sha512-SX7q7XyCwzM/MEDCYz0l8GgGbJAACGFII9+WfNYr5SLEKukHWRy2Jk3iWRe7P+lpYJNs7oQ+OSei4JtKGUjd7A==} + /jsdoc-type-pratt-parser@7.2.0: + resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} engines: {node: '>=20.0.0'} dev: true - /jsdom@26.0.0: - resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^3.0.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.1 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 - rrweb-cssom: 0.8.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 5.1.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.0 - ws: 8.18.0 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jsdom@27.4.0: - resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + /jsdom@29.0.2: + resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true dependencies: - '@acemir/cssom': 0.9.31 - '@asamuzakjp/dom-selector': 6.7.6 - '@exodus/bytes': 1.10.0 - cssstyle: 5.3.7 - data-urls: 6.0.1 + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + '@exodus/bytes': 1.15.0 + css-tree: 3.2.1 + data-urls: 7.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - parse5: 8.0.0 + lru-cache: 11.3.5 + parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 6.0.0 + tough-cookie: 6.0.1 + undici: 7.25.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.19.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 xml-name-validator: 5.0.0 transitivePeerDependencies: - '@noble/hashes' - - bufferutil - - supports-color - - utf-8-validate dev: true /jsesc@3.1.0: @@ -6050,14 +4077,8 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + /jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} dependencies: universalify: 2.0.1 optionalDependencies: @@ -6068,10 +4089,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 dev: true /junk@4.0.1: @@ -6089,15 +4110,15 @@ packages: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} dev: true /language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 dev: true /levn@0.4.1: @@ -6108,19 +4129,129 @@ packages: type-check: 0.4.0 dev: true - /local-pkg@0.5.1: - resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} - engines: {node: '>=14'} + /lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} dependencies: - mlly: 1.7.4 - pkg-types: 1.3.0 + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 dev: true /local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} dependencies: - mlly: 1.8.0 + mlly: 1.8.2 pkg-types: 2.3.0 quansync: 0.2.11 dev: true @@ -6132,18 +4263,6 @@ packages: p-locate: 5.0.0 dev: true - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - dev: true - /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -6151,17 +4270,8 @@ packages: js-tokens: 4.0.0 dev: true - /loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - dev: true - - /lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - dev: true - - /lru-cache@11.2.5: - resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + /lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} engines: {node: 20 || >=22} dev: true @@ -6170,35 +4280,22 @@ packages: dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true - /magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - /magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} dependencies: '@jridgewell/sourcemap-codec': 1.5.5 dev: true - /magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + /magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 source-map-js: 1.2.1 dev: true @@ -6206,7 +4303,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.3 + semver: 7.7.4 dev: true /math-intrinsics@1.1.0: @@ -6214,13 +4311,13 @@ packages: engines: {node: '>= 0.4'} dev: true - /mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + /mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} dev: true - /meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} + /meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} + engines: {node: '>=20'} dev: true /merge2@1.4.1: @@ -6233,19 +4330,7 @@ packages: engines: {node: '>=8.6'} dependencies: braces: 3.0.3 - picomatch: 2.3.1 - dev: true - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 + picomatch: 2.3.2 dev: true /min-indent@1.0.1: @@ -6253,45 +4338,39 @@ packages: engines: {node: '>=4'} dev: true - /minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} - engines: {node: 20 || >=22} - dependencies: - '@isaacs/brace-expansion': 5.0.0 - dev: true - - /minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + /minimatch@10.2.3: + resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + engines: {node: 18 || 20 || >=22} dependencies: - '@isaacs/brace-expansion': 5.0.0 + brace-expansion: 5.0.5 dev: true - /minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + /minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} dependencies: - brace-expansion: 1.1.11 + brace-expansion: 5.0.5 dev: true - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + /minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.14 dev: true - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + /minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.1.0 dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + /minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -6301,19 +4380,10 @@ packages: hasBin: true dev: true - /mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - dependencies: - acorn: 8.14.0 - pathe: 2.0.3 - pkg-types: 1.3.0 - ufo: 1.5.4 - dev: true - - /mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + /mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 @@ -6322,8 +4392,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3): - resolution: {integrity: sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==} + /msw@2.13.6(typescript@6.0.3): + resolution: {integrity: sha512-GAJbQy8Ra/Ydjt0Hb2MGT2qhzd83J3+QZMHdH85uW7r/XkKc846+Ma2PLif5hGvTm5Yqa+wkcstpim0WeLZU9g==} engines: {node: '>=18'} hasBin: true requiresBuild: true @@ -6333,23 +4403,23 @@ packages: typescript: optional: true dependencies: - '@inquirer/confirm': 5.1.2(@types/node@22.19.7) - '@mswjs/interceptors': 0.40.0 - '@open-draft/deferred-promise': 2.2.0 + '@inquirer/confirm': 6.0.12 + '@mswjs/interceptors': 0.41.6 + '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.12.0 - headers-polyfill: 4.0.2 + graphql: 16.13.2 + headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.7.0 + rettime: 0.11.8 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.0 - type-fest: 5.4.2 - typescript: 5.9.3 + tough-cookie: 6.0.1 + type-fest: 5.6.0 + typescript: 6.0.3 until-async: 3.0.2 yargs: 17.7.2 transitivePeerDependencies: @@ -6360,9 +4430,9 @@ packages: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} dev: true - /mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + /mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} dev: true /nanoid@3.3.11: @@ -6374,8 +4444,8 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /next@16.1.6(@babel/core@7.28.6)(react-dom@19.2.4)(react@19.2.4): - resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} + /next@16.2.4(@babel/core@7.29.0)(react-dom@19.2.5)(react@19.2.5): + resolution: {integrity: sha512-kPvz56wF5frc+FxlHI5qnklCzbq53HTwORaWBGdT0vNoKh1Aya9XC8aPauH4NJxqtzbWsS5mAbctm4cr+EkQ2Q==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -6395,35 +4465,41 @@ packages: sass: optional: true dependencies: - '@next/env': 16.1.6 + '@next/env': 16.2.4 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001766 + baseline-browser-mapping: 2.10.23 + caniuse-lite: 1.0.30001791 postcss: 8.4.31 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - styled-jsx: 5.1.6(@babel/core@7.28.6)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.6 - '@next/swc-darwin-x64': 16.1.6 - '@next/swc-linux-arm64-gnu': 16.1.6 - '@next/swc-linux-arm64-musl': 16.1.6 - '@next/swc-linux-x64-gnu': 16.1.6 - '@next/swc-linux-x64-musl': 16.1.6 - '@next/swc-win32-arm64-msvc': 16.1.6 - '@next/swc-win32-x64-msvc': 16.1.6 + '@next/swc-darwin-arm64': 16.2.4 + '@next/swc-darwin-x64': 16.2.4 + '@next/swc-linux-arm64-gnu': 16.2.4 + '@next/swc-linux-arm64-musl': 16.2.4 + '@next/swc-linux-x64-gnu': 16.2.4 + '@next/swc-linux-x64-musl': 16.2.4 + '@next/swc-win32-arm64-msvc': 16.2.4 + '@next/swc-win32-x64-msvc': 16.2.4 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + /node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 dev: true - /node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + /node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} /noms@0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} @@ -6432,25 +4508,11 @@ packages: readable-stream: 1.0.34 dev: true - /nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - dev: true - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: true - - /object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} - engines: {node: '>= 0.4'} - dev: true - /object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -6461,24 +4523,14 @@ packages: engines: {node: '>= 0.4'} dev: true - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - dev: true - /object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 dev: true @@ -6487,7 +4539,7 @@ packages: resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -6497,35 +4549,26 @@ packages: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 dev: true /object.groupby@1.0.3: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - dev: true - - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 + call-bind: 1.0.9 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-abstract: 1.24.2 dev: true /object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -6561,7 +4604,7 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 dev: true @@ -6615,16 +4658,10 @@ packages: callsites: 3.1.0 dev: true - /parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - dependencies: - entities: 4.5.0 - dev: true - - /parse5@8.0.0: - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + /parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} dependencies: - entities: 6.0.1 + entities: 8.0.0 dev: true /path-browserify@1.0.1: @@ -6650,85 +4687,53 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} + /path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} dependencies: - lru-cache: 11.2.5 - minipass: 7.1.2 + lru-cache: 11.3.5 + minipass: 7.1.3 dev: true /path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} dev: true - /path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - dev: true - - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true - /pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} dev: true - /pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - dev: true - /picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + /picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} dev: true - /picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + /picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} dev: true - /picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - dev: true - - /pkg-types@1.3.0: - resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==} - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 1.1.2 - dev: true - /pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 dev: true /pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 dev: true - /popper.js@1.16.1: - resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} - deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 - dev: true - - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + /possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} dev: true @@ -6741,35 +4746,8 @@ packages: source-map-js: 1.2.1 dev: false - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: true - - /postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: true - - /postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: true - - /postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + /postcss@8.5.12: + resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 @@ -6789,8 +4767,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + /prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} engines: {node: '>=14'} hasBin: true dev: true @@ -6829,20 +4807,12 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-dom@19.0.0(react@19.0.0): - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} - peerDependencies: - react: ^19.0.0 - dependencies: - react: 19.0.0 - scheduler: 0.25.0 - - /react-dom@19.2.4(react@19.2.4): - resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + /react-dom@19.2.5(react@19.2.5): + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: - react: ^19.2.4 + react: ^19.2.5 dependencies: - react: 19.2.4 + react: 19.2.5 scheduler: 0.27.0 /react-is@16.13.1: @@ -6853,45 +4823,36 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: true - - /react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - dev: true - - /react-router-dom@6.22.3(react-dom@19.0.0)(react@19.0.0): - resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==} - engines: {node: '>=14.0.0'} + /react-router-dom@7.14.2(react-dom@19.2.5)(react@19.2.5): + resolution: {integrity: sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==} + engines: {node: '>=20.0.0'} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=18' + react-dom: '>=18' dependencies: - '@remix-run/router': 1.15.3 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-router: 6.22.3(react@19.0.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-router: 7.14.2(react-dom@19.2.5)(react@19.2.5) dev: false - /react-router@6.22.3(react@19.0.0): - resolution: {integrity: sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==} - engines: {node: '>=14.0.0'} + /react-router@7.14.2(react-dom@19.2.5)(react@19.2.5): + resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} + engines: {node: '>=20.0.0'} peerDependencies: - react: '>=16.8' + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true dependencies: - '@remix-run/router': 1.15.3 - react: 19.0.0 + cookie: 1.1.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + set-cookie-parser: 2.7.2 dev: false - /react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} - engines: {node: '>=0.10.0'} - - /react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + /react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} /readable-stream@1.0.34: @@ -6934,20 +4895,16 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.7 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 dev: true - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: true - /regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -6960,7 +4917,7 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 es-errors: 1.3.0 get-proto: 1.0.1 @@ -6987,141 +4944,71 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + /resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true dependencies: + es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + /resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} hasBin: true dependencies: + es-errors: 1.3.0 is-core-module: 2.16.1 + node-exports-info: 1.6.0 + object-keys: 1.1.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /rettime@0.7.0: - resolution: {integrity: sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==} + /rettime@0.11.8: + resolution: {integrity: sha512-0fERGXktJTyJ+h8fBEiPxHPEFOu0h15JY7JtwrOVqR5K+vb99ho6IyOo7ekLS3h4sJCzIDy4VWKIbZUfe9njmg==} dev: true - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + /reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf@6.1.2: - resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} + /rimraf@6.1.3: + resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==} engines: {node: 20 || >=22} hasBin: true dependencies: - glob: 13.0.0 + glob: 13.0.6 package-json-from-dist: 1.0.1 dev: true - /rollup@4.30.1: - resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.30.1 - '@rollup/rollup-android-arm64': 4.30.1 - '@rollup/rollup-darwin-arm64': 4.30.1 - '@rollup/rollup-darwin-x64': 4.30.1 - '@rollup/rollup-freebsd-arm64': 4.30.1 - '@rollup/rollup-freebsd-x64': 4.30.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 - '@rollup/rollup-linux-arm-musleabihf': 4.30.1 - '@rollup/rollup-linux-arm64-gnu': 4.30.1 - '@rollup/rollup-linux-arm64-musl': 4.30.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 - '@rollup/rollup-linux-riscv64-gnu': 4.30.1 - '@rollup/rollup-linux-s390x-gnu': 4.30.1 - '@rollup/rollup-linux-x64-gnu': 4.30.1 - '@rollup/rollup-linux-x64-musl': 4.30.1 - '@rollup/rollup-win32-arm64-msvc': 4.30.1 - '@rollup/rollup-win32-ia32-msvc': 4.30.1 - '@rollup/rollup-win32-x64-msvc': 4.30.1 - fsevents: 2.3.3 - dev: true - - /rollup@4.57.0: - resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.57.0 - '@rollup/rollup-android-arm64': 4.57.0 - '@rollup/rollup-darwin-arm64': 4.57.0 - '@rollup/rollup-darwin-x64': 4.57.0 - '@rollup/rollup-freebsd-arm64': 4.57.0 - '@rollup/rollup-freebsd-x64': 4.57.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 - '@rollup/rollup-linux-arm-musleabihf': 4.57.0 - '@rollup/rollup-linux-arm64-gnu': 4.57.0 - '@rollup/rollup-linux-arm64-musl': 4.57.0 - '@rollup/rollup-linux-loong64-gnu': 4.57.0 - '@rollup/rollup-linux-loong64-musl': 4.57.0 - '@rollup/rollup-linux-ppc64-gnu': 4.57.0 - '@rollup/rollup-linux-ppc64-musl': 4.57.0 - '@rollup/rollup-linux-riscv64-gnu': 4.57.0 - '@rollup/rollup-linux-riscv64-musl': 4.57.0 - '@rollup/rollup-linux-s390x-gnu': 4.57.0 - '@rollup/rollup-linux-x64-gnu': 4.57.0 - '@rollup/rollup-linux-x64-musl': 4.57.0 - '@rollup/rollup-openbsd-x64': 4.57.0 - '@rollup/rollup-openharmony-arm64': 4.57.0 - '@rollup/rollup-win32-arm64-msvc': 4.57.0 - '@rollup/rollup-win32-ia32-msvc': 4.57.0 - '@rollup/rollup-win32-x64-gnu': 4.57.0 - '@rollup/rollup-win32-x64-msvc': 4.57.0 - fsevents: 2.3.3 - dev: true - - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + /rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true dependencies: - '@types/estree': 1.0.5 + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 - fsevents: 2.3.3 - dev: true - - /rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 dev: true /run-parallel@1.2.0: @@ -7130,13 +5017,13 @@ packages: queue-microtask: 1.2.3 dev: true - /safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + /safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 dev: true @@ -7153,28 +5040,15 @@ packages: isarray: 2.0.5 dev: true - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: true - /safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 dev: true - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -7182,9 +5056,6 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - /scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -7201,24 +5072,18 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - dev: true + /set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + dev: false - /semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true + /set-cookie-parser@3.1.0: + resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} + dev: true /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -7227,7 +5092,7 @@ packages: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 dev: true @@ -7248,7 +5113,7 @@ packages: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 dev: true /sharp@0.34.5: @@ -7256,9 +5121,9 @@ packages: engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} requiresBuild: true dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -7299,32 +5164,32 @@ packages: engines: {node: '>=8'} dev: true - /side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + /side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 dev: true /side-channel-map@1.0.1: resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 dev: true /side-channel-weakmap@1.0.2: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 side-channel-map: 1.0.1 dev: true @@ -7333,8 +5198,8 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 - side-channel-list: 1.0.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 dev: true @@ -7375,12 +5240,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - dev: true - - /std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + /std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} dev: true /stop-iteration-iterator@1.1.0: @@ -7413,19 +5274,19 @@ packages: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.2 dev: true /string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -7441,57 +5302,39 @@ packages: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 - es-abstract: 1.24.1 + es-abstract: 1.24.2 dev: true /string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.9: resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 dev: true /string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 dev: true /string_decoder@0.10.31: @@ -7528,7 +5371,7 @@ packages: engines: {node: '>=8'} dev: true - /styled-jsx@5.1.6(@babel/core@7.28.6)(react@19.2.4): + /styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5): resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -7541,17 +5384,28 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.28.6 + '@babel/core': 7.29.0 client-only: 0.0.1 - react: 19.2.4 + react: 19.2.5 dev: false - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + /styled-jsx@5.1.7(@babel/core@7.29.0)(react@19.2.5): + resolution: {integrity: sha512-HPLmEIYprxCeWDMLYiaaAhsV3yGfIlCqzuVOybE6fjF3SUJmH67nCoMDO+nAvHNHo46OfvpCNu4Rcue82dMNFg==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: - has-flag: 3.0.0 - dev: true + '@babel/core': 7.29.0 + client-only: 0.0.1 + react: 19.2.5 + dev: false /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7588,8 +5442,8 @@ packages: engines: {node: '>=20'} dev: true - /tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + /tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} dev: true @@ -7604,63 +5458,33 @@ packages: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} dev: true - /tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - dev: true - - /tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + /tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} engines: {node: '>=18'} dev: true - /tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + /tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - dev: true - - /tinypool@1.0.1: - resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} - engines: {node: ^18.0.0 || >=20.0.0} - dev: true - - /tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 dev: true - /tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + /tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - dev: true - - /tldts-core@6.1.71: - resolution: {integrity: sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==} - dev: true - - /tldts-core@7.0.19: - resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} - dev: true - - /tldts@6.1.71: - resolution: {integrity: sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==} - hasBin: true - dependencies: - tldts-core: 6.1.71 + /tldts-core@7.0.28: + resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} dev: true - /tldts@7.0.19: - resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + /tldts@7.0.28: + resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} hasBin: true dependencies: - tldts-core: 7.0.19 + tldts-core: 7.0.28 dev: true /to-regex-range@5.0.1: @@ -7670,32 +5494,11 @@ packages: is-number: 7.0.0 dev: true - /tough-cookie@5.1.0: - resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} - engines: {node: '>=16'} - dependencies: - tldts: 6.1.71 - dev: true - - /tough-cookie@6.0.0: - resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + /tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} dependencies: - tldts: 7.0.19 - dev: true - - /tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} - dependencies: - punycode: 2.3.1 - dev: true - - /tr46@5.1.0: - resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} - engines: {node: '>=18'} - dependencies: - punycode: 2.3.1 + tldts: 7.0.28 dev: true /tr46@6.0.0: @@ -7705,22 +5508,22 @@ packages: punycode: 2.3.1 dev: true - /ts-api-utils@2.4.0(typescript@5.9.3): - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + /ts-api-utils@2.5.0(typescript@6.0.3): + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' dependencies: - typescript: 5.9.3 + typescript: 6.0.3 dev: true - /ts-declaration-location@1.0.7(typescript@5.9.3): + /ts-declaration-location@1.0.7(typescript@6.0.3): resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} peerDependencies: typescript: '>=4.0.0' dependencies: - picomatch: 4.0.3 - typescript: 5.9.3 + picomatch: 4.0.4 + typescript: 6.0.3 dev: true /tsconfig-paths@3.15.0: @@ -7740,8 +5543,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.27.2 - get-tsconfig: 4.13.0 + esbuild: 0.27.7 + get-tsconfig: 4.14.0 optionalDependencies: fsevents: 2.3.3 dev: true @@ -7753,65 +5556,28 @@ packages: prelude-ls: 1.2.1 dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - - /type-fest@5.4.2: - resolution: {integrity: sha512-FLEenlVYf7Zcd34ISMLo3ZzRE1gRjY1nMDTp+bQRBiPsaKyIW8K3Zr99ioHDUgA9OGuGGJPyYpNcffGmBhJfGg==} + /type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} dependencies: tagged-tag: 1.0.0 dev: true - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - dev: true - /typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - dev: true - /typed-array-byte-length@1.0.3: resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - dev: true - - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -7822,104 +5588,63 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 - dev: true - /typed-array-length@1.0.7: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 dev: true - /typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - /typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true dev: true - /ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - dev: true + /typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true /ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} dev: true - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.8 - has-bigints: 1.0.2 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - dev: true - /unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 - has-bigints: 1.0.2 + call-bound: 1.0.4 + has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 dev: true - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} dev: true - /undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + /undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} dev: true - /unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - dev: true - - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + /unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} dev: true /universalify@2.0.1: @@ -7936,24 +5661,13 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.1.2(browserslist@4.24.4): - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - dev: true - - /update-browserslist-db@1.2.3(browserslist@4.28.1): + /update-browserslist-db@1.2.3(browserslist@4.28.2): resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -7967,54 +5681,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite-node@2.1.8: - resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.1.6 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-plugin-dts@4.5.0(typescript@5.7.3)(vite@6.0.7): - resolution: {integrity: sha512-M1lrPTdi7gilLYRZoLmGYnl4fbPryVYsehPN9JgaxjJKTs8/f7tuAlvCCvOLB5gRDQTTKnptBcB0ACsaw2wNLw==} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true - dependencies: - '@microsoft/api-extractor': 7.49.1 - '@rollup/pluginutils': 5.1.4 - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - compare-versions: 6.1.1 - debug: 4.4.0 - kolorist: 1.8.0 - local-pkg: 0.5.1 - magic-string: 0.30.17 - typescript: 5.7.3 - vite: 6.0.7(tsx@4.21.0) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color - dev: true - - /vite-plugin-dts@4.5.4(@types/node@22.19.7)(typescript@5.9.3)(vite@7.3.1): + /vite-plugin-dts@4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10): resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} peerDependencies: typescript: '*' @@ -8023,151 +5690,33 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.55.2(@types/node@22.19.7) + '@microsoft/api-extractor': 7.58.7(@types/node@25.6.0) '@rollup/pluginutils': 5.3.0 - '@volar/typescript': 2.4.27 - '@vue/language-core': 2.2.0(typescript@5.9.3) + '@volar/typescript': 2.4.28 + '@vue/language-core': 2.2.0(typescript@6.0.3) compare-versions: 6.1.1 debug: 4.4.3 kolorist: 1.8.0 local-pkg: 1.1.2 magic-string: 0.30.21 - typescript: 5.9.3 - vite: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + typescript: 6.0.3 + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite@5.1.6: - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.19.12 - postcss: 8.5.3 - rollup: 4.9.6 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.1.6(@types/node@20.11.26): - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.11.26 - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.9.6 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@6.0.7(tsx@4.21.0): - resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - dependencies: - esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.30.1 - tsx: 4.21.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@7.3.1(@types/node@22.19.7)(tsx@4.21.0): - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + /vite@8.0.10(@types/node@25.6.0)(tsx@4.21.0): + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -8178,12 +5727,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -8199,35 +5750,50 @@ packages: yaml: optional: true dependencies: - '@types/node': 22.19.7 - esbuild: 0.27.2 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.57.0 - tinyglobby: 0.2.15 + '@types/node': 25.6.0 + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.12 + rolldown: 1.0.0-rc.17 + tinyglobby: 0.2.16 tsx: 4.21.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@2.1.8(jsdom@26.0.0): - resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} - engines: {node: ^18.0.0 || >=20.0.0} + /vitest@4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10): + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.8 - '@vitest/ui': 2.1.8 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@opentelemetry/api': + optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -8236,52 +5802,49 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.1.6) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 - debug: 4.4.0 - expect-type: 1.1.0 - jsdom: 26.0.0 - magic-string: 0.30.17 - pathe: 1.1.2 - std-env: 3.8.0 + '@types/node': 25.6.0 + '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.1.6 - vite-node: 2.1.8 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - - less - - lightningcss - msw - - sass - - stylus - - sugarss - - supports-color - - terser dev: true - /vitest@4.0.18(@types/node@22.19.7)(jsdom@27.4.0)(msw@2.12.7)(tsx@4.21.0): - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + /vitest@4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10): + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -8295,6 +5858,10 @@ packages: optional: true '@vitest/browser-webdriverio': optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true '@vitest/ui': optional: true happy-dom: @@ -8302,56 +5869,49 @@ packages: jsdom: optional: true dependencies: - '@types/node': 22.19.7 - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(msw@2.12.7)(vite@7.3.1) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 + '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 expect-type: 1.3.0 - jsdom: 27.4.0 + jsdom: 29.0.2 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml dev: true - /vitest@4.0.18(@types/node@22.19.7)(tsx@4.21.0): - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + /vitest@4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10): + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -8365,6 +5925,10 @@ packages: optional: true '@vitest/browser-webdriverio': optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true '@vitest/ui': optional: true happy-dom: @@ -8372,43 +5936,29 @@ packages: jsdom: optional: true dependencies: - '@types/node': 22.19.7 - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(msw@2.12.7)(vite@7.3.1) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 + '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@22.19.7)(tsx@4.21.0) + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml - dev: true - - /vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} dev: true /vscode-uri@3.1.0: @@ -8422,59 +5972,29 @@ packages: xml-name-validator: 5.0.0 dev: true - /web-vitals@4.2.4: - resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + /web-vitals@5.2.0: + resolution: {integrity: sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==} dev: false - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true - /webidl-conversions@8.0.1: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} dev: true - /whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - dependencies: - iconv-lite: 0.6.3 - dev: true - - /whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - dev: true - /whatwg-mimetype@5.0.0: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} dev: true - /whatwg-url@14.1.0: - resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} - engines: {node: '>=18'} - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - dev: true - - /whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} - dependencies: - tr46: 5.1.0 - webidl-conversions: 7.0.0 - dev: true - - /whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} - engines: {node: '>=20'} + /whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dependencies: + '@exodus/bytes': 1.15.0 tr46: 6.0.0 webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' dev: true /which-boxed-primitive@1.1.1: @@ -8482,7 +6002,7 @@ packages: engines: {node: '>= 0.4'} dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 @@ -8492,19 +6012,19 @@ packages: resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 + is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.2 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 dev: true /which-collection@1.0.2: @@ -8514,30 +6034,7 @@ packages: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - dev: true - - /which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - for-each: 0.3.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 + is-weakset: 2.0.4 dev: true /which-typed-array@1.1.20: @@ -8545,7 +6042,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 @@ -8575,15 +6072,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -8597,32 +6085,6 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -8645,10 +6107,6 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -8690,11 +6148,6 @@ packages: engines: {node: '>=10'} dev: true - /yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} - engines: {node: '>=18'} - dev: true - /zod-validation-error@4.0.2(zod@4.3.6): resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} diff --git a/tsconfig.base.json b/tsconfig.base.json index f8cc4cd65..a84094ff4 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -6,6 +6,7 @@ "allowJs": true, "noEmit": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "esModuleInterop": true, "skipLibCheck": true, "verbatimModuleSyntax": true From d0ba5ffc26c7482ec81698adc8b53dcc4da1ef02 Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 27 Apr 2026 06:39:43 +0000 Subject: [PATCH 476/565] [skip ci] Update to version 7.27.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 2eeefc4ce..e638e6cdd 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.3", + "version": "7.27.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 4d4c8d5aa..780d76279 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.3'; +export default '7.27.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index d2039d98b..9f4f6916a 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.3", + "version": "7.27.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 4d4c8d5aa..780d76279 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.3'; +export default '7.27.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 56ac6d47b..ff52e9505 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.3", + "version": "7.27.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From eb3231675c9655f91923f63927a3c19b5fde199f Mon Sep 17 00:00:00 2001 From: GitHub Date: Mon, 27 Apr 2026 06:39:45 +0000 Subject: [PATCH 477/565] [skip ci] Generate changelog to version 7.27.4 --- CHANGELOG.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a218dc99..62744a3ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog -## 7.27.3 +## 7.27.4 + +- [9d94b3d6](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* +- [78a0bfa6](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* +- [a18f8101](https://github.com/AxaFrance/oidc-client/commit/a18f81018dc8cd24620028b05912a46bb1f2ff72) - docs: remove twitter badge, add npm weekly downloads badges to READMEs (#1657), 2026-04-24 by *Copilot* +- [06918197](https://github.com/AxaFrance/oidc-client/commit/06918197a2ba6d549e2927cdf60a7019deb0fea7) - Remove sonar badges from README.md (#1656), 2026-04-24 by *Copilot* + + +## v7.27.3 - [3ae9f19f](https://github.com/AxaFrance/oidc-client/commit/3ae9f19f7ff304a85de103424865ebc63675d866) - fix: cache service worker registration to prevent repeated register calls (#1655) (release), 2026-04-21 by *Copilot* @@ -318,8 +326,3 @@ - [77eb9e18](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by *radk0s* -## v7.22.8 - -- [c4cf94b6](https://github.com/AxaFrance/oidc-client/commit/c4cf94b62a7b2c45cf0f94438a02f0cb5f06b9b0) - fix(oidc): remove dynamic web worker blocked by policies (release) (#1386), 2024-06-18 by *Guillaume Chervet* - - From debafc81b9f6d24f2c2bfc81e160b1cc595cacc0 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 16:00:06 +0200 Subject: [PATCH 478/565] Bypass non-OIDC requests in the service worker (#1663) (release) * Initial plan * Bypass non OIDC service worker requests Agent-Logs-Url: https://github.com/AxaFrance/oidc-client/sessions/c3807b47-b316-4658-928d-53c56b639eba Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * Refine non OIDC bypass helper Agent-Logs-Url: https://github.com/AxaFrance/oidc-client/sessions/c3807b47-b316-4658-928d-53c56b639eba Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * Keep access token domains intercepted Agent-Logs-Url: https://github.com/AxaFrance/oidc-client/sessions/c87015bc-b866-4c0f-9042-c87efba325fc Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- MIGRATION_GUIDE_V6_TO_V7.md | 1 + .../src/OidcServiceWorker.ts | 17 ++- .../src/__tests__/oidcConfig.spec.ts | 121 +++++++++++++++++- .../src/oidcConfig.ts | 91 ++++++++++++- .../oidc-client-service-worker/src/types.ts | 2 + .../src/utils/__tests__/domains.spec.ts | 1 + .../src/utils/__tests__/testHelper.ts | 1 + packages/oidc-client/README.md | 1 + packages/react-oidc/README.md | 1 + 9 files changed, 229 insertions(+), 7 deletions(-) diff --git a/MIGRATION_GUIDE_V6_TO_V7.md b/MIGRATION_GUIDE_V6_TO_V7.md index e3b5838fb..326686f77 100644 --- a/MIGRATION_GUIDE_V6_TO_V7.md +++ b/MIGRATION_GUIDE_V6_TO_V7.md @@ -13,5 +13,6 @@ trustedDomains.config_show_access_token = { showAccessToken: true, // convertAllRequestsToCorsExceptNavigate: false, // default value is false // setAccessTokenToNavigateRequests: true, // default value is true + // bypassAllNonOidcRequests: false, // default value is false; when true, requests outside OIDC and accessTokenDomains are handled by the browser }; ``` diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index d39950897..b1ba774a6 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -2,7 +2,7 @@ import { acceptAnyDomainToken, scriptFilename, TOKEN } from './constants'; import { base64urlOfHashOfASCIIEncodingAsync } from './crypto'; import { getDpopConfiguration, getDpopOnlyWhenDpopHeaderPresent } from './dpop'; import { generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync } from './jwt'; -import { getCurrentDatabasesTokenEndpoint } from './oidcConfig'; +import { getCurrentDatabasesTokenEndpoint, shouldBypassNonOidcRequest } from './oidcConfig'; import { Database, MessageEventData, OidcConfig, TrustedDomains } from './types'; import { checkDomain, @@ -113,11 +113,20 @@ const handleFetch = (event: FetchEvent): void => { if (bypassedDestinations.includes(event.request.destination)) { return; // Don't call event.respondWith() - let browser handle naturally } + + const normalizedUrl = normalizeUrl(event.request.url); + if ( + !normalizedUrl.includes(keepAliveJsonFilename) && + shouldBypassNonOidcRequest(database, normalizedUrl, trustedDomains) + ) { + return; // Don't call event.respondWith() - let browser handle naturally + } + event.respondWith( (async (): Promise => { try { const originalRequest = event.request; - const url = normalizeUrl(originalRequest.url); + const url = normalizedUrl; // 1) Handle keep-alive requests if (url.includes(keepAliveJsonFilename)) { @@ -430,6 +439,9 @@ const handleMessage = async (event: ExtendableMessageEvent) => { const convertAllRequestsToCorsExceptNavigate = Array.isArray(trustedDomain) ? false : trustedDomain.convertAllRequestsToCorsExceptNavigate; + const bypassAllNonOidcRequests = Array.isArray(trustedDomain) + ? false + : trustedDomain.bypassAllNonOidcRequests; database[configurationNameWithTabId] = { tokens: null, @@ -448,6 +460,7 @@ const handleMessage = async (event: ExtendableMessageEvent) => { demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, allowMultiTabLogin: allowMultiTabLogin ?? false, + bypassAllNonOidcRequests: bypassAllNonOidcRequests ?? false, }; currentDatabase = database[configurationNameWithTabId]; diff --git a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts index 43bf98f69..3ac09c610 100644 --- a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts +++ b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts @@ -1,7 +1,12 @@ import { describe, expect, it } from 'vitest'; -import { getCurrentDatabasesTokenEndpoint } from '../oidcConfig'; -import { Database } from '../types'; +import { + getCurrentDatabasesTokenEndpoint, + isAccessTokenDomainRequest, + isOidcServerRequest, + shouldBypassNonOidcRequest, +} from '../oidcConfig'; +import { Database, TrustedDomains } from '../types'; const oidcConfigDefaults = { demonstratingProofOfPossessionConfiguration: null, @@ -18,6 +23,7 @@ const oidcConfigDefaults = { demonstratingProofOfPossessionJwkJson: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, allowMultiTabLogin: true, + bypassAllNonOidcRequests: false, }; const oidcServerConfigDefault = { @@ -152,3 +158,114 @@ describe('getCurrentDatabasesTokenEndpoint', () => { expect(result).toHaveLength(0); }); }); + +describe('shouldBypassNonOidcRequest', () => { + const database: Database = { + config1: { + ...oidcConfigDefaults, + bypassAllNonOidcRequests: true, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + issuer: 'https://oidc.example.com', + authorizationEndpoint: 'https://oidc.example.com/connect/authorize', + tokenEndpoint: 'https://oidc.example.com/connect/token', + revocationEndpoint: 'https://oidc.example.com/connect/revoke', + userInfoEndpoint: 'https://oidc.example.com/connect/userinfo', + }, + }, + }; + + it('should bypass non-OIDC requests when enabled', () => { + expect(shouldBypassNonOidcRequest(database, 'https://api.example.com/users', null)).toBe(true); + }); + + it.each([ + 'https://oidc.example.com/.well-known/openid-configuration', + 'https://oidc.example.com/connect/authorize', + 'https://oidc.example.com/connect/token', + 'https://oidc.example.com/connect/revoke', + 'https://oidc.example.com/connect/userinfo', + ])('should never bypass OIDC server request %s', url => { + expect(isOidcServerRequest(database, url)).toBe(true); + expect(shouldBypassNonOidcRequest(database, url, null)).toBe(false); + }); + + it('should keep existing behavior when disabled', () => { + expect( + shouldBypassNonOidcRequest( + { + config1: { + ...database.config1, + bypassAllNonOidcRequests: false, + }, + }, + 'https://api.example.com/users', + null, + ), + ).toBe(false); + }); + + it('should keep existing behavior until OIDC server configuration is initialized', () => { + expect( + shouldBypassNonOidcRequest( + { + config1: { + ...oidcConfigDefaults, + bypassAllNonOidcRequests: true, + oidcServerConfiguration: null, + }, + }, + 'https://api.example.com/users', + null, + ), + ).toBe(false); + }); + + it('should keep accessTokenDomains requests intercepted when bypass is enabled', () => { + const trustedDomains: TrustedDomains = { + config1: { + accessTokenDomains: ['https://api.example.com'], + showAccessToken: false, + }, + }; + + expect( + isAccessTokenDomainRequest(database, 'https://api.example.com/users', trustedDomains), + ).toBe(true); + expect( + shouldBypassNonOidcRequest(database, 'https://api.example.com/users', trustedDomains), + ).toBe(false); + }); + + it('should keep domains fallback requests intercepted when bypass is enabled', () => { + const trustedDomains: TrustedDomains = { + config1: { + domains: ['https://api.example.com'], + showAccessToken: false, + }, + }; + + expect( + shouldBypassNonOidcRequest(database, 'https://api.example.com/users', trustedDomains), + ).toBe(false); + }); + + it('should keep existing behavior unless all initialized configurations enable bypass', () => { + expect( + shouldBypassNonOidcRequest( + { + ...database, + config2: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + issuer: 'https://other-oidc.example.com', + }, + }, + }, + 'https://api.example.com/users', + null, + ), + ).toBe(false); + }); +}); diff --git a/packages/oidc-client-service-worker/src/oidcConfig.ts b/packages/oidc-client-service-worker/src/oidcConfig.ts index e8bfe9e92..307668db1 100644 --- a/packages/oidc-client-service-worker/src/oidcConfig.ts +++ b/packages/oidc-client-service-worker/src/oidcConfig.ts @@ -1,5 +1,85 @@ -import { Database, OidcConfig } from './types'; -import { normalizeUrl } from './utils'; +import { acceptAnyDomainToken } from './constants'; +import { Database, Domain, OidcConfig, OidcServerConfiguration, TrustedDomains } from './types'; +import { getDomains, normalizeUrl } from './utils'; + +const getOidcServerUrls = (oidcServerConfiguration: OidcServerConfiguration): string[] => { + return [ + oidcServerConfiguration.issuer, + oidcServerConfiguration.authorizationEndpoint, + oidcServerConfiguration.tokenEndpoint, + oidcServerConfiguration.revocationEndpoint, + oidcServerConfiguration.userInfoEndpoint, + ] + .filter(Boolean) + .map(normalizeUrl); +}; + +const isOidcServerRequest = (database: Database, normalizedUrl: string): boolean => { + return Object.values(database).some(config => { + const { oidcServerConfiguration } = config || {}; + if (!oidcServerConfiguration) { + return false; + } + + return getOidcServerUrls(oidcServerConfiguration).some(oidcUrl => + normalizedUrl.startsWith(oidcUrl), + ); + }); +}; + +const isDomainMatchingUrl = (domain: Domain, normalizedUrl: string): boolean => { + if (typeof domain === 'string') { + domain = new RegExp(`^${domain}`); + } + + return domain.test?.(normalizedUrl) ?? false; +}; + +const isAccessTokenDomainRequest = ( + database: Database, + normalizedUrl: string, + trustedDomains: TrustedDomains, +): boolean => { + return Object.entries(database).some(([key, currentDatabase]) => { + if (!currentDatabase.oidcServerConfiguration) { + return false; + } + + const trustedDomain = trustedDomains?.[key.split('#')[0]] ?? []; + const domains = getDomains(trustedDomain, 'accessToken'); + + if (domains.some(domain => domain === acceptAnyDomainToken)) { + return true; + } + + return domains.some(domain => isDomainMatchingUrl(domain, normalizedUrl)); + }); +}; + +const shouldBypassNonOidcRequest = ( + database: Database, + normalizedUrl: string, + trustedDomains: TrustedDomains, +): boolean => { + const configurations = Object.values(database); + + if (configurations.length === 0) { + return false; + } + + if (!configurations.every(config => config.bypassAllNonOidcRequests)) { + return false; + } + + if (!configurations.every(config => config.oidcServerConfiguration != null)) { + return false; + } + + return ( + !isOidcServerRequest(database, normalizedUrl) && + !isAccessTokenDomainRequest(database, normalizedUrl, trustedDomains) + ); +}; const getMatchingOidcConfigurations = (database: Database, url: string): OidcConfig[] => { return Object.values(database).filter(config => { @@ -14,4 +94,9 @@ const getMatchingOidcConfigurations = (database: Database, url: string): OidcCon }); }; -export { getMatchingOidcConfigurations as getCurrentDatabasesTokenEndpoint }; +export { + getMatchingOidcConfigurations as getCurrentDatabasesTokenEndpoint, + isAccessTokenDomainRequest, + isOidcServerRequest, + shouldBypassNonOidcRequest, +}; diff --git a/packages/oidc-client-service-worker/src/types.ts b/packages/oidc-client-service-worker/src/types.ts index 47695cc61..fcd909f50 100644 --- a/packages/oidc-client-service-worker/src/types.ts +++ b/packages/oidc-client-service-worker/src/types.ts @@ -9,6 +9,7 @@ export type DomainDetails = { demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent?: boolean; demonstratingProofOfPossessionConfiguration?: DemonstratingProofOfPossessionConfiguration; allowMultiTabLogin?: boolean; + bypassAllNonOidcRequests?: boolean; }; export interface DemonstratingProofOfPossessionConfiguration { @@ -112,6 +113,7 @@ export type OidcConfig = { demonstratingProofOfPossessionJwkJson: string | null; demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: boolean; allowMultiTabLogin: boolean; + bypassAllNonOidcRequests: boolean; }; export type IdTokenPayload = { diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts index 371bd415c..20fb8f016 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/domains.spec.ts @@ -57,6 +57,7 @@ describe('domains', () => { demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, allowMultiTabLogin: true, + bypassAllNonOidcRequests: false, }, }; }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts index 09d74e46d..84c5c3b3b 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/testHelper.ts @@ -127,6 +127,7 @@ class OidcConfigBuilder { demonstratingProofOfPossessionConfiguration: null, demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: false, allowMultiTabLogin: true, + bypassAllNonOidcRequests: false, }; public withTestingDefault(): OidcConfigBuilder { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index d46a20ce6..f3c172bf9 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -96,6 +96,7 @@ trustedDomains.config_show_access_token = { showAccessToken: false, // convertAllRequestsToCorsExceptNavigate: false, // default value is false // setAccessTokenToNavigateRequests: true, // default value is true + // bypassAllNonOidcRequests: false, // default value is false; when true, requests outside OIDC and accessTokenDomains are handled by the browser }; // DPoP (Demonstrating Proof of Possession) will be activated for the following domains diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index f3a176bd4..f990aab06 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -94,6 +94,7 @@ trustedDomains.config_show_access_token = { showAccessToken: true, // convertAllRequestsToCorsExceptNavigate: false, // default value is false // setAccessTokenToNavigateRequests: true, // default value is true + // bypassAllNonOidcRequests: false, // default value is false; when true, requests outside OIDC and accessTokenDomains are handled by the browser }; // DPoP (Demonstrating Proof of Possession) will be activated for the following domains From 7c8774d0b7fba27cda3cf62a430aa58a151b9240 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 May 2026 13:25:28 +0000 Subject: [PATCH 479/565] [skip ci] Update to version 7.27.7 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index e638e6cdd..3590d4403 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.4", + "version": "7.27.7", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 780d76279..df3ca6525 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.4'; +export default '7.27.7'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 9f4f6916a..1989ce75f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.4", + "version": "7.27.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 780d76279..df3ca6525 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.4'; +export default '7.27.7'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ff52e9505..16f2a93be 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.4", + "version": "7.27.7", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 3ee5775f32cfb46426368827fcfe84b4f1ee630f Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 May 2026 13:25:31 +0000 Subject: [PATCH 480/565] [skip ci] Generate changelog to version 7.27.7 --- CHANGELOG.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62744a3ae..e68c143ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # Changelog -## 7.27.4 +## 7.27.7 + + + +## v7.27.6 + + + +## v7.27.5 + +- [debafc81](https://github.com/AxaFrance/oidc-client/commit/debafc81b9f6d24f2c2bfc81e160b1cc595cacc0) - Bypass non-OIDC requests in the service worker (#1663) (release), 2026-05-14 by *Copilot* + + +## v7.27.4 - [9d94b3d6](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* - [78a0bfa6](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* @@ -312,17 +325,3 @@ -## v7.22.11 - - - -## v7.22.10 - -- [6c80c5cc](https://github.com/AxaFrance/oidc-client/commit/6c80c5cc77750aead50e62136a6594b05f21b42b) - fix(oidc): logout trigger login (release) (#1394), 2024-07-04 by *Guillaume Chervet* - - -## v7.22.9 - -- [77eb9e18](https://github.com/AxaFrance/oidc-client/commit/77eb9e1841814cfeb6c6672159740dad4c0a9d4d) - fix(oidc): MessageChannel is not closed after message is received (release) (#1396), 2024-07-02 by *radk0s* - - From c67eabfbe2bf437b490f37c63d58d79bdf82c4de Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 15 May 2026 21:32:24 +0200 Subject: [PATCH 481/565] Update all dependencies to latest versions (#1665) (release) * Initial plan * Update all libraries to latest versions Agent-Logs-Url: https://github.com/AxaFrance/oidc-client/sessions/72020054-7ed1-4849-94c9-5d9f05e003b0 Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- examples/nextjs-demo/package.json | 6 +- examples/oidc-client-demo/package.json | 4 +- examples/react-oidc-demo/package.json | 16 +- package.json | 16 +- .../oidc-client-service-worker/package.json | 10 +- packages/oidc-client/package.json | 12 +- packages/react-oidc/package.json | 20 +- pnpm-lock.yaml | 1468 +++++++---------- 8 files changed, 682 insertions(+), 870 deletions(-) diff --git a/examples/nextjs-demo/package.json b/examples/nextjs-demo/package.json index 2587b2cd4..fac277dd8 100644 --- a/examples/nextjs-demo/package.json +++ b/examples/nextjs-demo/package.json @@ -8,9 +8,9 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "next": "^16.2.4", - "react": "^19.2.5", - "react-dom": "^19.2.5", + "next": "^16.2.6", + "react": "^19.2.6", + "react-dom": "^19.2.6", "styled-jsx": "^5.1.7" } } diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index 5c9147764..da17b5e41 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -27,8 +27,8 @@ ] }, "devDependencies": { - "@types/node": "25.6.0", + "@types/node": "25.8.0", "cross-env": "^10.1.0", - "vite": "8.0.10" + "vite": "8.0.13" } } diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index fa52d0d60..84d0a79b1 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -20,24 +20,24 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "react-router-dom": "^7.14.2" + "react": "^19.2.6", + "react-dom": "^19.2.6", + "react-router-dom": "^7.15.1" }, "devDependencies": { "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", "@types/react": "19.2.14", - "@vitejs/plugin-react": "6.0.1", + "@vitejs/plugin-react": "6.0.2", "bootstrap": "^5.3.8", "copyfiles": "2.4.1", "cross-env": "^10.1.0", - "jsdom": "29.0.2", + "jsdom": "29.1.1", "typescript": "6.0.3", - "vite": "8.0.10", - "vite-plugin-dts": "4.5.4", - "vitest": "4.1.5" + "vite": "8.0.13", + "vite-plugin-dts": "5.0.0", + "vitest": "4.1.6" }, "license": "MIT", "publishConfig": { diff --git a/package.json b/package.json index efaa4ada3..d66ce59c6 100644 --- a/package.json +++ b/package.json @@ -28,17 +28,17 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@eslint/compat": "^2.0.5", + "@eslint/compat": "^2.1.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^10.0.1", - "@typescript-eslint/eslint-plugin": "^8.59.0", - "@typescript-eslint/parser": "^8.59.0", - "eslint": "^10.2.1", + "@typescript-eslint/eslint-plugin": "^8.59.3", + "@typescript-eslint/parser": "^8.59.3", + "eslint": "^10.4.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-n": "^17.24.0", - "eslint-plugin-no-only-tests": "^3.3.0", + "eslint-plugin-n": "^18.0.1", + "eslint-plugin-no-only-tests": "^3.4.0", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", @@ -47,9 +47,9 @@ "eslint-plugin-testing-library": "^7.16.2", "prettier": "^3.8.3", "tslib": "^2.8.1", - "tsx": "4.21.0", + "tsx": "4.22.0", "typescript": "6.0.3", - "vitest": "4.1.5" + "vitest": "4.1.6" }, "engines": { "node": ">= 20.19.0" diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 3590d4403..9c9f87a5a 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -34,14 +34,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "4.1.5", - "cpy": "13.2.1", + "@vitest/coverage-v8": "4.1.6", + "cpy": "13.2.2", "cpy-cli": "^7.0.0", "rimraf": "6.1.3", "typescript": "6.0.3", - "vite": "8.0.10", - "vite-plugin-dts": "4.5.4", - "vitest": "4.1.5" + "vite": "8.0.13", + "vite-plugin-dts": "5.0.0", + "vitest": "4.1.6" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 1989ce75f..c3d330075 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -26,15 +26,15 @@ "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", - "@types/node": "^25.6.0", - "@vitest/coverage-v8": "4.1.5", - "cpy": "13.2.1", + "@types/node": "^25.8.0", + "@vitest/coverage-v8": "4.1.6", + "cpy": "13.2.2", "cpy-cli": "^7.0.0", "rimraf": "6.1.3", "typescript": "6.0.3", - "vite": "8.0.10", - "vite-plugin-dts": "4.5.4", - "vitest": "4.1.5" + "vite": "8.0.13", + "vite-plugin-dts": "5.0.0", + "vitest": "4.1.6" }, "keywords": [ "oidc", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 16f2a93be..f45080706 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -51,20 +51,20 @@ "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", "@types/react": "19.2.14", - "@vitejs/plugin-react": "6.0.1", - "@vitest/coverage-v8": "4.1.5", - "cpy": "13.2.1", + "@vitejs/plugin-react": "6.0.2", + "@vitest/coverage-v8": "4.1.6", + "cpy": "13.2.2", "cpy-cli": "^7.0.0", "cross-env": "^10.1.0", - "jsdom": "29.0.2", - "msw": "2.13.6", - "react": "^19.2.5", - "react-dom": "^19.2.5", + "jsdom": "29.1.1", + "msw": "2.14.6", + "react": "^19.2.6", + "react-dom": "^19.2.6", "rimraf": "6.1.3", "typescript": "6.0.3", - "vite": "8.0.10", - "vite-plugin-dts": "4.5.4", - "vitest": "4.1.5" + "vite": "8.0.13", + "vite-plugin-dts": "5.0.0", + "vitest": "4.1.6" }, "license": "MIT", "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5532898c2..5290cce3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,56 +9,56 @@ importers: .: devDependencies: '@eslint/compat': - specifier: ^2.0.5 - version: 2.0.5(eslint@10.2.1) + specifier: ^2.1.0 + version: 2.1.0(eslint@10.4.0) '@eslint/eslintrc': specifier: ^3.3.5 version: 3.3.5 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.2.1) + version: 10.0.1(eslint@10.4.0) '@typescript-eslint/eslint-plugin': - specifier: ^8.59.0 - version: 8.59.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1)(typescript@6.0.3) + specifier: ^8.59.3 + version: 8.59.3(@typescript-eslint/parser@8.59.3)(eslint@10.4.0)(typescript@6.0.3) '@typescript-eslint/parser': - specifier: ^8.59.0 - version: 8.59.0(eslint@10.2.1)(typescript@6.0.3) + specifier: ^8.59.3 + version: 8.59.3(eslint@10.4.0)(typescript@6.0.3) eslint: - specifier: ^10.2.1 - version: 10.2.1 + specifier: ^10.4.0 + version: 10.4.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.2.1) + version: 10.1.8(eslint@10.4.0) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1) + version: 2.32.0(@typescript-eslint/parser@8.59.3)(eslint@10.4.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@10.2.1) + version: 6.10.2(eslint@10.4.0) eslint-plugin-n: - specifier: ^17.24.0 - version: 17.24.0(eslint@10.2.1)(typescript@6.0.3) + specifier: ^18.0.1 + version: 18.0.1(eslint@10.4.0)(typescript@6.0.3) eslint-plugin-no-only-tests: - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.4.0 + version: 3.4.0 eslint-plugin-prettier: specifier: ^5.5.5 - version: 5.5.5(eslint-config-prettier@10.1.8)(eslint@10.2.1)(prettier@3.8.3) + version: 5.5.5(eslint-config-prettier@10.1.8)(eslint@10.4.0)(prettier@3.8.3) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@10.2.1) + version: 7.37.5(eslint@10.4.0) eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@10.2.1) + version: 7.1.1(eslint@10.4.0) eslint-plugin-regexp: specifier: ^3.1.0 - version: 3.1.0(eslint@10.2.1) + version: 3.1.0(eslint@10.4.0) eslint-plugin-simple-import-sort: specifier: ^13.0.0 - version: 13.0.0(eslint@10.2.1) + version: 13.0.0(eslint@10.4.0) eslint-plugin-testing-library: specifier: ^7.16.2 - version: 7.16.2(eslint@10.2.1)(typescript@6.0.3) + version: 7.16.2(eslint@10.4.0)(typescript@6.0.3) prettier: specifier: ^3.8.3 version: 3.8.3 @@ -66,14 +66,14 @@ importers: specifier: ^2.8.1 version: 2.8.1 tsx: - specifier: 4.21.0 - version: 4.21.0 + specifier: 4.22.0 + version: 4.22.0 typescript: specifier: 6.0.3 version: 6.0.3 vitest: - specifier: 4.1.5 - version: 4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10) + specifier: 4.1.6 + version: 4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13) examples/nextjs-demo: dependencies: @@ -81,17 +81,17 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc next: - specifier: ^16.2.4 - version: 16.2.4(@babel/core@7.29.0)(react-dom@19.2.5)(react@19.2.5) + specifier: ^16.2.6 + version: 16.2.6(@babel/core@7.29.0)(react-dom@19.2.6)(react@19.2.6) react: - specifier: ^19.2.5 - version: 19.2.5 + specifier: ^19.2.6 + version: 19.2.6 react-dom: - specifier: ^19.2.5 - version: 19.2.5(react@19.2.5) + specifier: ^19.2.6 + version: 19.2.6(react@19.2.6) styled-jsx: specifier: ^5.1.7 - version: 5.1.7(@babel/core@7.29.0)(react@19.2.5) + version: 5.1.7(@babel/core@7.29.0)(react@19.2.6) examples/oidc-client-demo: dependencies: @@ -106,14 +106,14 @@ importers: version: 5.2.0 devDependencies: '@types/node': - specifier: 25.6.0 - version: 25.6.0 + specifier: 25.8.0 + version: 25.8.0 cross-env: specifier: ^10.1.0 version: 10.1.0 vite: - specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + specifier: 8.0.13 + version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) examples/react-oidc-demo: dependencies: @@ -121,21 +121,21 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc react: - specifier: ^19.2.5 - version: 19.2.5 + specifier: ^19.2.6 + version: 19.2.6 react-dom: - specifier: ^19.2.5 - version: 19.2.5(react@19.2.5) + specifier: ^19.2.6 + version: 19.2.6(react@19.2.6) react-router-dom: - specifier: ^7.14.2 - version: 7.14.2(react-dom@19.2.5)(react@19.2.5) + specifier: ^7.15.1 + version: 7.15.1(react-dom@19.2.6)(react@19.2.6) devDependencies: '@testing-library/jest-dom': specifier: 6.9.1 version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -143,8 +143,8 @@ importers: specifier: 19.2.14 version: 19.2.14 '@vitejs/plugin-react': - specifier: 6.0.1 - version: 6.0.1(vite@8.0.10) + specifier: 6.0.2 + version: 6.0.2(vite@8.0.13) bootstrap: specifier: ^5.3.8 version: 5.3.8(@popperjs/core@2.11.8) @@ -155,20 +155,20 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: 29.0.2 - version: 29.0.2 + specifier: 29.1.1 + version: 29.1.1 typescript: specifier: 6.0.3 version: 6.0.3 vite: - specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + specifier: 8.0.13 + version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) + specifier: 5.0.0 + version: 5.0.0(typescript@6.0.3)(vite@8.0.13) vitest: - specifier: 4.1.5 - version: 4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10) + specifier: 4.1.6 + version: 4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13) packages/oidc-client: dependencies: @@ -184,16 +184,16 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) '@types/node': - specifier: ^25.6.0 - version: 25.6.0 + specifier: ^25.8.0 + version: 25.8.0 '@vitest/coverage-v8': - specifier: 4.1.5 - version: 4.1.5(vitest@4.1.5) + specifier: 4.1.6 + version: 4.1.6(vitest@4.1.6) cpy: - specifier: 13.2.1 - version: 13.2.1 + specifier: 13.2.2 + version: 13.2.2 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -204,23 +204,23 @@ importers: specifier: 6.0.3 version: 6.0.3 vite: - specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + specifier: 8.0.13 + version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) + specifier: 5.0.0 + version: 5.0.0(typescript@6.0.3)(vite@8.0.13) vitest: - specifier: 4.1.5 - version: 4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10) + specifier: 4.1.6 + version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13) packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 4.1.5 - version: 4.1.5(vitest@4.1.5) + specifier: 4.1.6 + version: 4.1.6(vitest@4.1.6) cpy: - specifier: 13.2.1 - version: 13.2.1 + specifier: 13.2.2 + version: 13.2.2 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -231,14 +231,14 @@ importers: specifier: 6.0.3 version: 6.0.3 vite: - specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + specifier: 8.0.13 + version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) + specifier: 5.0.0 + version: 5.0.0(typescript@6.0.3)(vite@8.0.13) vitest: - specifier: 4.1.5 - version: 4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10) + specifier: 4.1.6 + version: 4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13) packages/react-oidc: dependencies: @@ -254,7 +254,7 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -262,14 +262,14 @@ importers: specifier: 19.2.14 version: 19.2.14 '@vitejs/plugin-react': - specifier: 6.0.1 - version: 6.0.1(vite@8.0.10) + specifier: 6.0.2 + version: 6.0.2(vite@8.0.13) '@vitest/coverage-v8': - specifier: 4.1.5 - version: 4.1.5(vitest@4.1.5) + specifier: 4.1.6 + version: 4.1.6(vitest@4.1.6) cpy: - specifier: 13.2.1 - version: 13.2.1 + specifier: 13.2.2 + version: 13.2.2 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -277,17 +277,17 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: 29.0.2 - version: 29.0.2 + specifier: 29.1.1 + version: 29.1.1 msw: - specifier: 2.13.6 - version: 2.13.6(typescript@6.0.3) + specifier: 2.14.6 + version: 2.14.6(typescript@6.0.3) react: - specifier: ^19.2.5 - version: 19.2.5 + specifier: ^19.2.6 + version: 19.2.6 react-dom: - specifier: ^19.2.5 - version: 19.2.5(react@19.2.5) + specifier: ^19.2.6 + version: 19.2.6(react@19.2.6) rimraf: specifier: 6.1.3 version: 6.1.3 @@ -295,14 +295,14 @@ importers: specifier: 6.0.3 version: 6.0.3 vite: - specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + specifier: 8.0.13 + version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10) + specifier: 5.0.0 + version: 5.0.0(typescript@6.0.3)(vite@8.0.13) vitest: - specifier: 4.1.5 - version: 4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10) + specifier: 4.1.6 + version: 4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13) packages: @@ -575,8 +575,8 @@ packages: resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} dev: true - /@esbuild/aix-ppc64@0.27.7: - resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + /@esbuild/aix-ppc64@0.28.0: + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -584,8 +584,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.27.7: - resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + /@esbuild/android-arm64@0.28.0: + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -593,8 +593,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.27.7: - resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + /@esbuild/android-arm@0.28.0: + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -602,8 +602,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.27.7: - resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + /@esbuild/android-x64@0.28.0: + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -611,8 +611,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.27.7: - resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + /@esbuild/darwin-arm64@0.28.0: + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -620,8 +620,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.27.7: - resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + /@esbuild/darwin-x64@0.28.0: + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -629,8 +629,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.27.7: - resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + /@esbuild/freebsd-arm64@0.28.0: + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -638,8 +638,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.27.7: - resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + /@esbuild/freebsd-x64@0.28.0: + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -647,8 +647,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.27.7: - resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + /@esbuild/linux-arm64@0.28.0: + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -656,8 +656,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.27.7: - resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + /@esbuild/linux-arm@0.28.0: + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -665,8 +665,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.27.7: - resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + /@esbuild/linux-ia32@0.28.0: + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -674,8 +674,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.27.7: - resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + /@esbuild/linux-loong64@0.28.0: + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -683,8 +683,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.27.7: - resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + /@esbuild/linux-mips64el@0.28.0: + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -692,8 +692,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.27.7: - resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + /@esbuild/linux-ppc64@0.28.0: + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -701,8 +701,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.27.7: - resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + /@esbuild/linux-riscv64@0.28.0: + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -710,8 +710,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.27.7: - resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + /@esbuild/linux-s390x@0.28.0: + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -719,8 +719,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.27.7: - resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + /@esbuild/linux-x64@0.28.0: + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -728,8 +728,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-arm64@0.27.7: - resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + /@esbuild/netbsd-arm64@0.28.0: + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -737,8 +737,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.27.7: - resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + /@esbuild/netbsd-x64@0.28.0: + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -746,8 +746,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-arm64@0.27.7: - resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + /@esbuild/openbsd-arm64@0.28.0: + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -755,8 +755,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.27.7: - resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + /@esbuild/openbsd-x64@0.28.0: + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -764,8 +764,8 @@ packages: dev: true optional: true - /@esbuild/openharmony-arm64@0.27.7: - resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + /@esbuild/openharmony-arm64@0.28.0: + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -773,8 +773,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.27.7: - resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + /@esbuild/sunos-x64@0.28.0: + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -782,8 +782,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.27.7: - resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + /@esbuild/win32-arm64@0.28.0: + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -791,8 +791,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.27.7: - resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + /@esbuild/win32-ia32@0.28.0: + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -800,8 +800,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.27.7: - resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + /@esbuild/win32-x64@0.28.0: + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -809,13 +809,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.9.1(eslint@10.2.1): + /@eslint-community/eslint-utils@4.9.1(eslint@10.4.0): resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 10.2.1 + eslint: 10.4.0 eslint-visitor-keys: 3.4.3 dev: true @@ -824,8 +824,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/compat@2.0.5(eslint@10.2.1): - resolution: {integrity: sha512-IbHDbHJfkVNv6xjlET8AIVo/K1NQt7YT4Rp6ok/clyBGcpRx1l6gv0Rq3vBvYfPJIZt6ODf66Zq08FJNDpnzgg==} + /@eslint/compat@2.1.0(eslint@10.4.0): + resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^8.40 || 9 || 10 @@ -834,7 +834,7 @@ packages: optional: true dependencies: '@eslint/core': 1.2.1 - eslint: 10.2.1 + eslint: 10.4.0 dev: true /@eslint/config-array@0.23.5: @@ -848,8 +848,8 @@ packages: - supports-color dev: true - /@eslint/config-helpers@0.5.5: - resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + /@eslint/config-helpers@0.6.0: + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} dependencies: '@eslint/core': 1.2.1 @@ -879,7 +879,7 @@ packages: - supports-color dev: true - /@eslint/js@10.0.1(eslint@10.2.1): + /@eslint/js@10.0.1(eslint@10.4.0): resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: @@ -888,7 +888,7 @@ packages: eslint: optional: true dependencies: - eslint: 10.2.1 + eslint: 10.4.0 dev: true /@eslint/object-schema@3.0.5: @@ -1255,50 +1255,6 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - /@microsoft/api-extractor-model@7.33.8(@types/node@25.6.0): - resolution: {integrity: sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==} - dependencies: - '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.58.7(@types/node@25.6.0): - resolution: {integrity: sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.33.8(@types/node@25.6.0) - '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.0(@types/node@25.6.0) - '@rushstack/ts-command-line': 5.3.9(@types/node@25.6.0) - diff: 8.0.4 - minimatch: 10.2.3 - resolve: 1.22.12 - semver: 7.7.4 - source-map: 0.6.1 - typescript: 5.9.3 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/tsdoc-config@0.18.1: - resolution: {integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==} - dependencies: - '@microsoft/tsdoc': 0.16.0 - ajv: 8.18.0 - jju: 1.4.0 - resolve: 1.22.12 - dev: true - - /@microsoft/tsdoc@0.16.0: - resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - dev: true - /@mswjs/interceptors@0.41.6: resolution: {integrity: sha512-qmDvJIjcNsZ6tXWy2G9yuCgMPTTn35GMA3dPpSLm7QJVpbQzYdw0ALy1bKoivXnEM3U93/OrK+/M719b+fg84Q==} engines: {node: '>=18'} @@ -1324,12 +1280,12 @@ packages: dev: true optional: true - /@next/env@16.2.4: - resolution: {integrity: sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==} + /@next/env@16.2.6: + resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} dev: false - /@next/swc-darwin-arm64@16.2.4: - resolution: {integrity: sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==} + /@next/swc-darwin-arm64@16.2.6: + resolution: {integrity: sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1337,8 +1293,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@16.2.4: - resolution: {integrity: sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==} + /@next/swc-darwin-x64@16.2.6: + resolution: {integrity: sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1346,8 +1302,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@16.2.4: - resolution: {integrity: sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==} + /@next/swc-linux-arm64-gnu@16.2.6: + resolution: {integrity: sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1355,8 +1311,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@16.2.4: - resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==} + /@next/swc-linux-arm64-musl@16.2.6: + resolution: {integrity: sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1364,8 +1320,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@16.2.4: - resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==} + /@next/swc-linux-x64-gnu@16.2.6: + resolution: {integrity: sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1373,8 +1329,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@16.2.4: - resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==} + /@next/swc-linux-x64-musl@16.2.6: + resolution: {integrity: sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1382,8 +1338,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@16.2.4: - resolution: {integrity: sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==} + /@next/swc-win32-arm64-msvc@16.2.6: + resolution: {integrity: sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1391,8 +1347,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@16.2.4: - resolution: {integrity: sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==} + /@next/swc-win32-x64-msvc@16.2.6: + resolution: {integrity: sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1440,8 +1396,8 @@ packages: resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} dev: true - /@oxc-project/types@0.127.0: - resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + /@oxc-project/types@0.130.0: + resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} dev: true /@pkgr/core@0.2.9: @@ -1453,8 +1409,8 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: true - /@rolldown/binding-android-arm64@1.0.0-rc.17: - resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + /@rolldown/binding-android-arm64@1.0.1: + resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -1462,8 +1418,8 @@ packages: dev: true optional: true - /@rolldown/binding-darwin-arm64@1.0.0-rc.17: - resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + /@rolldown/binding-darwin-arm64@1.0.1: + resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -1471,8 +1427,8 @@ packages: dev: true optional: true - /@rolldown/binding-darwin-x64@1.0.0-rc.17: - resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + /@rolldown/binding-darwin-x64@1.0.1: + resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -1480,8 +1436,8 @@ packages: dev: true optional: true - /@rolldown/binding-freebsd-x64@1.0.0-rc.17: - resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + /@rolldown/binding-freebsd-x64@1.0.1: + resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -1489,8 +1445,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17: - resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + /@rolldown/binding-linux-arm-gnueabihf@1.0.1: + resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -1498,8 +1454,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17: - resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + /@rolldown/binding-linux-arm64-gnu@1.0.1: + resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -1507,8 +1463,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-arm64-musl@1.0.0-rc.17: - resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + /@rolldown/binding-linux-arm64-musl@1.0.1: + resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -1516,8 +1472,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17: - resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + /@rolldown/binding-linux-ppc64-gnu@1.0.1: + resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -1525,8 +1481,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17: - resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + /@rolldown/binding-linux-s390x-gnu@1.0.1: + resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -1534,8 +1490,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-x64-gnu@1.0.0-rc.17: - resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + /@rolldown/binding-linux-x64-gnu@1.0.1: + resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -1543,8 +1499,8 @@ packages: dev: true optional: true - /@rolldown/binding-linux-x64-musl@1.0.0-rc.17: - resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + /@rolldown/binding-linux-x64-musl@1.0.1: + resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -1552,8 +1508,8 @@ packages: dev: true optional: true - /@rolldown/binding-openharmony-arm64@1.0.0-rc.17: - resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + /@rolldown/binding-openharmony-arm64@1.0.1: + resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -1561,8 +1517,8 @@ packages: dev: true optional: true - /@rolldown/binding-wasm32-wasi@1.0.0-rc.17: - resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + /@rolldown/binding-wasm32-wasi@1.0.1: + resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] requiresBuild: true @@ -1573,8 +1529,8 @@ packages: dev: true optional: true - /@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17: - resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + /@rolldown/binding-win32-arm64-msvc@1.0.1: + resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -1582,8 +1538,8 @@ packages: dev: true optional: true - /@rolldown/binding-win32-x64-msvc@1.0.0-rc.17: - resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + /@rolldown/binding-win32-x64-msvc@1.0.1: + resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1591,12 +1547,8 @@ packages: dev: true optional: true - /@rolldown/pluginutils@1.0.0-rc.17: - resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} - dev: true - - /@rolldown/pluginutils@1.0.0-rc.7: - resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + /@rolldown/pluginutils@1.0.1: + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} dev: true /@rollup/pluginutils@5.3.0: @@ -1617,68 +1569,6 @@ packages: resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@rushstack/node-core-library@5.23.1(@types/node@25.6.0): - resolution: {integrity: sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 25.6.0 - ajv: 8.18.0 - ajv-draft-04: 1.0.0(ajv@8.18.0) - ajv-formats: 3.0.1(ajv@8.18.0) - fs-extra: 11.3.4 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.12 - semver: 7.7.4 - dev: true - - /@rushstack/problem-matcher@0.2.1(@types/node@25.6.0): - resolution: {integrity: sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 25.6.0 - dev: true - - /@rushstack/rig-package@0.7.3: - resolution: {integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==} - dependencies: - jju: 1.4.0 - resolve: 1.22.12 - dev: true - - /@rushstack/terminal@0.24.0(@types/node@25.6.0): - resolution: {integrity: sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) - '@rushstack/problem-matcher': 0.2.1(@types/node@25.6.0) - '@types/node': 25.6.0 - supports-color: 8.1.1 - dev: true - - /@rushstack/ts-command-line@5.3.9(@types/node@25.6.0): - resolution: {integrity: sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==} - dependencies: - '@rushstack/terminal': 0.24.0(@types/node@25.6.0) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - dev: true - /@sindresorhus/merge-streams@4.0.0: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -1720,7 +1610,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5)(react@19.2.5): + /@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6): resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} engines: {node: '>=18'} peerDependencies: @@ -1738,8 +1628,8 @@ packages: '@babel/runtime': 7.29.2 '@testing-library/dom': 10.4.1 '@types/react': 19.2.14 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) dev: true /@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1): @@ -1759,10 +1649,6 @@ packages: dev: true optional: true - /@types/argparse@1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: true - /@types/aria-query@5.0.4: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} dev: true @@ -1794,10 +1680,10 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/node@25.6.0: - resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + /@types/node@25.8.0: + resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} dependencies: - undici-types: 7.19.2 + undici-types: 7.24.6 dev: true /@types/react@19.2.14: @@ -1809,28 +1695,28 @@ packages: /@types/set-cookie-parser@2.4.10: resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} dependencies: - '@types/node': 25.6.0 + '@types/node': 25.8.0 dev: true /@types/statuses@2.0.6: resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} dev: true - /@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1)(typescript@6.0.3): - resolution: {integrity: sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==} + /@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3)(eslint@10.4.0)(typescript@6.0.3): + resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.0 + '@typescript-eslint/parser': ^8.59.3 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/type-utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.0 - eslint: 10.2.1 + '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/type-utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.3 + eslint: 10.4.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -1839,19 +1725,19 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.59.0(eslint@10.2.1)(typescript@6.0.3): - resolution: {integrity: sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==} + /@typescript-eslint/parser@8.59.3(eslint@10.4.0)(typescript@6.0.3): + resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.3 debug: 4.4.3 - eslint: 10.2.1 + eslint: 10.4.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -1871,6 +1757,20 @@ packages: - supports-color dev: true + /@typescript-eslint/project-service@8.59.3(typescript@6.0.3): + resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) + '@typescript-eslint/types': 8.59.3 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@8.59.0: resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1879,6 +1779,14 @@ packages: '@typescript-eslint/visitor-keys': 8.59.0 dev: true + /@typescript-eslint/scope-manager@8.59.3: + resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/visitor-keys': 8.59.3 + dev: true + /@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3): resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1888,18 +1796,27 @@ packages: typescript: 6.0.3 dev: true - /@typescript-eslint/type-utils@8.59.0(eslint@10.2.1)(typescript@6.0.3): - resolution: {integrity: sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==} + /@typescript-eslint/tsconfig-utils@8.59.3(typescript@6.0.3): + resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + dependencies: + typescript: 6.0.3 + dev: true + + /@typescript-eslint/type-utils@8.59.3(eslint@10.4.0)(typescript@6.0.3): + resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) debug: 4.4.3 - eslint: 10.2.1 + eslint: 10.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -1911,6 +1828,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true + /@typescript-eslint/types@8.59.3: + resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3): resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1931,18 +1853,55 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.59.0(eslint@10.2.1)(typescript@6.0.3): + /@typescript-eslint/typescript-estree@8.59.3(typescript@6.0.3): + resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + dependencies: + '@typescript-eslint/project-service': 8.59.3(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/visitor-keys': 8.59.3 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@8.59.0(eslint@10.4.0)(typescript@6.0.3): resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) '@typescript-eslint/scope-manager': 8.59.0 '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - eslint: 10.2.1 + eslint: 10.4.0 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@8.59.3(eslint@10.4.0)(typescript@6.0.3): + resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) + eslint: 10.4.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -1956,8 +1915,16 @@ packages: eslint-visitor-keys: 5.0.1 dev: true - /@vitejs/plugin-react@6.0.1(vite@8.0.10): - resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} + /@typescript-eslint/visitor-keys@8.59.3: + resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.59.3 + eslint-visitor-keys: 5.0.1 + dev: true + + /@vitejs/plugin-react@6.0.2(vite@8.0.13): + resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 @@ -1969,21 +1936,21 @@ packages: babel-plugin-react-compiler: optional: true dependencies: - '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + '@rolldown/pluginutils': 1.0.1 + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) dev: true - /@vitest/coverage-v8@4.1.5(vitest@4.1.5): - resolution: {integrity: sha512-38C0/Ddb7HcRG0Z4/DUem8x57d2p9jYgp18mkaYswEOQBGsI1CG4f/hjm0ZCeaJfWhSZ4k7jgs29V1Zom7Ki9A==} + /@vitest/coverage-v8@4.1.6(vitest@4.1.6): + resolution: {integrity: sha512-36l628fQ/9a/8ihy97eOtEnvWQEdqULQOJtcaxtoNq0G1w3Mxd4szSahOaMM9/NGyZ+hyKcMtIW/WIxq0XQViQ==} peerDependencies: - '@vitest/browser': 4.1.5 - vitest: 4.1.5 + '@vitest/browser': 4.1.6 + vitest: 4.1.6 peerDependenciesMeta: '@vitest/browser': optional: true dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.5 + '@vitest/utils': 4.1.6 ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -1992,22 +1959,22 @@ packages: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10) + vitest: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13) dev: true - /@vitest/expect@4.1.5: - resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} + /@vitest/expect@4.1.6: + resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.5 - '@vitest/utils': 4.1.5 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 chai: 6.2.2 tinyrainbow: 3.1.0 dev: true - /@vitest/mocker@4.1.5(msw@2.13.6)(vite@8.0.10): - resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} + /@vitest/mocker@4.1.6(msw@2.14.6)(vite@8.0.13): + resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2017,43 +1984,43 @@ packages: vite: optional: true dependencies: - '@vitest/spy': 4.1.5 + '@vitest/spy': 4.1.6 estree-walker: 3.0.3 magic-string: 0.30.21 - msw: 2.13.6(typescript@6.0.3) - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + msw: 2.14.6(typescript@6.0.3) + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) dev: true - /@vitest/pretty-format@4.1.5: - resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} + /@vitest/pretty-format@4.1.6: + resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} dependencies: tinyrainbow: 3.1.0 dev: true - /@vitest/runner@4.1.5: - resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} + /@vitest/runner@4.1.6: + resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} dependencies: - '@vitest/utils': 4.1.5 + '@vitest/utils': 4.1.6 pathe: 2.0.3 dev: true - /@vitest/snapshot@4.1.5: - resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + /@vitest/snapshot@4.1.6: + resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} dependencies: - '@vitest/pretty-format': 4.1.5 - '@vitest/utils': 4.1.5 + '@vitest/pretty-format': 4.1.6 + '@vitest/utils': 4.1.6 magic-string: 0.30.21 pathe: 2.0.3 dev: true - /@vitest/spy@4.1.5: - resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + /@vitest/spy@4.1.6: + resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} dev: true - /@vitest/utils@4.1.5: - resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + /@vitest/utils@4.1.6: + resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} dependencies: - '@vitest/pretty-format': 4.1.5 + '@vitest/pretty-format': 4.1.6 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 dev: true @@ -2076,53 +2043,6 @@ packages: vscode-uri: 3.1.0 dev: true - /@vue/compiler-core@3.5.33: - resolution: {integrity: sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==} - dependencies: - '@babel/parser': 7.29.2 - '@vue/shared': 3.5.33 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - dev: true - - /@vue/compiler-dom@3.5.33: - resolution: {integrity: sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==} - dependencies: - '@vue/compiler-core': 3.5.33 - '@vue/shared': 3.5.33 - dev: true - - /@vue/compiler-vue2@2.7.16: - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - dev: true - - /@vue/language-core@2.2.0(typescript@6.0.3): - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.33 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.33 - alien-signals: 0.4.14 - minimatch: 9.0.9 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - typescript: 6.0.3 - dev: true - - /@vue/shared@3.5.33: - resolution: {integrity: sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==} - dev: true - /acorn-jsx@5.3.2(acorn@8.16.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2137,28 +2057,6 @@ packages: hasBin: true dev: true - /ajv-draft-04@1.0.0(ajv@8.18.0): - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.18.0 - dev: true - - /ajv-formats@3.0.1(ajv@8.18.0): - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.18.0 - dev: true - /ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} dependencies: @@ -2168,19 +2066,6 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - dev: true - - /alien-signals@0.4.14: - resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2198,12 +2083,6 @@ packages: engines: {node: '>=10'} dev: true - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -2384,12 +2263,6 @@ packages: concat-map: 0.0.1 dev: true - /brace-expansion@2.1.0: - resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} - dependencies: - balanced-match: 1.0.2 - dev: true - /brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -2550,13 +2423,13 @@ packages: engines: {node: '>=20'} hasBin: true dependencies: - cpy: 13.2.1 + cpy: 13.2.2 globby: 16.2.0 meow: 14.1.0 dev: true - /cpy@13.2.1: - resolution: {integrity: sha512-/H2B3WW9gccZJKjKoDZsIrDU3MkkHlxgheT82hUbInC5fEdi4+54zyYpFueZT9pLfr5ObrtgN4MsYYrmTmHzeg==} + /cpy@13.2.2: + resolution: {integrity: sha512-FEc7gmNSj4mDQCWNt3mByVn3qZX3EjMvggiqgCQPF1yJAFfyX6Ai/emN89w18TRp+QcFmdTLgX3hfNnIVgYHcw==} engines: {node: '>=20'} dependencies: copy-file: 11.1.0 @@ -2642,10 +2515,6 @@ packages: is-data-view: 1.0.2 dev: true - /de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - dev: true - /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2704,11 +2573,6 @@ packages: engines: {node: '>=8'} requiresBuild: true - /diff@8.0.4: - resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} - engines: {node: '>=0.3.1'} - dev: true - /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -2752,11 +2616,6 @@ packages: tapable: 2.3.3 dev: true - /entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - dev: true - /entities@8.0.0: resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} engines: {node: '>=20.19.0'} @@ -2891,38 +2750,38 @@ packages: is-symbol: 1.1.1 dev: true - /esbuild@0.27.7: - resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + /esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} engines: {node: '>=18'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.27.7 - '@esbuild/android-arm': 0.27.7 - '@esbuild/android-arm64': 0.27.7 - '@esbuild/android-x64': 0.27.7 - '@esbuild/darwin-arm64': 0.27.7 - '@esbuild/darwin-x64': 0.27.7 - '@esbuild/freebsd-arm64': 0.27.7 - '@esbuild/freebsd-x64': 0.27.7 - '@esbuild/linux-arm': 0.27.7 - '@esbuild/linux-arm64': 0.27.7 - '@esbuild/linux-ia32': 0.27.7 - '@esbuild/linux-loong64': 0.27.7 - '@esbuild/linux-mips64el': 0.27.7 - '@esbuild/linux-ppc64': 0.27.7 - '@esbuild/linux-riscv64': 0.27.7 - '@esbuild/linux-s390x': 0.27.7 - '@esbuild/linux-x64': 0.27.7 - '@esbuild/netbsd-arm64': 0.27.7 - '@esbuild/netbsd-x64': 0.27.7 - '@esbuild/openbsd-arm64': 0.27.7 - '@esbuild/openbsd-x64': 0.27.7 - '@esbuild/openharmony-arm64': 0.27.7 - '@esbuild/sunos-x64': 0.27.7 - '@esbuild/win32-arm64': 0.27.7 - '@esbuild/win32-ia32': 0.27.7 - '@esbuild/win32-x64': 0.27.7 + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 dev: true /escalade@3.2.0: @@ -2934,23 +2793,23 @@ packages: engines: {node: '>=10'} dev: true - /eslint-compat-utils@0.5.1(eslint@10.2.1): + /eslint-compat-utils@0.5.1(eslint@10.4.0): resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 10.2.1 + eslint: 10.4.0 semver: 7.7.4 dev: true - /eslint-config-prettier@10.1.8(eslint@10.2.1): + /eslint-config-prettier@10.1.8(eslint@10.4.0): resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 10.2.1 + eslint: 10.4.0 dev: true /eslint-import-resolver-node@0.3.10: @@ -2963,7 +2822,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0)(eslint-import-resolver-node@0.3.10)(eslint@10.2.1): + /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.3)(eslint-import-resolver-node@0.3.10)(eslint@10.4.0): resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: @@ -2984,27 +2843,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) debug: 3.2.7 - eslint: 10.2.1 + eslint: 10.4.0 eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.8.0(eslint@10.2.1): + /eslint-plugin-es-x@7.8.0(eslint@10.4.0): resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) '@eslint-community/regexpp': 4.12.2 - eslint: 10.2.1 - eslint-compat-utils: 0.5.1(eslint@10.2.1) + eslint: 10.4.0 + eslint-compat-utils: 0.5.1(eslint@10.4.0) dev: true - /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0)(eslint@10.2.1): + /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.3)(eslint@10.4.0): resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -3015,16 +2874,16 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.2.1 + eslint: 10.4.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0)(eslint-import-resolver-node@0.3.10)(eslint@10.2.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.3)(eslint-import-resolver-node@0.3.10)(eslint@10.4.0) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -3041,7 +2900,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.10.2(eslint@10.2.1): + /eslint-plugin-jsx-a11y@6.10.2(eslint@10.4.0): resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: @@ -3055,7 +2914,7 @@ packages: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 10.2.1 + eslint: 10.4.0 hasown: 2.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -3065,32 +2924,37 @@ packages: string.prototype.includes: 2.0.1 dev: true - /eslint-plugin-n@17.24.0(eslint@10.2.1)(typescript@6.0.3): - resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /eslint-plugin-n@18.0.1(eslint@10.4.0)(typescript@6.0.3): + resolution: {integrity: sha512-q3ARhk+eZRc7myR0KHx+R3/GJeOHF+Ir6PK95Pu2tEX8Sl/4BIpmmVLva2kPrjC2gCmn6WHlHm+3yeo6Rxhycw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: '>=8.23.0' + eslint: '>=8.57.1' + ts-declaration-location: ^1.0.6 + typescript: '>=5.0.0' + peerDependenciesMeta: + ts-declaration-location: + optional: true + typescript: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) enhanced-resolve: 5.21.0 - eslint: 10.2.1 - eslint-plugin-es-x: 7.8.0(eslint@10.2.1) + eslint: 10.4.0 + eslint-plugin-es-x: 7.8.0(eslint@10.4.0) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 semver: 7.7.4 - ts-declaration-location: 1.0.7(typescript@6.0.3) - transitivePeerDependencies: - - typescript + typescript: 6.0.3 dev: true - /eslint-plugin-no-only-tests@3.3.0: - resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + /eslint-plugin-no-only-tests@3.4.0: + resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8)(eslint@10.2.1)(prettier@3.8.3): + /eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8)(eslint@10.4.0)(prettier@3.8.3): resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3104,14 +2968,14 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 10.2.1 - eslint-config-prettier: 10.1.8(eslint@10.2.1) + eslint: 10.4.0 + eslint-config-prettier: 10.1.8(eslint@10.4.0) prettier: 3.8.3 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 dev: true - /eslint-plugin-react-hooks@7.1.1(eslint@10.2.1): + /eslint-plugin-react-hooks@7.1.1(eslint@10.4.0): resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} engines: {node: '>=18'} peerDependencies: @@ -3119,7 +2983,7 @@ packages: dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.2 - eslint: 10.2.1 + eslint: 10.4.0 hermes-parser: 0.25.1 zod: 4.3.6 zod-validation-error: 4.0.2(zod@4.3.6) @@ -3127,7 +2991,7 @@ packages: - supports-color dev: true - /eslint-plugin-react@7.37.5(eslint@10.2.1): + /eslint-plugin-react@7.37.5(eslint@10.4.0): resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: @@ -3139,7 +3003,7 @@ packages: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.2 - eslint: 10.2.1 + eslint: 10.4.0 estraverse: 5.3.0 hasown: 2.0.3 jsx-ast-utils: 3.3.5 @@ -3154,39 +3018,39 @@ packages: string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-regexp@3.1.0(eslint@10.2.1): + /eslint-plugin-regexp@3.1.0(eslint@10.4.0): resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.6 - eslint: 10.2.1 + eslint: 10.4.0 jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 dev: true - /eslint-plugin-simple-import-sort@13.0.0(eslint@10.2.1): + /eslint-plugin-simple-import-sort@13.0.0(eslint@10.4.0): resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 10.2.1 + eslint: 10.4.0 dev: true - /eslint-plugin-testing-library@7.16.2(eslint@10.2.1)(typescript@6.0.3): + /eslint-plugin-testing-library@7.16.2(eslint@10.4.0)(typescript@6.0.3): resolution: {integrity: sha512-8gleGnQXK2ZA3hHwjCwpYTZvM+9VsrJ+/9kDI8CjqAQGAdMQOdn/rJNu7ZySENuiWlGKQWyZJ4ZjEg2zamaRHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 dependencies: '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1)(typescript@6.0.3) - eslint: 10.2.1 + '@typescript-eslint/utils': 8.59.0(eslint@10.4.0)(typescript@6.0.3) + eslint: 10.4.0 transitivePeerDependencies: - supports-color - typescript @@ -3217,8 +3081,8 @@ packages: engines: {node: ^20.19.0 || ^22.13.0 || >=24} dev: true - /eslint@10.2.1: - resolution: {integrity: sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==} + /eslint@10.4.0: + resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -3227,10 +3091,10 @@ packages: jiti: optional: true dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 - '@eslint/config-helpers': 0.5.5 + '@eslint/config-helpers': 0.6.0 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.1 '@humanfs/node': 0.16.8 @@ -3359,10 +3223,6 @@ packages: fast-string-truncated-width: 3.0.3 dev: true - /fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - dev: true - /fast-wrap-ansi@0.2.0: resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} dependencies: @@ -3428,15 +3288,6 @@ packages: is-callable: 1.2.7 dev: true - /fs-extra@11.3.4: - resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.1 - universalify: 2.0.1 - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -3647,11 +3498,6 @@ packages: function-bind: 1.1.2 dev: true - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - /headers-polyfill@5.0.1: resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} dependencies: @@ -3700,11 +3546,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3987,10 +3828,6 @@ packages: set-function-name: 2.0.2 dev: true - /jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - dev: true - /js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} dev: true @@ -4010,8 +3847,8 @@ packages: engines: {node: '>=20.0.0'} dev: true - /jsdom@29.0.2: - resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} + /jsdom@29.1.1: + resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -4057,10 +3894,6 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -4077,14 +3910,6 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonfile@6.2.1: - resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4338,13 +4163,6 @@ packages: engines: {node: '>=4'} dev: true - /minimatch@10.2.3: - resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} - engines: {node: 18 || 20 || >=22} - dependencies: - brace-expansion: 5.0.5 - dev: true - /minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -4358,13 +4176,6 @@ packages: brace-expansion: 1.1.14 dev: true - /minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.1.0 - dev: true - /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true @@ -4392,8 +4203,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /msw@2.13.6(typescript@6.0.3): - resolution: {integrity: sha512-GAJbQy8Ra/Ydjt0Hb2MGT2qhzd83J3+QZMHdH85uW7r/XkKc846+Ma2PLif5hGvTm5Yqa+wkcstpim0WeLZU9g==} + /msw@2.14.6(typescript@6.0.3): + resolution: {integrity: sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==} engines: {node: '>=18'} hasBin: true requiresBuild: true @@ -4414,7 +4225,7 @@ packages: outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.11.8 + rettime: 0.11.11 statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.1 @@ -4426,10 +4237,6 @@ packages: - '@types/node' dev: true - /muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - dev: true - /mute-stream@3.0.0: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -4444,8 +4251,8 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /next@16.2.4(@babel/core@7.29.0)(react-dom@19.2.5)(react@19.2.5): - resolution: {integrity: sha512-kPvz56wF5frc+FxlHI5qnklCzbq53HTwORaWBGdT0vNoKh1Aya9XC8aPauH4NJxqtzbWsS5mAbctm4cr+EkQ2Q==} + /next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.6)(react@19.2.6): + resolution: {integrity: sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -4465,23 +4272,23 @@ packages: sass: optional: true dependencies: - '@next/env': 16.2.4 + '@next/env': 16.2.6 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.10.23 caniuse-lite: 1.0.30001791 postcss: 8.4.31 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.6) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.4 - '@next/swc-darwin-x64': 16.2.4 - '@next/swc-linux-arm64-gnu': 16.2.4 - '@next/swc-linux-arm64-musl': 16.2.4 - '@next/swc-linux-x64-gnu': 16.2.4 - '@next/swc-linux-x64-musl': 16.2.4 - '@next/swc-win32-arm64-msvc': 16.2.4 - '@next/swc-win32-x64-msvc': 16.2.4 + '@next/swc-darwin-arm64': 16.2.6 + '@next/swc-darwin-x64': 16.2.6 + '@next/swc-linux-arm64-gnu': 16.2.6 + '@next/swc-linux-arm64-musl': 16.2.6 + '@next/swc-linux-x64-gnu': 16.2.6 + '@next/swc-linux-x64-musl': 16.2.6 + '@next/swc-win32-arm64-msvc': 16.2.6 + '@next/swc-win32-x64-msvc': 16.2.6 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' @@ -4746,8 +4553,8 @@ packages: source-map-js: 1.2.1 dev: false - /postcss@8.5.12: - resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + /postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 @@ -4807,12 +4614,12 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-dom@19.2.5(react@19.2.5): - resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + /react-dom@19.2.6(react@19.2.6): + resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} peerDependencies: - react: ^19.2.5 + react: ^19.2.6 dependencies: - react: 19.2.5 + react: 19.2.6 scheduler: 0.27.0 /react-is@16.13.1: @@ -4823,20 +4630,20 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-router-dom@7.14.2(react-dom@19.2.5)(react@19.2.5): - resolution: {integrity: sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==} + /react-router-dom@7.15.1(react-dom@19.2.6)(react@19.2.6): + resolution: {integrity: sha512-AzF62gjY6U9rkMq4RfP/r2EVtQ7DMfNMjyOp/flLTCrtRylLiK4wT4pSq6O8rOXZ2eXdZYJPEYe+ifomiv+Igg==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' dependencies: - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - react-router: 7.14.2(react-dom@19.2.5)(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-router: 7.15.1(react-dom@19.2.6)(react@19.2.6) dev: false - /react-router@7.14.2(react-dom@19.2.5)(react@19.2.5): - resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} + /react-router@7.15.1(react-dom@19.2.6)(react@19.2.6): + resolution: {integrity: sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4846,13 +4653,13 @@ packages: optional: true dependencies: cookie: 1.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) set-cookie-parser: 2.7.2 dev: false - /react@19.2.5: - resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + /react@19.2.6: + resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} /readable-stream@1.0.34: @@ -4944,17 +4751,6 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@2.0.0-next.6: resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} engines: {node: '>= 0.4'} @@ -4968,8 +4764,8 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /rettime@0.11.8: - resolution: {integrity: sha512-0fERGXktJTyJ+h8fBEiPxHPEFOu0h15JY7JtwrOVqR5K+vb99ho6IyOo7ekLS3h4sJCzIDy4VWKIbZUfe9njmg==} + /rettime@0.11.11: + resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} dev: true /reusify@1.1.0: @@ -4986,29 +4782,29 @@ packages: package-json-from-dist: 1.0.1 dev: true - /rolldown@1.0.0-rc.17: - resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + /rolldown@1.0.1: + resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true dependencies: - '@oxc-project/types': 0.127.0 - '@rolldown/pluginutils': 1.0.0-rc.17 + '@oxc-project/types': 0.130.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-x64': 1.0.0-rc.17 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + '@rolldown/binding-android-arm64': 1.0.1 + '@rolldown/binding-darwin-arm64': 1.0.1 + '@rolldown/binding-darwin-x64': 1.0.1 + '@rolldown/binding-freebsd-x64': 1.0.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 + '@rolldown/binding-linux-arm64-gnu': 1.0.1 + '@rolldown/binding-linux-arm64-musl': 1.0.1 + '@rolldown/binding-linux-ppc64-gnu': 1.0.1 + '@rolldown/binding-linux-s390x-gnu': 1.0.1 + '@rolldown/binding-linux-x64-gnu': 1.0.1 + '@rolldown/binding-linux-x64-musl': 1.0.1 + '@rolldown/binding-openharmony-arm64': 1.0.1 + '@rolldown/binding-wasm32-wasi': 1.0.1 + '@rolldown/binding-win32-arm64-msvc': 1.0.1 + '@rolldown/binding-win32-x64-msvc': 1.0.1 dev: true /run-parallel@1.2.0: @@ -5222,15 +5018,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -5256,11 +5043,6 @@ packages: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} dev: true - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5371,7 +5153,7 @@ packages: engines: {node: '>=8'} dev: true - /styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5): + /styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.6): resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5386,10 +5168,10 @@ packages: dependencies: '@babel/core': 7.29.0 client-only: 0.0.1 - react: 19.2.5 + react: 19.2.6 dev: false - /styled-jsx@5.1.7(@babel/core@7.29.0)(react@19.2.5): + /styled-jsx@5.1.7(@babel/core@7.29.0)(react@19.2.6): resolution: {integrity: sha512-HPLmEIYprxCeWDMLYiaaAhsV3yGfIlCqzuVOybE6fjF3SUJmH67nCoMDO+nAvHNHo46OfvpCNu4Rcue82dMNFg==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5404,7 +5186,7 @@ packages: dependencies: '@babel/core': 7.29.0 client-only: 0.0.1 - react: 19.2.5 + react: 19.2.6 dev: false /supports-color@7.2.0: @@ -5414,13 +5196,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -5517,15 +5292,6 @@ packages: typescript: 6.0.3 dev: true - /ts-declaration-location@1.0.7(typescript@6.0.3): - resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} - peerDependencies: - typescript: '>=4.0.0' - dependencies: - picomatch: 4.0.4 - typescript: 6.0.3 - dev: true - /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: @@ -5538,13 +5304,12 @@ packages: /tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - /tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + /tsx@4.22.0: + resolution: {integrity: sha512-8ccZMPD69s1AbKXx0C5ddTNZfNjwV04iIKgjZmKfKxMynEtSYcK0Lh7iQFh53fI5Yu4pb9usgAiqyPmEONaALg==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.27.7 - get-tsconfig: 4.14.0 + esbuild: 0.28.0 optionalDependencies: fsevents: 2.3.3 dev: true @@ -5608,12 +5373,6 @@ packages: reflect.getprototypeof: 1.0.10 dev: true - /typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -5633,8 +5392,8 @@ packages: which-boxed-primitive: 1.1.1 dev: true - /undici-types@7.19.2: - resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + /undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} dev: true /undici@7.25.0: @@ -5647,9 +5406,58 @@ packages: engines: {node: '>=20'} dev: true - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + /unplugin-dts@1.0.0(typescript@6.0.3)(vite@8.0.13): + resolution: {integrity: sha512-qz+U1lCscwq+t8Mkaxy5Esa7IQ5wWV18b4mnioOXSdnPaNiJ0+qgE3I+KL6UkXYZWxxGo2qdGone8LEQ52Sfkw==} + peerDependencies: + '@microsoft/api-extractor': '>=7' + '@rspack/core': ^1 + '@vue/language-core': ~3.1.5 + esbuild: '*' + rolldown: '*' + rollup: '>=3' + typescript: '>=4' + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@rspack/core': + optional: true + '@vue/language-core': + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + '@rollup/pluginutils': 5.3.0 + '@volar/typescript': 2.4.28 + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.1.2 + magic-string: 0.30.21 + typescript: 6.0.3 + unplugin: 2.3.11 + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + transitivePeerDependencies: + - supports-color + dev: true + + /unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.16.0 + picomatch: 4.0.4 + webpack-virtual-modules: 0.6.2 dev: true /until-async@3.0.2: @@ -5681,39 +5489,39 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite-plugin-dts@4.5.4(@types/node@25.6.0)(typescript@6.0.3)(vite@8.0.10): - resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} + /vite-plugin-dts@5.0.0(typescript@6.0.3)(vite@8.0.13): + resolution: {integrity: sha512-VLNAUttBq7pLxxL/m/ztjd5zj5yiviiC7ijfPFVLK5c45FLcibvieBsdjSka3a4ag1qdrAF9K3OysH4/lW+rPQ==} peerDependencies: - typescript: '*' - vite: '*' + '@microsoft/api-extractor': '>=7' + rollup: '>=3' + vite: '>=3' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + rollup: + optional: true vite: optional: true dependencies: - '@microsoft/api-extractor': 7.58.7(@types/node@25.6.0) - '@rollup/pluginutils': 5.3.0 - '@volar/typescript': 2.4.28 - '@vue/language-core': 2.2.0(typescript@6.0.3) - compare-versions: 6.1.1 - debug: 4.4.3 - kolorist: 1.8.0 - local-pkg: 1.1.2 - magic-string: 0.30.21 - typescript: 6.0.3 - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + unplugin-dts: 1.0.0(typescript@6.0.3)(vite@8.0.13) + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) transitivePeerDependencies: - - '@types/node' - - rollup + - '@rspack/core' + - '@vue/language-core' + - esbuild + - rolldown - supports-color + - typescript + - webpack dev: true - /vite@8.0.10(@types/node@25.6.0)(tsx@4.21.0): - resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} + /vite@8.0.13(@types/node@25.8.0)(tsx@4.22.0): + resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.0 + '@vitejs/devtools': ^0.1.18 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -5750,31 +5558,31 @@ packages: yaml: optional: true dependencies: - '@types/node': 25.6.0 + '@types/node': 25.8.0 lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.12 - rolldown: 1.0.0-rc.17 + postcss: 8.5.14 + rolldown: 1.0.1 tinyglobby: 0.2.16 - tsx: 4.21.0 + tsx: 4.22.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@4.1.5(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(vite@8.0.10): - resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + /vitest@4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13): + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.5 - '@vitest/browser-preview': 4.1.5 - '@vitest/browser-webdriverio': 4.1.5 - '@vitest/coverage-istanbul': 4.1.5 - '@vitest/coverage-v8': 4.1.5 - '@vitest/ui': 4.1.5 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5802,15 +5610,15 @@ packages: jsdom: optional: true dependencies: - '@types/node': 25.6.0 - '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) - '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) - '@vitest/pretty-format': 4.1.5 - '@vitest/runner': 4.1.5 - '@vitest/snapshot': 4.1.5 - '@vitest/spy': 4.1.5 - '@vitest/utils': 4.1.5 + '@types/node': 25.8.0 + '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -5822,26 +5630,26 @@ packages: tinyexec: 1.1.1 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - msw dev: true - /vitest@4.1.5(@vitest/coverage-v8@4.1.5)(jsdom@29.0.2)(msw@2.13.6)(vite@8.0.10): - resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + /vitest@4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13): + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.5 - '@vitest/browser-preview': 4.1.5 - '@vitest/browser-webdriverio': 4.1.5 - '@vitest/coverage-istanbul': 4.1.5 - '@vitest/coverage-v8': 4.1.5 - '@vitest/ui': 4.1.5 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5869,17 +5677,17 @@ packages: jsdom: optional: true dependencies: - '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) - '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) - '@vitest/pretty-format': 4.1.5 - '@vitest/runner': 4.1.5 - '@vitest/snapshot': 4.1.5 - '@vitest/spy': 4.1.5 - '@vitest/utils': 4.1.5 + '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 es-module-lexer: 2.1.0 expect-type: 1.3.0 - jsdom: 29.0.2 + jsdom: 29.1.1 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -5889,26 +5697,26 @@ packages: tinyexec: 1.1.1 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - msw dev: true - /vitest@4.1.5(@vitest/coverage-v8@4.1.5)(vite@8.0.10): - resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + /vitest@4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13): + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.5 - '@vitest/browser-preview': 4.1.5 - '@vitest/browser-webdriverio': 4.1.5 - '@vitest/coverage-istanbul': 4.1.5 - '@vitest/coverage-v8': 4.1.5 - '@vitest/ui': 4.1.5 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5936,14 +5744,14 @@ packages: jsdom: optional: true dependencies: - '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) - '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(msw@2.13.6)(vite@8.0.10) - '@vitest/pretty-format': 4.1.5 - '@vitest/runner': 4.1.5 - '@vitest/snapshot': 4.1.5 - '@vitest/spy': 4.1.5 - '@vitest/utils': 4.1.5 + '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -5955,7 +5763,7 @@ packages: tinyexec: 1.1.1 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.10(@types/node@25.6.0)(tsx@4.21.0) + vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - msw @@ -5981,6 +5789,10 @@ packages: engines: {node: '>=20'} dev: true + /webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + dev: true + /whatwg-mimetype@5.0.0: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} From 65ab562587b30a928dafef5c9cf3663adce96962 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 May 2026 19:34:26 +0000 Subject: [PATCH 482/565] [skip ci] Update to version 7.27.8 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 9c9f87a5a..6fc173c2d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.7", + "version": "7.27.8", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index df3ca6525..acde39320 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.7'; +export default '7.27.8'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index c3d330075..e04f9f773 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.7", + "version": "7.27.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index df3ca6525..acde39320 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.7'; +export default '7.27.8'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f45080706..2430cc5da 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.7", + "version": "7.27.8", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 5ddb8743ac44ed1233c544ce74ca1357c548644b Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 15 May 2026 19:34:27 +0000 Subject: [PATCH 483/565] [skip ci] Generate changelog to version 7.27.8 --- CHANGELOG.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e68c143ec..6efe95224 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.7 +## 7.27.8 + +- [c67eabfb](https://github.com/AxaFrance/oidc-client/commit/c67eabfbe2bf437b490f37c63d58d79bdf82c4de) - Update all dependencies to latest versions (#1665) (release), 2026-05-15 by *Copilot* + + +## v7.27.7 @@ -321,7 +326,3 @@ - [95c814dd](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by *Guillaume Chervet* -## v7.22.12 - - - From 4e9c33f9c46d2a17a5c29103707dd743a5acc5ba Mon Sep 17 00:00:00 2001 From: Andreas Adam Date: Wed, 10 Jun 2026 11:20:01 +0200 Subject: [PATCH 484/565] fix(oidc): prevent storage poisoning on undefined setters (alpha) (#1674) (release) Bracket-notation assignment to `Storage` coerces `undefined`/`null` to the literal strings `"undefined"`/`"null"`, which then poison the next `JSON.parse` read and throw `SyntaxError: "undefined" is not valid JSON`. This is the same bug reported in #871, #1257, #1274. PR #1258 added a falsy-string guard to `getLoginParams`, but `"undefined"` is a truthy string so the guard misses the poisoning case, and the setter side was never addressed. This change: - Guards every setter in `initSession.ts` (and the SW fallback path in `initWorker.ts`) so `undefined`/`null` deletes the key instead of writing a poisoned string. - Adds a `parseJsonOrNull` helper used by all readers, providing defence-in-depth against pre-existing poisoned values written by older versions of the library. - Adds regression tests covering poisoning via both new writes and pre-existing poisoned storage entries. Affected setters: `setLoginParams`, `setTokens`, `setNonceAsync`, `setStateAsync`, `setCodeVerifierAsync`, `setSessionStateAsync`, `setDemonstratingProofOfPossession{Jwk,Nonce}`. Affected readers (defensive parse): `initAsync`, `getTokens`, `getLoginParams`, `getDemonstratingProofOfPossessionJwkAsync`. --- packages/oidc-client/src/initSession.spec.ts | 65 ++++++++++++++ packages/oidc-client/src/initSession.ts | 94 +++++++++++++++----- packages/oidc-client/src/initWorker.ts | 22 ++++- 3 files changed, 156 insertions(+), 25 deletions(-) diff --git a/packages/oidc-client/src/initSession.spec.ts b/packages/oidc-client/src/initSession.spec.ts index b1a058ad7..b4e5db0f2 100644 --- a/packages/oidc-client/src/initSession.spec.ts +++ b/packages/oidc-client/src/initSession.spec.ts @@ -165,6 +165,71 @@ describe('initSession', () => { }); }); + describe('undefined/null guards (regression: #871 / #1257 / #1274)', () => { + let storage: Storage; + let session: ReturnType; + + beforeEach(() => { + storage = makeStorage(); + session = initSession(configName, storage); + }); + + it('setLoginParams(undefined) does not poison storage with the literal "undefined"', () => { + session.setLoginParams(undefined); + expect(storage[`oidc.login.${configName}`]).toBeUndefined(); + expect(() => session.getLoginParams()).not.toThrow(); + expect(session.getLoginParams()).toBeNull(); + }); + + it('setLoginParams(null) clears storage rather than writing "null"', () => { + session.setLoginParams({ callbackPath: '/cb', extras: null, scope: 'openid' }); + session.setLoginParams(null); + expect(storage[`oidc.login.${configName}`]).toBeUndefined(); + expect(session.getLoginParams()).toBeNull(); + }); + + it('getLoginParams tolerates a pre-existing poisoned "undefined" value', () => { + // simulate storage poisoned by an older version of the library + storage[`oidc.login.${configName}`] = 'undefined'; + expect(() => session.getLoginParams()).not.toThrow(); + expect(session.getLoginParams()).toBeNull(); + }); + + it('getLoginParams tolerates a pre-existing poisoned "null" value', () => { + storage[`oidc.login.${configName}`] = 'null'; + expect(() => session.getLoginParams()).not.toThrow(); + expect(session.getLoginParams()).toBeNull(); + }); + + it('initAsync tolerates a pre-existing poisoned "undefined" tokens entry', async () => { + storage[`oidc.${configName}`] = 'undefined'; + await expect(session.initAsync()).resolves.toEqual({ tokens: null, status: null }); + }); + + it('getTokens returns null for a pre-existing poisoned tokens entry', () => { + storage[`oidc.${configName}`] = 'undefined'; + expect(() => session.getTokens()).not.toThrow(); + expect(session.getTokens()).toBeNull(); + }); + + it('setNonceAsync({nonce: undefined}) does not poison storage', async () => { + await session.setNonceAsync({ nonce: undefined as unknown as string }); + expect(storage[`oidc.nonce.${configName}`]).toBeUndefined(); + const { nonce } = await session.getNonceAsync(); + expect(nonce).toBeUndefined(); + }); + + it('setStateAsync(undefined) does not poison storage', async () => { + await session.setStateAsync(undefined as unknown as string); + expect(storage[`oidc.state.${configName}`]).toBeUndefined(); + }); + + it('setCodeVerifierAsync(undefined) does not poison storage', async () => { + await session.setCodeVerifierAsync(undefined); + expect(storage[`oidc.code_verifier.${configName}`]).toBeUndefined(); + }); + }); + describe('two-tab isolation', () => { it('two sessions sharing tokenStorage but with independent loginStateStorages do not overwrite each other', async () => { const sharedTokenStorage = makeStorage(); diff --git a/packages/oidc-client/src/initSession.ts b/packages/oidc-client/src/initSession.ts index 6a6aa9376..e8438d6cd 100644 --- a/packages/oidc-client/src/initSession.ts +++ b/packages/oidc-client/src/initSession.ts @@ -1,3 +1,39 @@ +// Guarded writes to storage. Assigning `undefined` or `null` through bracket +// notation (or `setItem`) coerces the value to the literal strings +// `"undefined"` / `"null"`, which then poison the next `JSON.parse` read. +// See https://github.com/AxaFrance/oidc-client/issues/1257 (and #871, #1274). +const writeJson = (storage: Storage, key: string, value: unknown) => { + if (value === undefined || value === null) { + delete storage[key]; + return; + } + storage[key] = JSON.stringify(value); +}; + +const writeRaw = (storage: Storage, key: string, value: string | null | undefined) => { + if (value === undefined || value === null) { + delete storage[key]; + return; + } + storage[key] = value; +}; + +const parseJsonOrNull = (raw: unknown): T | null => { + if (typeof raw !== 'string') { + return null; + } + // Defence in depth against pre-existing poisoned values written by older + // versions of this library before the setter guards above were in place. + if (raw === 'undefined' || raw === 'null' || raw === '') { + return null; + } + try { + return JSON.parse(raw) as T; + } catch { + return null; + } +}; + export const initSession = ( configurationName, storage = sessionStorage, @@ -6,7 +42,7 @@ export const initSession = ( const loginStorage = loginStateStorage ?? storage; const clearAsync = status => { - storage[`oidc.${configurationName}`] = JSON.stringify({ tokens: null, status }); + writeJson(storage, `oidc.${configurationName}`, { tokens: null, status }); delete storage[`oidc.${configurationName}.userInfo`]; if (loginStateStorage && loginStateStorage !== storage) { delete loginStorage[`oidc.login.${configurationName}`]; @@ -18,20 +54,23 @@ export const initSession = ( }; const initAsync = async () => { - if (!storage[`oidc.${configurationName}`]) { - storage[`oidc.${configurationName}`] = JSON.stringify({ tokens: null, status: null }); + const existing = parseJsonOrNull(storage[`oidc.${configurationName}`]) as { + tokens: any; + status: any; + } | null; + if (!existing) { + writeJson(storage, `oidc.${configurationName}`, { tokens: null, status: null }); return { tokens: null, status: null }; } - const data = JSON.parse(storage[`oidc.${configurationName}`]); - return Promise.resolve({ tokens: data.tokens, status: data.status }); + return Promise.resolve({ tokens: existing.tokens, status: existing.status }); }; const setTokens = tokens => { - storage[`oidc.${configurationName}`] = JSON.stringify({ tokens }); + writeJson(storage, `oidc.${configurationName}`, { tokens }); }; const setSessionStateAsync = async sessionState => { - storage[`oidc.session_state.${configurationName}`] = sessionState; + writeRaw(storage, `oidc.session_state.${configurationName}`, sessionState); }; const getSessionStateAsync = async () => { @@ -39,15 +78,15 @@ export const initSession = ( }; const setNonceAsync = nonce => { - loginStorage[`oidc.nonce.${configurationName}`] = nonce.nonce; + writeRaw(loginStorage, `oidc.nonce.${configurationName}`, nonce?.nonce); }; const setDemonstratingProofOfPossessionJwkAsync = (jwk: JsonWebKey) => { - storage[`oidc.jwk.${configurationName}`] = JSON.stringify(jwk); + writeJson(storage, `oidc.jwk.${configurationName}`, jwk); }; const getDemonstratingProofOfPossessionJwkAsync = () => { - return JSON.parse(storage[`oidc.jwk.${configurationName}`]); + return parseJsonOrNull(storage[`oidc.jwk.${configurationName}`]); }; const getNonceAsync = async () => { @@ -56,7 +95,7 @@ export const initSession = ( }; const setDemonstratingProofOfPossessionNonce = async (dpopNonce: string) => { - storage[`oidc.dpop_nonce.${configurationName}`] = dpopNonce; + writeRaw(storage, `oidc.dpop_nonce.${configurationName}`, dpopNonce); }; const getDemonstratingProofOfPossessionNonce = (): string => { @@ -64,31 +103,38 @@ export const initSession = ( }; const getTokens = () => { - if (!storage[`oidc.${configurationName}`]) { + const parsed = parseJsonOrNull(storage[`oidc.${configurationName}`]) as { + tokens: any; + } | null; + if (!parsed) { return null; } - return JSON.stringify({ tokens: JSON.parse(storage[`oidc.${configurationName}`]).tokens }); + return JSON.stringify({ tokens: parsed.tokens }); }; const getLoginParamsCache = {}; const setLoginParams = data => { + if (data === undefined || data === null) { + delete getLoginParamsCache[configurationName]; + delete loginStorage[`oidc.login.${configurationName}`]; + return; + } getLoginParamsCache[configurationName] = data; - loginStorage[`oidc.login.${configurationName}`] = JSON.stringify(data); + writeJson(loginStorage, `oidc.login.${configurationName}`, data); }; const getLoginParams = () => { - const dataString = loginStorage[`oidc.login.${configurationName}`]; - - if (!dataString) { + if (getLoginParamsCache[configurationName]) { + return getLoginParamsCache[configurationName]; + } + const parsed = parseJsonOrNull(loginStorage[`oidc.login.${configurationName}`]); + if (parsed === null) { console.warn( `storage[oidc.login.${configurationName}] is empty, you should have an bad OIDC or code configuration somewhere.`, ); return null; } - - if (!getLoginParamsCache[configurationName]) { - getLoginParamsCache[configurationName] = JSON.parse(dataString); - } - return getLoginParamsCache[configurationName]; + getLoginParamsCache[configurationName] = parsed; + return parsed; }; const getStateAsync = async () => { @@ -96,7 +142,7 @@ export const initSession = ( }; const setStateAsync = async (state: string) => { - loginStorage[`oidc.state.${configurationName}`] = state; + writeRaw(loginStorage, `oidc.state.${configurationName}`, state); }; const getCodeVerifierAsync = async () => { @@ -104,7 +150,7 @@ export const initSession = ( }; const setCodeVerifierAsync = async codeVerifier => { - loginStorage[`oidc.code_verifier.${configurationName}`] = codeVerifier; + writeRaw(loginStorage, `oidc.code_verifier.${configurationName}`, codeVerifier); }; return { diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index e10f67efd..68961b85b 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -541,14 +541,34 @@ export const initWorkerAsync = async ( const getLoginParamsCache = {}; const setLoginParams = data => { + if (data === undefined || data === null) { + delete getLoginParamsCache[configurationName]; + delete localStorage[`oidc.login.${configurationName}`]; + return; + } getLoginParamsCache[configurationName] = data; localStorage[`oidc.login.${configurationName}`] = JSON.stringify(data); }; const getLoginParams = () => { + if (getLoginParamsCache[configurationName]) { + return getLoginParamsCache[configurationName]; + } const dataString = localStorage[`oidc.login.${configurationName}`]; - if (!getLoginParamsCache[configurationName]) { + // Guard against the literal strings "undefined" / "null" written by older + // builds of this library through bracket-notation assignment. + if ( + typeof dataString !== 'string' || + dataString === '' || + dataString === 'undefined' || + dataString === 'null' + ) { + return null; + } + try { getLoginParamsCache[configurationName] = JSON.parse(dataString); + } catch { + return null; } return getLoginParamsCache[configurationName]; }; From 31d441d3b37d92fd4f8daaa501b4c55ae1c58a0f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 12 Jun 2026 20:30:27 +0200 Subject: [PATCH 485/565] chore: add copilot instruction --- .github/copilot-instructions.md | 101 ++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..3df101eae --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,101 @@ +# GitHub Copilot – Instructions for this project + +## 🧰 Tech stack + +This project is a **pnpm monorepo** made up of the following packages: + +- `packages/oidc-client` — vanilla OIDC client +- `packages/react-oidc` — React bindings +- `packages/oidc-client-service-worker` — OIDC service worker + +Main language: **TypeScript**. Package manager: **pnpm**. + +--- + +## ✅ Mandatory steps before stopping + +> **You must never stop before all the following steps have completed successfully.** + +### 1. Auto-fix lint issues + +```bash +pnpm lint-fix +``` + +### 2. Verify no lint errors remain + +```bash +pnpm lint +``` + +> If errors remain after lint-fix, **you must fix them manually** in the code, then re-run `pnpm lint` until zero errors are reported. + +### 3. Run all unit tests + +```bash +pnpm test:ci +``` + +> If tests fail, **you must fix the code or the tests** depending on the root cause, then re-run until all tests are green. + +### 4. Final build (optional but recommended) + +```bash +pnpm build +``` + +--- + +## 🧼 Clean Code principles to follow + +### Naming +- Variable, function, class and file names must be **clear, descriptive and in English**. +- Avoid obscure abbreviations (`tmp`, `cb`, `d`, `val`…) except established conventions (`e` for event, `i` for index). +- Booleans must start with `is`, `has`, `can`, `should`. + +### Functions +- One function = **one single responsibility**. +- No more than **3–4 parameters** per function. Use an object if needed. +- Prefer **pure functions** and **immutability**. +- Avoid undocumented side effects. + +### TypeScript +- **Explicit typing** is mandatory for function parameters and return values. +- No `any` unless absolutely necessary (and with an explanatory comment). +- Use TypeScript **utility types** (`Partial`, `Readonly`, `Pick`, `Omit`…) where appropriate. +- Prefer `interface` for public contracts and `type` for unions/intersections. + +### Code structure +- Respect **separation of concerns**: business logic separated from display logic. +- No dead code left commented out in files. +- `TODO` comments must include clear context (e.g. `// TODO: [#123] Refactor once API is stable`). + +### Tests +- Every new function or behaviour must be **covered by a unit test**. +- Tests must be **readable and expressive**: `describe` / `it` with natural English sentences. +- Do not duplicate tested logic inside assertions. +- Use mocks/stubs sparingly and always clean them up (`afterEach`, `vi.restoreAllMocks()`). + +### Imports +- Imports must be **ordered**: third-party libraries → internal packages → local files. +- Use **named imports** rather than default imports whenever possible. +- No unused imports. + +### Comments +- Code must be **self-documenting**: if you need a comment to explain **what** the code does, refactor the code instead. +- Comments explain the **why**, not the **what**. +- Public functions and types must be documented with **JSDoc**. + +--- + +## 🔁 Expected workflow + +``` +1. Write or modify the code +2. pnpm lint-fix → automatic fixes +3. pnpm lint → verification (fix manually if errors remain) +4. pnpm test:ci → all tests must pass (fix if failures) +5. pnpm build → verify the build does not break +``` + +> 🚫 **Never submit or stop if any step fails.** From 93629d928b045116487860230fc2cd7875930be4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 13 Jun 2026 18:46:28 +0200 Subject: [PATCH 486/565] fix: exclude navigate-mode requests from destination bypass (#1683) (#1687) (release) Navigation requests (mode='navigate') with destination='document' were incorrectly bypassed by the early-return filter added in 7.27.4. This caused 401 errors when opening protected URLs in new tabs, since the service worker no longer injected the access token. Extract the bypass condition into a testable shouldBypassDestination utility that skips only sub-resource loads (images, fonts, scripts, etc.) while allowing navigate requests through to the token injection logic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../src/OidcServiceWorker.ts | 4 +-- .../__tests__/shouldBypassDestination.spec.ts | 31 +++++++++++++++++++ .../src/utils/index.ts | 1 + .../src/utils/shouldBypassDestination.ts | 10 ++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/utils/__tests__/shouldBypassDestination.spec.ts create mode 100644 packages/oidc-client-service-worker/src/utils/shouldBypassDestination.ts diff --git a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts index b1ba774a6..7a5baf2ed 100644 --- a/packages/oidc-client-service-worker/src/OidcServiceWorker.ts +++ b/packages/oidc-client-service-worker/src/OidcServiceWorker.ts @@ -11,6 +11,7 @@ import { hideTokens, normalizeUrl, serializeHeaders, + shouldBypassDestination, sleep, waitForValidTokens, } from './utils'; @@ -109,8 +110,7 @@ const handleFetch = (event: FetchEvent): void => { /** * Exit early for requests that do not need to have an auth token attached. */ - const bypassedDestinations = ['image', 'font', 'media', 'document', 'iframe', 'script']; - if (bypassedDestinations.includes(event.request.destination)) { + if (shouldBypassDestination(event.request.destination, event.request.mode)) { return; // Don't call event.respondWith() - let browser handle naturally } diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/shouldBypassDestination.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/shouldBypassDestination.spec.ts new file mode 100644 index 000000000..267bf2bad --- /dev/null +++ b/packages/oidc-client-service-worker/src/utils/__tests__/shouldBypassDestination.spec.ts @@ -0,0 +1,31 @@ +import { describe, expect, it } from 'vitest'; + +import { shouldBypassDestination } from '../shouldBypassDestination'; + +describe('shouldBypassDestination', () => { + it.each(['image', 'font', 'media', 'document', 'iframe', 'script'])( + 'should bypass %s destination for non-navigate requests', + destination => { + expect(shouldBypassDestination(destination, 'cors')).toBe(true); + expect(shouldBypassDestination(destination, 'same-origin')).toBe(true); + expect(shouldBypassDestination(destination, 'no-cors')).toBe(true); + }, + ); + + it.each(['image', 'font', 'media', 'document', 'iframe', 'script'])( + 'should NOT bypass %s destination for navigate requests', + destination => { + expect(shouldBypassDestination(destination, 'navigate')).toBe(false); + }, + ); + + it('should not bypass non-listed destinations', () => { + expect(shouldBypassDestination('', 'cors')).toBe(false); + expect(shouldBypassDestination('worker', 'same-origin')).toBe(false); + expect(shouldBypassDestination('audio', 'no-cors')).toBe(false); + }); + + it('should not bypass empty destination with navigate mode', () => { + expect(shouldBypassDestination('', 'navigate')).toBe(false); + }); +}); diff --git a/packages/oidc-client-service-worker/src/utils/index.ts b/packages/oidc-client-service-worker/src/utils/index.ts index 2abe27aec..a70369373 100644 --- a/packages/oidc-client-service-worker/src/utils/index.ts +++ b/packages/oidc-client-service-worker/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './domains'; export * from './normalizeUrl'; export * from './serializeHeaders'; +export * from './shouldBypassDestination'; export * from './sleep'; export * from './strings'; export * from './tokens'; diff --git a/packages/oidc-client-service-worker/src/utils/shouldBypassDestination.ts b/packages/oidc-client-service-worker/src/utils/shouldBypassDestination.ts new file mode 100644 index 000000000..84007c140 --- /dev/null +++ b/packages/oidc-client-service-worker/src/utils/shouldBypassDestination.ts @@ -0,0 +1,10 @@ +const bypassedDestinations = ['image', 'font', 'media', 'document', 'iframe', 'script']; + +/** + * Determines whether a fetch event should be bypassed (not intercepted by the service worker). + * Navigation requests (mode === 'navigate') are never bypassed, even when their destination + * is in the bypassed list, so that access tokens can be injected into new-tab navigations. + */ +export const shouldBypassDestination = (destination: string, mode: string): boolean => { + return bypassedDestinations.includes(destination) && mode !== 'navigate'; +}; From 699bf3b072b94ab6f6fb51a2b056af1d03b4daa7 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 13 Jun 2026 17:24:40 +0000 Subject: [PATCH 487/565] [skip ci] Update to version 7.27.11 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 6fc173c2d..74b584773 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.8", + "version": "7.27.11", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index acde39320..b33a1d760 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.8'; +export default '7.27.11'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index e04f9f773..421400c8b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.8", + "version": "7.27.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index acde39320..b33a1d760 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.8'; +export default '7.27.11'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 2430cc5da..6dd07cd20 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.8", + "version": "7.27.11", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e68eb6712fa21f90df5604f0ab8d441b5b236ab2 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 13 Jun 2026 17:24:42 +0000 Subject: [PATCH 488/565] [skip ci] Generate changelog to version 7.27.11 --- CHANGELOG.md | 205 +++++++++++++++++++++++++-------------------------- 1 file changed, 102 insertions(+), 103 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6efe95224..6fd58fa3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,23 @@ # Changelog -## 7.27.8 +## 7.27.11 -- [c67eabfb](https://github.com/AxaFrance/oidc-client/commit/c67eabfbe2bf437b490f37c63d58d79bdf82c4de) - Update all dependencies to latest versions (#1665) (release), 2026-05-15 by *Copilot* + + +## v7.27.10 + +- [93629d9](https://github.com/AxaFrance/oidc-client/commit/93629d928b045116487860230fc2cd7875930be4) - fix: exclude navigate-mode requests from destination bypass (#1683) (#1687) (release), 2026-06-13 by *Guillaume Chervet* +- [31d441d](https://github.com/AxaFrance/oidc-client/commit/31d441d3b37d92fd4f8daaa501b4c55ae1c58a0f) - chore: add copilot instruction, 2026-06-12 by *Guillaume Chervet* + + +## v7.27.9 + +- [4e9c33f](https://github.com/AxaFrance/oidc-client/commit/4e9c33f9c46d2a17a5c29103707dd743a5acc5ba) - fix(oidc): prevent storage poisoning on undefined setters (alpha) (#1674) (release), 2026-06-10 by *Andreas Adam* + + +## v7.27.8 + +- [c67eabf](https://github.com/AxaFrance/oidc-client/commit/c67eabfbe2bf437b490f37c63d58d79bdf82c4de) - Update all dependencies to latest versions (#1665) (release), 2026-05-15 by *Copilot* ## v7.27.7 @@ -15,61 +30,61 @@ ## v7.27.5 -- [debafc81](https://github.com/AxaFrance/oidc-client/commit/debafc81b9f6d24f2c2bfc81e160b1cc595cacc0) - Bypass non-OIDC requests in the service worker (#1663) (release), 2026-05-14 by *Copilot* +- [debafc8](https://github.com/AxaFrance/oidc-client/commit/debafc81b9f6d24f2c2bfc81e160b1cc595cacc0) - Bypass non-OIDC requests in the service worker (#1663) (release), 2026-05-14 by *Copilot* ## v7.27.4 -- [9d94b3d6](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* -- [78a0bfa6](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* -- [a18f8101](https://github.com/AxaFrance/oidc-client/commit/a18f81018dc8cd24620028b05912a46bb1f2ff72) - docs: remove twitter badge, add npm weekly downloads badges to READMEs (#1657), 2026-04-24 by *Copilot* -- [06918197](https://github.com/AxaFrance/oidc-client/commit/06918197a2ba6d549e2927cdf60a7019deb0fea7) - Remove sonar badges from README.md (#1656), 2026-04-24 by *Copilot* +- [9d94b3d](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* +- [78a0bfa](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* +- [a18f810](https://github.com/AxaFrance/oidc-client/commit/a18f81018dc8cd24620028b05912a46bb1f2ff72) - docs: remove twitter badge, add npm weekly downloads badges to READMEs (#1657), 2026-04-24 by *Copilot* +- [0691819](https://github.com/AxaFrance/oidc-client/commit/06918197a2ba6d549e2927cdf60a7019deb0fea7) - Remove sonar badges from README.md (#1656), 2026-04-24 by *Copilot* ## v7.27.3 -- [3ae9f19f](https://github.com/AxaFrance/oidc-client/commit/3ae9f19f7ff304a85de103424865ebc63675d866) - fix: cache service worker registration to prevent repeated register calls (#1655) (release), 2026-04-21 by *Copilot* +- [3ae9f19](https://github.com/AxaFrance/oidc-client/commit/3ae9f19f7ff304a85de103424865ebc63675d866) - fix: cache service worker registration to prevent repeated register calls (#1655) (release), 2026-04-21 by *Copilot* ## v7.27.2 -- [61b2ee62](https://github.com/AxaFrance/oidc-client/commit/61b2ee62093098e30cb15c9b2bb7102283876a3c) - fix(service-worker): add timeout to token renewal wait loop to prevent indefinite fetch blocking (#1654) (release), 2026-04-20 by *Copilot* +- [61b2ee6](https://github.com/AxaFrance/oidc-client/commit/61b2ee62093098e30cb15c9b2bb7102283876a3c) - fix(service-worker): add timeout to token renewal wait loop to prevent indefinite fetch blocking (#1654) (release), 2026-04-20 by *Copilot* ## v7.27.1 -- [362cd3ad](https://github.com/AxaFrance/oidc-client/commit/362cd3adfecb4056558d9f9b503f503c091b0b7a) - fix(oid-client): service worker update (#1649) (release), 2026-03-18 by *Guillaume Chervet* +- [362cd3a](https://github.com/AxaFrance/oidc-client/commit/362cd3adfecb4056558d9f9b503f503c091b0b7a) - fix(oid-client): service worker update (#1649) (release), 2026-03-18 by *Guillaume Chervet* ## v7.27.0 -- [48d3ad02](https://github.com/AxaFrance/oidc-client/commit/48d3ad028d7b8ccbd6504bb2682f72e0b079643c) - feat(oidc-client): Add a 'login_state_storage' option to allow storing the auth flow state separately to tokens (#1646) (release), 2026-03-11 by *Alex O'Callaghan* +- [48d3ad0](https://github.com/AxaFrance/oidc-client/commit/48d3ad028d7b8ccbd6504bb2682f72e0b079643c) - feat(oidc-client): Add a 'login_state_storage' option to allow storing the auth flow state separately to tokens (#1646) (release), 2026-03-11 by *Alex O'Callaghan* ## v7.26.8 -- [7c5dd661](https://github.com/AxaFrance/oidc-client/commit/7c5dd6612ae7ef5c492845eeae65dfdd23a75842) - fix(oidc): infinite service worker reload loop on version change (#1647) (release), 2026-03-10 by *Copilot* +- [7c5dd66](https://github.com/AxaFrance/oidc-client/commit/7c5dd6612ae7ef5c492845eeae65dfdd23a75842) - fix(oidc): infinite service worker reload loop on version change (#1647) (release), 2026-03-10 by *Copilot* ## v7.26.7 -- [46bd6a89](https://github.com/AxaFrance/oidc-client/commit/46bd6a89b803ca9c2c9aedf0a0fa1d73d229b995) - docs: clarify that allowMultiTabLogin requires OIDC fetch wrapper for API calls (#1643) (release), 2026-02-21 by *Copilot* -- [f35ae017](https://github.com/AxaFrance/oidc-client/commit/f35ae0174664ea8abcc6c79b608958d0b2164636) - Fix `useOidcUser` stuck in Loading state after reloadOidcUser() (#1642), 2026-02-21 by *Copilot* +- [46bd6a8](https://github.com/AxaFrance/oidc-client/commit/46bd6a89b803ca9c2c9aedf0a0fa1d73d229b995) - docs: clarify that allowMultiTabLogin requires OIDC fetch wrapper for API calls (#1643) (release), 2026-02-21 by *Copilot* +- [f35ae01](https://github.com/AxaFrance/oidc-client/commit/f35ae0174664ea8abcc6c79b608958d0b2164636) - Fix `useOidcUser` stuck in Loading state after reloadOidcUser() (#1642), 2026-02-21 by *Copilot* ## v7.26.6 -- [46d74602](https://github.com/AxaFrance/oidc-client/commit/46d746024d7420f8386f18217c77ff5bc6ccc83e) - Fix null extras values being encoded as literal "null" string in query params (#1640) (release), 2026-02-21 by *Copilot* +- [46d7460](https://github.com/AxaFrance/oidc-client/commit/46d746024d7420f8386f18217c77ff5bc6ccc83e) - Fix null extras values being encoded as literal "null" string in query params (#1640) (release), 2026-02-21 by *Copilot* ## v7.26.5 -- [da37c1c2](https://github.com/AxaFrance/oidc-client/commit/da37c1c29b79d20abc8aeeca17a18155f4274a7e) - fix(react-oidc): remove dangling `setLoading` call in OidcProvider (#1639) (release), 2026-02-21 by *Copilot* +- [da37c1c](https://github.com/AxaFrance/oidc-client/commit/da37c1c29b79d20abc8aeeca17a18155f4274a7e) - fix(react-oidc): remove dangling `setLoading` call in OidcProvider (#1639) (release), 2026-02-21 by *Copilot* ## v7.26.4 -- [9a44940d](https://github.com/AxaFrance/oidc-client/commit/9a44940d0f65255618d7727d7033afa1dbab7239) - fix(oidc-client): sw with safari 17 (#1636) (release), 2026-02-12 by *Guillaume Chervet* +- [9a44940](https://github.com/AxaFrance/oidc-client/commit/9a44940d0f65255618d7727d7033afa1dbab7239) - fix(oidc-client): sw with safari 17 (#1636) (release), 2026-02-12 by *Guillaume Chervet* ## v7.26.3 @@ -82,247 +97,231 @@ ## v7.26.1 -- [49975e24](https://github.com/AxaFrance/oidc-client/commit/49975e24a7dd49d7dd6ddcc86da4ea47d74cac98) - refactor(all): update libraries (release) (#1633), 2026-01-28 by *Guillaume Chervet* -- [2bb456ed](https://github.com/AxaFrance/oidc-client/commit/2bb456ed057131748d2ff26169f166ffcd7e618b) - fix: do not handle all requests (#1625) (alpha), 2025-11-24 by *Andreas Adam* +- [49975e2](https://github.com/AxaFrance/oidc-client/commit/49975e24a7dd49d7dd6ddcc86da4ea47d74cac98) - refactor(all): update libraries (release) (#1633), 2026-01-28 by *Guillaume Chervet* +- [2bb456e](https://github.com/AxaFrance/oidc-client/commit/2bb456ed057131748d2ff26169f166ffcd7e618b) - fix: do not handle all requests (#1625) (alpha), 2025-11-24 by *Andreas Adam* ## v7.26.0 -- [b9656c25](https://github.com/AxaFrance/oidc-client/commit/b9656c2559993efe94a121c442000969b1eaba2b) - feat(react-oidc): enforce uniqueness of redirect_uri and silent_redirect_uri (#1606) (release), 2025-09-17 by *Jean-Marc Rakotoarisoa* -- [960a6947](https://github.com/AxaFrance/oidc-client/commit/960a69472b75e12490025ee3b46d15643c0e35a6) - fix(oidc-client): Clear userInfo in storage in clearAsync function (#1603), 2025-09-17 by *Mérill Téterel* +- [b9656c2](https://github.com/AxaFrance/oidc-client/commit/b9656c2559993efe94a121c442000969b1eaba2b) - feat(react-oidc): enforce uniqueness of redirect_uri and silent_redirect_uri (#1606) (release), 2025-09-17 by *Jean-Marc Rakotoarisoa* +- [960a694](https://github.com/AxaFrance/oidc-client/commit/960a69472b75e12490025ee3b46d15643c0e35a6) - fix(oidc-client): Clear userInfo in storage in clearAsync function (#1603), 2025-09-17 by *Mérill Téterel* ## v7.25.16 -- [c79907b6](https://github.com/AxaFrance/oidc-client/commit/c79907b63af69352ed660e97d9e61265bc155131) - fix(oidc-client): renew token silent login (release) (#1598), 2025-09-04 by *Guillaume Chervet* +- [c79907b](https://github.com/AxaFrance/oidc-client/commit/c79907b63af69352ed660e97d9e61265bc155131) - fix(oidc-client): renew token silent login (release) (#1598), 2025-09-04 by *Guillaume Chervet* ## v7.25.15 -- [f4ce35e4](https://github.com/AxaFrance/oidc-client/commit/f4ce35e4e272de9e4f4387494877bab5939fa1a9) - fix(oidc-client): implement consistent storage caching for userInfo and well-known configuration (release) (#1592), 2025-09-02 by *Michael Sverdlov* +- [f4ce35e](https://github.com/AxaFrance/oidc-client/commit/f4ce35e4e272de9e4f4387494877bab5939fa1a9) - fix(oidc-client): implement consistent storage caching for userInfo and well-known configuration (release) (#1592), 2025-09-02 by *Michael Sverdlov* ## v7.25.14 -- [f5b86ffe](https://github.com/AxaFrance/oidc-client/commit/f5b86ffe656845c26b6f7bcf88da43cf8ece173e) - fix(renewTokens): prevent infinite loop on renew token flow (#1581) (release), 2025-08-02 by *Matheus Frigo* +- [f5b86ff](https://github.com/AxaFrance/oidc-client/commit/f5b86ffe656845c26b6f7bcf88da43cf8ece173e) - fix(renewTokens): prevent infinite loop on renew token flow (#1581) (release), 2025-08-02 by *Matheus Frigo* ## v7.25.13 -- [31661bc1](https://github.com/AxaFrance/oidc-client/commit/31661bc16d67866b6e8d5b978b117600b769fe28) - refcator(all): update dependencies (#1567) (release), 2025-05-05 by *Guillaume Chervet* +- [31661bc](https://github.com/AxaFrance/oidc-client/commit/31661bc16d67866b6e8d5b978b117600b769fe28) - refcator(all): update dependencies (#1567) (release), 2025-05-05 by *Guillaume Chervet* ## v7.25.12 -- [f19cca8c](https://github.com/AxaFrance/oidc-client/commit/f19cca8c4a0aa24f5646e13c80610148037e3bad) - fix(oidc-service-worker): stream already consumed (#1558) (release), 2025-04-30 by *Guillaume Chervet* +- [f19cca8](https://github.com/AxaFrance/oidc-client/commit/f19cca8c4a0aa24f5646e13c80610148037e3bad) - fix(oidc-service-worker): stream already consumed (#1558) (release), 2025-04-30 by *Guillaume Chervet* ## v7.25.11 -- [e5e958a3](https://github.com/AxaFrance/oidc-client/commit/e5e958a34f39ab349b34e094bc17f5df3b49b8f9) - fix(oidc-service-worker): missing body (#1556) (release), 2025-04-29 by *Guillaume Chervet* +- [e5e958a](https://github.com/AxaFrance/oidc-client/commit/e5e958a34f39ab349b34e094bc17f5df3b49b8f9) - fix(oidc-service-worker): missing body (#1556) (release), 2025-04-29 by *Guillaume Chervet* ## v7.25.10 -- [dbb52dad](https://github.com/AxaFrance/oidc-client/commit/dbb52dad456d2429d21fd5a645ff27d6b21e056a) - fix(serviceworker): ios (#1554) (release), 2025-04-24 by *Guillaume Chervet* -- [f2f447e3](https://github.com/AxaFrance/oidc-client/commit/f2f447e34805822387281126b93ec39153fb5672) - refactor(all): updates libraries, 2025-04-14 by *Guillaume Chervet* +- [dbb52da](https://github.com/AxaFrance/oidc-client/commit/dbb52dad456d2429d21fd5a645ff27d6b21e056a) - fix(serviceworker): ios (#1554) (release), 2025-04-24 by *Guillaume Chervet* +- [f2f447e](https://github.com/AxaFrance/oidc-client/commit/f2f447e34805822387281126b93ec39153fb5672) - refactor(all): updates libraries, 2025-04-14 by *Guillaume Chervet* ## v7.25.9 -- [c1ece663](https://github.com/AxaFrance/oidc-client/commit/c1ece663131db50a8c1152b18be0d3d5f6a0025e) - fix(oidc): make bearer fetch works on safari back (release) (#1550), 2025-04-11 by *Guillaume Chervet* +- [c1ece66](https://github.com/AxaFrance/oidc-client/commit/c1ece663131db50a8c1152b18be0d3d5f6a0025e) - fix(oidc): make bearer fetch works on safari back (release) (#1550), 2025-04-11 by *Guillaume Chervet* ## v7.25.8 -- [4c85da7d](https://github.com/AxaFrance/oidc-client/commit/4c85da7d0e0e802c95efe31c5de948ac5abd5494) - fix(oidc-service-worker): Error with latest Safari (#1547) (release), 2025-04-04 by *Guillaume Chervet* +- [4c85da7](https://github.com/AxaFrance/oidc-client/commit/4c85da7d0e0e802c95efe31c5de948ac5abd5494) - fix(oidc-service-worker): Error with latest Safari (#1547) (release), 2025-04-04 by *Guillaume Chervet* ## v7.25.7 -- [930ad036](https://github.com/AxaFrance/oidc-client/commit/930ad0367cfcaa5bd15726c17501d70b0768ce5e) - fix(oidc-service-worker): fetch already consume (release) (#1534), 2025-04-01 by *Guillaume Chervet* +- [930ad03](https://github.com/AxaFrance/oidc-client/commit/930ad0367cfcaa5bd15726c17501d70b0768ce5e) - fix(oidc-service-worker): fetch already consume (release) (#1534), 2025-04-01 by *Guillaume Chervet* ## v7.25.6 -- [2cb8cdea](https://github.com/AxaFrance/oidc-client/commit/2cb8cdeafdb39fadc19beb878808a5d2291cd6fa) - fix(oidc): multi-tab dpop not working with (#1531) (release), 2025-03-28 by *Guillaume Chervet* +- [2cb8cde](https://github.com/AxaFrance/oidc-client/commit/2cb8cdeafdb39fadc19beb878808a5d2291cd6fa) - fix(oidc): multi-tab dpop not working with (#1531) (release), 2025-03-28 by *Guillaume Chervet* ## v7.25.5 -- [d7567ba2](https://github.com/AxaFrance/oidc-client/commit/d7567ba28c0dfe9b248be52ecfac4df6f98b397b) - feature(oidc-service-worker): multi tab auth (#1528) (release), 2025-03-27 by *Guillaume Chervet* +- [d7567ba](https://github.com/AxaFrance/oidc-client/commit/d7567ba28c0dfe9b248be52ecfac4df6f98b397b) - feature(oidc-service-worker): multi tab auth (#1528) (release), 2025-03-27 by *Guillaume Chervet* ## v7.25.4 -- [1b2fa1da](https://github.com/AxaFrance/oidc-client/commit/1b2fa1da513b419c2c28e67a331d12670b07a94d) - refactor(oidc): update librairie (release), 2025-03-25 by *Guillaume Chervet* +- [1b2fa1d](https://github.com/AxaFrance/oidc-client/commit/1b2fa1da513b419c2c28e67a331d12670b07a94d) - refactor(oidc): update librairie (release), 2025-03-25 by *Guillaume Chervet* ## v7.25.3 -- [ca0f0645](https://github.com/AxaFrance/oidc-client/commit/ca0f0645c52dd827b97912d5ee6f1836e05f56e1) - fix(oidc): lost session back (release) (#1514), 2025-02-06 by *Guillaume Chervet* +- [ca0f064](https://github.com/AxaFrance/oidc-client/commit/ca0f0645c52dd827b97912d5ee6f1836e05f56e1) - fix(oidc): lost session back (release) (#1514), 2025-02-06 by *Guillaume Chervet* ## v7.25.2 -- [15900f42](https://github.com/AxaFrance/oidc-client/commit/15900f42e42539a5b12a4c23959ec95c695426d9) - fix(oidc): MonitorSession/CheckSession initializes only on one tab (release) (#1513), 2025-02-05 by *Guillaume Chervet* +- [15900f4](https://github.com/AxaFrance/oidc-client/commit/15900f42e42539a5b12a4c23959ec95c695426d9) - fix(oidc): MonitorSession/CheckSession initializes only on one tab (release) (#1513), 2025-02-05 by *Guillaume Chervet* ## v7.25.1 -- [f0641a6f](https://github.com/AxaFrance/oidc-client/commit/f0641a6ff21a7cf600ee5e782a3e3114b462551c) - fix(oidc): remove use of localStorage for cache (release), 2025-02-05 by *Guillaume Chervet* +- [f0641a6](https://github.com/AxaFrance/oidc-client/commit/f0641a6ff21a7cf600ee5e782a3e3114b462551c) - fix(oidc): remove use of localStorage for cache (release), 2025-02-05 by *Guillaume Chervet* ## v7.25.0 -- [07754f56](https://github.com/AxaFrance/oidc-client/commit/07754f5643cbe21e6e6eb248b8a6398bd0de2fd7) - fix(oidc): refresh silent signin scope=null (release) (#1503), 2025-01-24 by *Guillaume Chervet* -- [2c083735](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* +- [07754f5](https://github.com/AxaFrance/oidc-client/commit/07754f5643cbe21e6e6eb248b8a6398bd0de2fd7) - fix(oidc): refresh silent signin scope=null (release) (#1503), 2025-01-24 by *Guillaume Chervet* +- [2c08373](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* ## v7.24.1 -- [3fe05117](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* +- [3fe0511](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* ## v7.24.0 -- [de5da362](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* +- [de5da36](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* ## v7.23.1 -- [0f69a114](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* +- [0f69a11](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* ## v7.23.0 -- [30fda231](https://github.com/AxaFrance/oidc-client/commit/30fda231324b18bb026de30e537e0bce7cc3bbc1) - feat(oidc-react): add missing scope property in login route (release), 2024-11-22 by *Guillaume Chervet* -- [4d77aae5](https://github.com/AxaFrance/oidc-client/commit/4d77aae5ec4564f1866ebc9ba5e9f2ad1bd51b63) - fix(oidc): dpop typo (#1482), 2024-11-08 by *Guillaume Chervet* -- [08a21f89](https://github.com/AxaFrance/oidc-client/commit/08a21f89842f1aa8123bfd1eea046a8f1d4a8e96) - fix(demo): better demo (#1480), 2024-11-05 by *Guillaume Chervet* +- [30fda23](https://github.com/AxaFrance/oidc-client/commit/30fda231324b18bb026de30e537e0bce7cc3bbc1) - feat(oidc-react): add missing scope property in login route (release), 2024-11-22 by *Guillaume Chervet* +- [4d77aae](https://github.com/AxaFrance/oidc-client/commit/4d77aae5ec4564f1866ebc9ba5e9f2ad1bd51b63) - fix(oidc): dpop typo (#1482), 2024-11-08 by *Guillaume Chervet* +- [08a21f8](https://github.com/AxaFrance/oidc-client/commit/08a21f89842f1aa8123bfd1eea046a8f1d4a8e96) - fix(demo): better demo (#1480), 2024-11-05 by *Guillaume Chervet* ## v7.22.32 -- [3f885fc1](https://github.com/AxaFrance/oidc-client/commit/3f885fc158ded05ea37b9d7925bd801b63321231) - fix(oidc): remove console.log (release), 2024-10-04 by *Guillaume Chervet* +- [3f885fc](https://github.com/AxaFrance/oidc-client/commit/3f885fc158ded05ea37b9d7925bd801b63321231) - fix(oidc): remove console.log (release), 2024-10-04 by *Guillaume Chervet* ## v7.22.31 -- [cc731c15](https://github.com/AxaFrance/oidc-client/commit/cc731c15f1d72ce4d21a7958ca15128ae1dcdd89) - fix(oidc): force sw update when new registration appears (release) (#1449), 2024-10-02 by *wermanoid* +- [cc731c1](https://github.com/AxaFrance/oidc-client/commit/cc731c15f1d72ce4d21a7958ca15128ae1dcdd89) - fix(oidc): force sw update when new registration appears (release) (#1449), 2024-10-02 by *wermanoid* ## v7.22.30 -- [8c98b270](https://github.com/AxaFrance/oidc-client/commit/8c98b2701e1118538455816ca458062cfc07d716) - fix(oidc): remove missing console.log (#1472) (release), 2024-10-01 by *Guillaume Chervet* +- [8c98b27](https://github.com/AxaFrance/oidc-client/commit/8c98b2701e1118538455816ca458062cfc07d716) - fix(oidc): remove missing console.log (#1472) (release), 2024-10-01 by *Guillaume Chervet* ## v7.22.29 -- [e297a7b5](https://github.com/AxaFrance/oidc-client/commit/e297a7b5bd9d3eebb7cea443185039a7cb74d2f4) - fix(oidc): navigator locks null (#1466) (release), 2024-09-29 by *Guillaume Chervet* +- [e297a7b](https://github.com/AxaFrance/oidc-client/commit/e297a7b5bd9d3eebb7cea443185039a7cb74d2f4) - fix(oidc): navigator locks null (#1466) (release), 2024-09-29 by *Guillaume Chervet* ## v7.22.28 -- [346bdce1](https://github.com/AxaFrance/oidc-client/commit/346bdce138a6b43ab4b31b56447161f9a6cdadeb) - fix(oidc): fetchWithTokens was using a snapshot of tokens (#1465) (release), 2024-09-29 by *Guillaume Chervet* +- [346bdce](https://github.com/AxaFrance/oidc-client/commit/346bdce138a6b43ab4b31b56447161f9a6cdadeb) - fix(oidc): fetchWithTokens was using a snapshot of tokens (#1465) (release), 2024-09-29 by *Guillaume Chervet* ## v7.22.27 -- [63543705](https://github.com/AxaFrance/oidc-client/commit/63543705c9b9a8182d47564bfc24a811c1f50e84) - fix(oidc): user reload time before expiration (release) (#1464), 2024-09-28 by *Guillaume Chervet* +- [6354370](https://github.com/AxaFrance/oidc-client/commit/63543705c9b9a8182d47564bfc24a811c1f50e84) - fix(oidc): user reload time before expiration (release) (#1464), 2024-09-28 by *Guillaume Chervet* ## v7.22.26 -- [10e7257a](https://github.com/AxaFrance/oidc-client/commit/10e7257a0d2257bd8905b3b00ca1fe7ad757e74c) - fix(oidc): lock unexpected behavior (#1459) (release), 2024-09-27 by *Guillaume Chervet* +- [10e7257](https://github.com/AxaFrance/oidc-client/commit/10e7257a0d2257bd8905b3b00ca1fe7ad757e74c) - fix(oidc): lock unexpected behavior (#1459) (release), 2024-09-27 by *Guillaume Chervet* ## v7.22.25 -- [3a0d48ea](https://github.com/AxaFrance/oidc-client/commit/3a0d48ea0d3609d31de0f45d6aebfb1a23b25e73) - fix(oidc): number timer increase (#1457) (release), 2024-09-26 by *Guillaume Chervet* +- [3a0d48e](https://github.com/AxaFrance/oidc-client/commit/3a0d48ea0d3609d31de0f45d6aebfb1a23b25e73) - fix(oidc): number timer increase (#1457) (release), 2024-09-26 by *Guillaume Chervet* ## v7.22.24 -- [b34eabf3](https://github.com/AxaFrance/oidc-client/commit/b34eabf39ce108f8de93a49f1a4d9ec6e46d642c) - refactor(all): update dependencies (#1446) (release), 2024-09-02 by *Guillaume Chervet* -- [35081e16](https://github.com/AxaFrance/oidc-client/commit/35081e16b947ebd490b83a1f6d6b9dc101363736) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client into HEAD, 2024-08-25 by *Guillaume Chervet* -- [70dd233f](https://github.com/AxaFrance/oidc-client/commit/70dd233f69f2b2a9c5da4a2514e2cc657cf435a2) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-08-25 by *Guillaume Chervet* -- [47f9de1f](https://github.com/AxaFrance/oidc-client/commit/47f9de1f648838ae085c45a5dcd55687f80829c5) - fix(oidc): remove no-existing property add typings (release), 2024-08-25 by *Guillaume Chervet* +- [b34eabf](https://github.com/AxaFrance/oidc-client/commit/b34eabf39ce108f8de93a49f1a4d9ec6e46d642c) - refactor(all): update dependencies (#1446) (release), 2024-09-02 by *Guillaume Chervet* +- [35081e1](https://github.com/AxaFrance/oidc-client/commit/35081e16b947ebd490b83a1f6d6b9dc101363736) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client into HEAD, 2024-08-25 by *Guillaume Chervet* +- [70dd233](https://github.com/AxaFrance/oidc-client/commit/70dd233f69f2b2a9c5da4a2514e2cc657cf435a2) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-08-25 by *Guillaume Chervet* +- [47f9de1](https://github.com/AxaFrance/oidc-client/commit/47f9de1f648838ae085c45a5dcd55687f80829c5) - fix(oidc): remove no-existing property add typings (release), 2024-08-25 by *Guillaume Chervet* ## v7.22.23 -- [d15a57d9](https://github.com/AxaFrance/oidc-client/commit/d15a57d98309db99d3bcd8d1a6a4fbeffe1b5402) - Fix(oidc): usage of config option service_worker_register (#1440) (release), 2024-08-25 by *Thomas Miliopoulos* +- [d15a57d](https://github.com/AxaFrance/oidc-client/commit/d15a57d98309db99d3bcd8d1a6a4fbeffe1b5402) - Fix(oidc): usage of config option service_worker_register (#1440) (release), 2024-08-25 by *Thomas Miliopoulos* ## v7.22.22 -- [d213de1a](https://github.com/AxaFrance/oidc-client/commit/d213de1a49d891cc1c0f399621f696ed861c145e) - doc(oidc) :Update README.md (release), 2024-08-20 by *Guillaume Chervet* -- [11592628](https://github.com/AxaFrance/oidc-client/commit/115926280965cffc5a4f7ea2234bf1a0017ff896) - fix(logout): should work correctly with multiple tabs (alpha) (#1435), 2024-08-13 by *wermanoid* -- [23ae6ba2](https://github.com/AxaFrance/oidc-client/commit/23ae6ba287a85cc879c92228feb3855dcbe2930e) - fix(oidc): Add undefined as union type into arguments for login, logout, renewTokens (#1429) (alpha), 2024-08-02 by *ShimpeiKamiguchi* +- [d213de1](https://github.com/AxaFrance/oidc-client/commit/d213de1a49d891cc1c0f399621f696ed861c145e) - doc(oidc) :Update README.md (release), 2024-08-20 by *Guillaume Chervet* +- [1159262](https://github.com/AxaFrance/oidc-client/commit/115926280965cffc5a4f7ea2234bf1a0017ff896) - fix(logout): should work correctly with multiple tabs (alpha) (#1435), 2024-08-13 by *wermanoid* +- [23ae6ba](https://github.com/AxaFrance/oidc-client/commit/23ae6ba287a85cc879c92228feb3855dcbe2930e) - fix(oidc): Add undefined as union type into arguments for login, logout, renewTokens (#1429) (alpha), 2024-08-02 by *ShimpeiKamiguchi* ## v7.22.21 -- [318de922](https://github.com/AxaFrance/oidc-client/commit/318de922980c167dd9fc1a743d2dedd106b9a02d) - fix(oidc): Add null as union type into arguments for login, logout, renewTokens functions (#1427) (release), 2024-07-26 by *ShimpeiKamiguchi* +- [318de92](https://github.com/AxaFrance/oidc-client/commit/318de922980c167dd9fc1a743d2dedd106b9a02d) - fix(oidc): Add null as union type into arguments for login, logout, renewTokens functions (#1427) (release), 2024-07-26 by *ShimpeiKamiguchi* ## v7.22.20 -- [05ace2dc](https://github.com/AxaFrance/oidc-client/commit/05ace2dce4a36493b1d127d049c3ef7d5ebd90b4) - fix(oidc): record tabIds when service worker receives init event (release), 2024-07-22 by *mkrzempek* -- [6b5f6b42](https://github.com/AxaFrance/oidc-client/commit/6b5f6b428aba70b32d5264b0de89752a00b352e3) - refactor(initWorker): null coalescing, 2024-07-21 by *Jason Finch* -- [34bd8e4b](https://github.com/AxaFrance/oidc-client/commit/34bd8e4b3388761b2127a9c73980d74edac7b3ad) - refactor(parameters): Default parameters should be last.sonarlint(typescript:S1788), 2024-07-21 by *Jason Finch* -- [44fa6f26](https://github.com/AxaFrance/oidc-client/commit/44fa6f2678f989ee23a84a506aea3caf159b9c2c) - fix spelling `token_acquired`, 2024-07-21 by *Jason Finch* -- [32a2af30](https://github.com/AxaFrance/oidc-client/commit/32a2af3028cd69581d1ab0ee183c7b3146998b41) - chore(lint): Fix lint warnings., 2024-07-21 by *Jason Finch* +- [05ace2d](https://github.com/AxaFrance/oidc-client/commit/05ace2dce4a36493b1d127d049c3ef7d5ebd90b4) - fix(oidc): record tabIds when service worker receives init event (release), 2024-07-22 by *mkrzempek* +- [6b5f6b4](https://github.com/AxaFrance/oidc-client/commit/6b5f6b428aba70b32d5264b0de89752a00b352e3) - refactor(initWorker): null coalescing, 2024-07-21 by *Jason Finch* +- [34bd8e4](https://github.com/AxaFrance/oidc-client/commit/34bd8e4b3388761b2127a9c73980d74edac7b3ad) - refactor(parameters): Default parameters should be last.sonarlint(typescript:S1788), 2024-07-21 by *Jason Finch* +- [44fa6f2](https://github.com/AxaFrance/oidc-client/commit/44fa6f2678f989ee23a84a506aea3caf159b9c2c) - fix spelling `token_acquired`, 2024-07-21 by *Jason Finch* +- [32a2af3](https://github.com/AxaFrance/oidc-client/commit/32a2af3028cd69581d1ab0ee183c7b3146998b41) - chore(lint): Fix lint warnings., 2024-07-21 by *Jason Finch* ## v7.22.19 -- [2cf0b624](https://github.com/AxaFrance/oidc-client/commit/2cf0b6243b39f3927d75fb80a96030259b7c16a2) - fix(oidc): autorenew from custom fetch was broken (release), 2024-07-20 by *Guillaume Chervet* -- [f1d9da44](https://github.com/AxaFrance/oidc-client/commit/f1d9da44647d5b754df9c73cadb899179a98982b) - fix(oidc): lint (alpha), 2024-07-19 by *Guillaume Chervet* -- [e4f4d977](https://github.com/AxaFrance/oidc-client/commit/e4f4d9774acb94f968b566b69cb8f11581a76830) - chore: apply prettier in repo, 2024-07-18 by *Alex Werman* -- [02b00e07](https://github.com/AxaFrance/oidc-client/commit/02b00e075aeb8a291e1fc72b28ffe4eab1787db4) - fix(eslint): Fix ESLint to run prettier, 2024-07-17 by *Jason Finch* -- [9191b0c2](https://github.com/AxaFrance/oidc-client/commit/9191b0c2f95491fd12cf93673bb468d9b6d61774) - chore(packages): Bump packages for eslint/prettier, 2024-07-17 by *Jason Finch* -- [a082b20a](https://github.com/AxaFrance/oidc-client/commit/a082b20a943ab6322e69c00770d8ba86c9b8eaa2) - fix (Lint): Fix lint errors after rebase., 2024-07-17 by *Jason Finch* -- [f6cf194d](https://github.com/AxaFrance/oidc-client/commit/f6cf194d9c14d7eba20f23a89e215bb9cc6cacd1) - refactor(silentcallback): Catch any errors in async playCallbackAsync, 2024-07-13 by *Jason Finch* -- [8797330e](https://github.com/AxaFrance/oidc-client/commit/8797330ea5060a77b8d10a352ff166a33210f6aa) - refactor(lint): Fix minor lint issues, 2024-07-13 by *Jason Finch* -- [bb7bc929](https://github.com/AxaFrance/oidc-client/commit/bb7bc929f7a1bc4f1d210216d89fad881056990f) - fix (lint): Fix all lint errors reporting by eslint., 2024-07-12 by *Jason Finch* -- [cd2f57ed](https://github.com/AxaFrance/oidc-client/commit/cd2f57edb99e04495b9884723cd05277a45aad43) - fix(demo): Update configurations.ts, 2024-07-16 by *Guillaume Chervet* +- [2cf0b62](https://github.com/AxaFrance/oidc-client/commit/2cf0b6243b39f3927d75fb80a96030259b7c16a2) - fix(oidc): autorenew from custom fetch was broken (release), 2024-07-20 by *Guillaume Chervet* +- [f1d9da4](https://github.com/AxaFrance/oidc-client/commit/f1d9da44647d5b754df9c73cadb899179a98982b) - fix(oidc): lint (alpha), 2024-07-19 by *Guillaume Chervet* +- [e4f4d97](https://github.com/AxaFrance/oidc-client/commit/e4f4d9774acb94f968b566b69cb8f11581a76830) - chore: apply prettier in repo, 2024-07-18 by *Alex Werman* +- [02b00e0](https://github.com/AxaFrance/oidc-client/commit/02b00e075aeb8a291e1fc72b28ffe4eab1787db4) - fix(eslint): Fix ESLint to run prettier, 2024-07-17 by *Jason Finch* +- [9191b0c](https://github.com/AxaFrance/oidc-client/commit/9191b0c2f95491fd12cf93673bb468d9b6d61774) - chore(packages): Bump packages for eslint/prettier, 2024-07-17 by *Jason Finch* +- [a082b20](https://github.com/AxaFrance/oidc-client/commit/a082b20a943ab6322e69c00770d8ba86c9b8eaa2) - fix (Lint): Fix lint errors after rebase., 2024-07-17 by *Jason Finch* +- [f6cf194](https://github.com/AxaFrance/oidc-client/commit/f6cf194d9c14d7eba20f23a89e215bb9cc6cacd1) - refactor(silentcallback): Catch any errors in async playCallbackAsync, 2024-07-13 by *Jason Finch* +- [8797330](https://github.com/AxaFrance/oidc-client/commit/8797330ea5060a77b8d10a352ff166a33210f6aa) - refactor(lint): Fix minor lint issues, 2024-07-13 by *Jason Finch* +- [bb7bc92](https://github.com/AxaFrance/oidc-client/commit/bb7bc929f7a1bc4f1d210216d89fad881056990f) - fix (lint): Fix all lint errors reporting by eslint., 2024-07-12 by *Jason Finch* +- [cd2f57e](https://github.com/AxaFrance/oidc-client/commit/cd2f57edb99e04495b9884723cd05277a45aad43) - fix(demo): Update configurations.ts, 2024-07-16 by *Guillaume Chervet* ## v7.22.18 -- [5ee0cc8f](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* +- [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* ## v7.22.17 -- [b099078f](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* -- [01f07142](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* -- [b94fa5ca](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by *Jason Finch* -- [7caee919](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by *Jason Finch* -- [a46b1aab](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by *Jason Finch* -- [a989ed29](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* +- [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* +- [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* +- [b94fa5c](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by *Jason Finch* +- [7caee91](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by *Jason Finch* +- [a46b1aa](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by *Jason Finch* +- [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* ## v7.22.16 -- [72a63734](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* -- [c56ceb81](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* - - -## v7.22.15 - -- [73eae7e9](https://github.com/AxaFrance/oidc-client/commit/73eae7e9d68dea6ebec0ed82ba7873941c0e371e) - refactor(oidcServiceWorker): Extract GetCurrentDatabaseTokenEndpoint, add tests. (#1405) (release), 2024-07-11 by *Jason Finch* -- [e51aef26](https://github.com/AxaFrance/oidc-client/commit/e51aef268e783259c035e3ba58bf9aa16a111bea) - fix (Style): fix 'container' classname in demo. (#1401), 2024-07-11 by *Jason Finch* - - -## v7.22.14 - -- [25c55eeb](https://github.com/AxaFrance/oidc-client/commit/25c55eeb7682356c13987a91d7b8645cca1b0ad5) - refactor(oidc): null coalescing (#1404) (release), 2024-07-11 by *Jason Finch* - - -## v7.22.13 - -- [95c814dd](https://github.com/AxaFrance/oidc-client/commit/95c814dd9dd325a3a00c3a0dc049d301d983514e) - fix(ci): setup pnpm (release) (#1399), 2024-07-05 by *Guillaume Chervet* +- [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* +- [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* From db7af26e7979da303bc5d70df28a56854b8d5f3e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Jun 2026 11:14:41 +0200 Subject: [PATCH 489/565] Document and expose the public service worker message protocol (#1694) (release) Co-authored-by: GnOuGo Agent --- .../oidc-client-service-worker/PROTOCOL.md | 169 +++++++++++++++ .../oidc-client-service-worker/package.json | 13 ++ .../src/__tests__/protocol.spec.ts | 104 ++++++++++ .../src/protocol.ts | 194 ++++++++++++++++++ .../oidc-client-service-worker/vite.config.js | 7 +- packages/oidc-client/README.md | 30 +++ packages/oidc-client/src/index.ts | 20 ++ packages/oidc-client/src/initWorker.ts | 53 ++++- packages/oidc-client/src/oidcClient.ts | 29 +++ packages/oidc-client/src/protocol.spec.ts | 96 +++++++++ packages/oidc-client/src/protocol.ts | 106 ++++++++++ .../src/signalServiceWorker.spec.ts | 77 +++++++ 12 files changed, 894 insertions(+), 4 deletions(-) create mode 100644 packages/oidc-client-service-worker/PROTOCOL.md create mode 100644 packages/oidc-client-service-worker/src/__tests__/protocol.spec.ts create mode 100644 packages/oidc-client-service-worker/src/protocol.ts create mode 100644 packages/oidc-client/src/protocol.spec.ts create mode 100644 packages/oidc-client/src/protocol.ts create mode 100644 packages/oidc-client/src/signalServiceWorker.spec.ts diff --git a/packages/oidc-client-service-worker/PROTOCOL.md b/packages/oidc-client-service-worker/PROTOCOL.md new file mode 100644 index 000000000..9335b1a0a --- /dev/null +++ b/packages/oidc-client-service-worker/PROTOCOL.md @@ -0,0 +1,169 @@ +# Service Worker Protocol + +This document describes the public, supported `postMessage` protocol exposed +by the OIDC service worker shipped with `@axa-fr/oidc-client-service-worker`, +together with the storage key conventions used by `@axa-fr/oidc-client`. + +The protocol is reachable through the dedicated entry point: + +```ts +import { + PROTOCOL_VERSION, + ServiceWorkerMessageType, + ServiceWorkerMessage, + ServiceWorkerResponse, + TOKEN_PLACEHOLDERS, + STORAGE_KEY_PREFIX, + buildSecuredTokenPlaceholder, + buildDpopSecuredPlaceholder, + buildStorageKey, + isServiceWorkerMessageType, +} from '@axa-fr/oidc-client-service-worker/protocol'; +``` + +`@axa-fr/oidc-client` re-exports the same symbols on its public entry point +for convenience. + +## Stability guarantees + +The protocol is versioned with [Semantic Versioning](https://semver.org/) via +the exported `PROTOCOL_VERSION` constant. + +| Change | Version bump | +| -------------------------------------------------------- | ------------ | +| Removing a message type, response field or storage key | major | +| Renaming or repurposing an existing field | major | +| Adding a new message type, response field or helper | minor | +| Documentation-only or behaviour-preserving fixes | patch | + +Any breaking change is announced at least one minor version in advance with +a deprecation notice in the [CHANGELOG](../../CHANGELOG.md), and the +`PROTOCOL_VERSION` major number is bumped on the release that ships the +breaking change. + +The wire format itself (string values of `ServiceWorkerMessageType`) is +considered _public_ and stable: tools that rely on the literal strings +`init`, `claim`, `getState`, etc. will continue to work as long as the major +`PROTOCOL_VERSION` is unchanged. + +## Message envelope + +Every message sent _to_ the service worker conforms to the following shape +(see also `ServiceWorkerMessage` in the typings): + +```ts +interface ServiceWorkerMessage { + type: ServiceWorkerMessageTypeValue; // see table below + configurationName: string; // OIDC configuration identifier + data: object | null; // payload, depends on `type` + tabId?: string; // optional tab id (defaults to "default") +} +``` + +Every message is sent through a `MessageChannel`; the service worker replies +on `port2` exactly once. Responses always include a top-level +`configurationName` (when applicable) and may include `error` if the SW +could not service the request. + +Use [`OidcClient.signalServiceWorker`](../../packages/oidc-client/README.md) +to send a message without having to manage the channel yourself. + +## Message types + +| `ServiceWorkerMessageType` | Wire value (`type`) | Description | +| -------------------------- | ------------------- | ----------- | +| `SKIP_WAITING` | `SKIP_WAITING` | Lifecycle: ask the worker to call `skipWaiting()`. | +| `CLAIM` | `claim` | Lifecycle: ask the worker to claim the current page. | +| `CLEAR` | `clear` | Reset the in-memory entry for `configurationName` (tokens, state, nonce, DPoP, …). | +| `INIT` | `init` | Provide the OIDC server configuration; returns the masked tokens and the SW version. | +| `SET_STATE` / `GET_STATE` | `setState` / `getState` | Persist / retrieve the OAuth `state` value. | +| `SET_CODE_VERIFIER` / `GET_CODE_VERIFIER` | `setCodeVerifier` / `getCodeVerifier` | Persist / retrieve the PKCE code verifier. | +| `SET_SESSION_STATE` / `GET_SESSION_STATE` | `setSessionState` / `getSessionState` | Persist / retrieve the `session_state` claim. | +| `SET_NONCE` / `GET_NONCE` | `setNonce` / `getNonce` | Persist / retrieve the OIDC nonce. | +| `SET_DPOP_NONCE` / `GET_DPOP_NONCE` | `setDemonstratingProofOfPossessionNonce` / `getDemonstratingProofOfPossessionNonce` | Persist / retrieve the DPoP server nonce. | +| `SET_DPOP_JWK` / `GET_DPOP_JWK` | `setDemonstratingProofOfPossessionJwk` / `getDemonstratingProofOfPossessionJwk` | Persist / retrieve the JSON serialised DPoP JWK. | + +### Payloads + +Below are the supported `data` payloads. All others fields on `data` are +ignored; sending unknown extra fields is allowed and will not cause a +protocol-version bump. + +| Type | Request payload | Response payload | +| ---- | --------------- | ---------------- | +| `SKIP_WAITING` | `null` | `{}` | +| `claim` | `null` | `{}` | +| `clear` | `{ status: Status }` | `{ configurationName }` | +| `init` | `{ oidcServerConfiguration, oidcConfiguration, where }` | `{ configurationName, tokens, status, version }` | +| `setState` | `{ state: string }` | `{ configurationName }` | +| `getState` | `null` | `{ configurationName, state }` | +| `setCodeVerifier` | `{ codeVerifier: string }` | `{ configurationName }` | +| `getCodeVerifier` | `null` | `{ configurationName, codeVerifier }` | +| `setSessionState` | `{ sessionState: string }` | `{ configurationName }` | +| `getSessionState` | `null` | `{ configurationName, sessionState }` | +| `setNonce` | `{ nonce: { nonce: string } }` | `{ configurationName }` | +| `getNonce` | `null` | `{ configurationName, nonce }` | +| `setDemonstratingProofOfPossessionNonce` | `{ demonstratingProofOfPossessionNonce: string }` | `{ configurationName }` | +| `getDemonstratingProofOfPossessionNonce` | `null` | `{ configurationName, demonstratingProofOfPossessionNonce }` | +| `setDemonstratingProofOfPossessionJwk` | `{ demonstratingProofOfPossessionJwkJson: string }` | `{ configurationName }` | +| `getDemonstratingProofOfPossessionJwk` | `null` | `{ configurationName, demonstratingProofOfPossessionJwkJson }` | + +## Token placeholders + +Secret values (access token, refresh token, nonce, code verifier) are never +returned to the page. Instead, the service worker emits stable placeholder +strings that are recognised when the page later sends a `fetch`/`request` to +a trusted endpoint: + +```text +ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_#tabId= +REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_#tabId= +NONCE_SECURED_BY_OIDC_SERVICE_WORKER_#tabId= +CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_#tabId= +DPOP_SECURED_BY_OIDC_SERVICE_WORKER_#tabId= +``` + +Use `buildSecuredTokenPlaceholder(TOKEN_PLACEHOLDERS., configurationName, tabId)` +or `buildDpopSecuredPlaceholder(configurationName, tabId)` to construct the +exact string a consumer will receive. + +## Storage key conventions + +When the service worker is unavailable (or during graceful fallback paths), +`@axa-fr/oidc-client` mirrors the same data into Web Storage. The exported +`STORAGE_KEY_PREFIX` map plus the `buildStorageKey(prefix, configurationName)` +helper produce the canonical key: + +| Symbol | Storage | Pattern | +| ------ | ------- | ------- | +| `STORAGE_KEY_PREFIX.TAB_ID` | `sessionStorage` | `oidc.tabId.` | +| `STORAGE_KEY_PREFIX.STATE` | `sessionStorage` | `oidc.state.` | +| `STORAGE_KEY_PREFIX.NONCE` | `sessionStorage` | `oidc.nonce.` | +| `STORAGE_KEY_PREFIX.CODE_VERIFIER` | `sessionStorage` | `oidc.code_verifier.` | +| `STORAGE_KEY_PREFIX.LOGIN_PARAMS` | `localStorage` | `oidc.login.` | +| `STORAGE_KEY_PREFIX.SW_VERSION_MISMATCH_RELOAD` | `sessionStorage` | `oidc.sw.version_mismatch_reload.` | +| `SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY` | `sessionStorage` | `oidc.sw.controllerchange_reload_count` | + +The `oidc.` namespace is reserved by the library; consumers should not write +keys under it directly. + +## High-level helper + +For most use-cases, prefer the high-level helper exposed by +`OidcClient`: + +```ts +import { ServiceWorkerMessageType } from '@axa-fr/oidc-client-service-worker/protocol'; + +const oidcClient = OidcClient.get(); + +const response = await oidcClient.signalServiceWorker({ + type: ServiceWorkerMessageType.GET_STATE, + data: null, +}); + +console.log(response.state); +``` + +`signalServiceWorker` resolves with the response sent by the SW, rejects on +timeout (default 5 s) or when the SW is not registered. diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 74b584773..68c4838c5 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -5,6 +5,19 @@ "private": false, "main": "dist/OidcServiceWorker.js", "types": "dist/OidcServiceWorker.d.ts", + "exports": { + ".": { + "types": "./dist/OidcServiceWorker.d.ts", + "import": "./dist/OidcServiceWorker.js", + "default": "./dist/OidcServiceWorker.js" + }, + "./protocol": { + "types": "./dist/protocol.d.ts", + "import": "./dist/protocol.js", + "default": "./dist/protocol.js" + }, + "./package.json": "./package.json" + }, "description": "OpenID Connect & OAuth authentication service worker", "files": [ "dist", diff --git a/packages/oidc-client-service-worker/src/__tests__/protocol.spec.ts b/packages/oidc-client-service-worker/src/__tests__/protocol.spec.ts new file mode 100644 index 000000000..45d6b4200 --- /dev/null +++ b/packages/oidc-client-service-worker/src/__tests__/protocol.spec.ts @@ -0,0 +1,104 @@ +import { describe, expect, it } from 'vitest'; + +import { TOKEN } from '../constants'; +import { + buildDpopSecuredPlaceholder, + buildSecuredTokenPlaceholder, + buildStorageKey, + DPOP_TOKEN_PLACEHOLDER_PREFIX, + isServiceWorkerMessageType, + PROTOCOL_VERSION, + ServiceWorkerMessageType, + STORAGE_KEY_PREFIX, + SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY, + TOKEN_PLACEHOLDERS, +} from '../protocol'; + +describe('service worker protocol – public surface', () => { + it('exposes a stable PROTOCOL_VERSION', () => { + expect(PROTOCOL_VERSION).toMatch(/^\d+\.\d+\.\d+$/); + }); + + it('keeps every documented message type accessible by canonical key', () => { + expect(ServiceWorkerMessageType).toEqual({ + SKIP_WAITING: 'SKIP_WAITING', + CLAIM: 'claim', + CLEAR: 'clear', + INIT: 'init', + SET_STATE: 'setState', + GET_STATE: 'getState', + SET_CODE_VERIFIER: 'setCodeVerifier', + GET_CODE_VERIFIER: 'getCodeVerifier', + SET_SESSION_STATE: 'setSessionState', + GET_SESSION_STATE: 'getSessionState', + SET_NONCE: 'setNonce', + GET_NONCE: 'getNonce', + SET_DPOP_NONCE: 'setDemonstratingProofOfPossessionNonce', + GET_DPOP_NONCE: 'getDemonstratingProofOfPossessionNonce', + SET_DPOP_JWK: 'setDemonstratingProofOfPossessionJwk', + GET_DPOP_JWK: 'getDemonstratingProofOfPossessionJwk', + }); + }); + + it('matches the internal TOKEN constants used by the service worker', () => { + expect(TOKEN_PLACEHOLDERS.ACCESS_TOKEN).toBe(TOKEN.ACCESS_TOKEN); + expect(TOKEN_PLACEHOLDERS.REFRESH_TOKEN).toBe(TOKEN.REFRESH_TOKEN); + expect(TOKEN_PLACEHOLDERS.NONCE_TOKEN).toBe(TOKEN.NONCE_TOKEN); + expect(TOKEN_PLACEHOLDERS.CODE_VERIFIER).toBe(TOKEN.CODE_VERIFIER); + }); +}); + +describe('buildSecuredTokenPlaceholder', () => { + it('produces the same placeholder format the service worker emits', () => { + expect(buildSecuredTokenPlaceholder(TOKEN_PLACEHOLDERS.ACCESS_TOKEN, 'demo', 'tab-1')).toBe( + 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_demo#tabId=tab-1', + ); + }); + + it('defaults the tab id to "default"', () => { + expect(buildSecuredTokenPlaceholder(TOKEN_PLACEHOLDERS.REFRESH_TOKEN, 'demo')).toBe( + 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_demo#tabId=default', + ); + }); +}); + +describe('buildDpopSecuredPlaceholder', () => { + it('uses the documented DPoP prefix', () => { + expect(buildDpopSecuredPlaceholder('demo', 'tab-2')).toBe( + `${DPOP_TOKEN_PLACEHOLDER_PREFIX}_demo#tabId=tab-2`, + ); + }); +}); + +describe('buildStorageKey', () => { + it.each([ + [STORAGE_KEY_PREFIX.STATE, 'demo', 'oidc.state.demo'], + [STORAGE_KEY_PREFIX.NONCE, 'demo', 'oidc.nonce.demo'], + [STORAGE_KEY_PREFIX.CODE_VERIFIER, 'demo', 'oidc.code_verifier.demo'], + [STORAGE_KEY_PREFIX.LOGIN_PARAMS, 'demo', 'oidc.login.demo'], + [STORAGE_KEY_PREFIX.TAB_ID, 'demo', 'oidc.tabId.demo'], + [STORAGE_KEY_PREFIX.SW_VERSION_MISMATCH_RELOAD, 'demo', 'oidc.sw.version_mismatch_reload.demo'], + ])('builds %s + %s into %s', (prefix, configurationName, expected) => { + expect(buildStorageKey(prefix, configurationName)).toBe(expected); + }); + + it('exposes the SW controllerchange reload counter key', () => { + expect(SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY).toBe('oidc.sw.controllerchange_reload_count'); + }); +}); + +describe('isServiceWorkerMessageType', () => { + it.each(Object.values(ServiceWorkerMessageType))( + 'returns true for known message type "%s"', + type => { + expect(isServiceWorkerMessageType(type)).toBe(true); + }, + ); + + it.each(['unknown', '', 42, null, undefined, {}])( + 'returns false for invalid message type %p', + value => { + expect(isServiceWorkerMessageType(value)).toBe(false); + }, + ); +}); diff --git a/packages/oidc-client-service-worker/src/protocol.ts b/packages/oidc-client-service-worker/src/protocol.ts new file mode 100644 index 000000000..65021a55e --- /dev/null +++ b/packages/oidc-client-service-worker/src/protocol.ts @@ -0,0 +1,194 @@ +/** + * Public, supported entry point for the oidc-client service worker + * `postMessage` protocol. + * + * See `PROTOCOL.md` (in this package) for a full description of every + * message type, payload, response shape, storage key convention and the + * stability guarantees that apply to those exports. + */ + +import type { + MessageData, + MessageEventData, + MessageEventType, + Nonce, + OidcConfiguration, + OidcServerConfiguration, + Status, +} from './types'; + +export type { + MessageData, + MessageEventData, + MessageEventType, + Nonce, + OidcConfiguration, + OidcServerConfiguration, + Status, +}; + +/** + * Semver-protected version of the service worker `postMessage` protocol. + * + * - The `MAJOR` component changes only on a breaking change to any of the + * exports in this module. + * - The `MINOR` component changes when new (additive) message types or + * helpers are introduced. + * - The `PATCH` component changes for documentation or non-behavioural + * tweaks. + */ +export const PROTOCOL_VERSION = '1.0.0' as const; + +/** + * Every supported service worker message type. + * + * The values are also the literal string used on the wire as + * `MessageEventData.type` and must therefore remain stable across patch and + * minor versions of the protocol. + */ +export const ServiceWorkerMessageType = { + /** Lifecycle: tells the SW to skip the `waiting` state. */ + SKIP_WAITING: 'SKIP_WAITING', + /** Lifecycle: asks the SW to claim the current page. */ + CLAIM: 'claim', + /** Resets the session entry kept inside the SW for a configuration. */ + CLEAR: 'clear', + /** Initialises a configuration entry inside the SW. */ + INIT: 'init', + SET_STATE: 'setState', + GET_STATE: 'getState', + SET_CODE_VERIFIER: 'setCodeVerifier', + GET_CODE_VERIFIER: 'getCodeVerifier', + SET_SESSION_STATE: 'setSessionState', + GET_SESSION_STATE: 'getSessionState', + SET_NONCE: 'setNonce', + GET_NONCE: 'getNonce', + SET_DPOP_NONCE: 'setDemonstratingProofOfPossessionNonce', + GET_DPOP_NONCE: 'getDemonstratingProofOfPossessionNonce', + SET_DPOP_JWK: 'setDemonstratingProofOfPossessionJwk', + GET_DPOP_JWK: 'getDemonstratingProofOfPossessionJwk', +} as const; + +export type ServiceWorkerMessageTypeKey = keyof typeof ServiceWorkerMessageType; +export type ServiceWorkerMessageTypeValue = + (typeof ServiceWorkerMessageType)[ServiceWorkerMessageTypeKey]; + +/** + * Structural shape of a message sent to the service worker. The shape is + * identical to {@link MessageEventData} but typed against the public + * {@link ServiceWorkerMessageTypeValue} union and with optional fields where + * the underlying SW tolerates them. + */ +export interface ServiceWorkerMessage< + TData extends Partial | null = Partial | null, +> { + type: ServiceWorkerMessageTypeValue | 'SKIP_WAITING' | 'claim'; + configurationName: string; + data: TData; + /** + * Optional tab identifier injected by the high-level helpers. Consumers + * sending raw messages can omit it; the SW falls back to `'default'`. + */ + tabId?: string; +} + +/** + * Generic envelope used by every response. Each individual message type may + * extend it with additional, well-known fields (see PROTOCOL.md). + */ +export interface ServiceWorkerResponse { + configurationName?: string; + /** Set by the SW when it cannot service the request. */ + error?: unknown; + [key: string]: unknown; +} + +/** + * Stable internal token placeholders. They are returned by the service + * worker in lieu of secret values (access/refresh tokens, nonces and code + * verifier) so consumers never see the cleartext. + */ +export const TOKEN_PLACEHOLDERS = { + ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER', + CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER', +} as const; + +/** Prefix used for every DPoP placeholder returned by the SW. */ +export const DPOP_TOKEN_PLACEHOLDER_PREFIX = 'DPOP_SECURED_BY_OIDC_SERVICE_WORKER' as const; + +/** + * Browser storage key conventions used by the OIDC client when no service + * worker is available, or as a fallback alongside the SW. They are exported + * so external integrations can read/clean up the same entries. + */ +export const STORAGE_KEY_PREFIX = { + /** sessionStorage – per-tab tab identifier (`oidc.tabId.`). */ + TAB_ID: 'oidc.tabId.', + /** sessionStorage – `oidc.state.`. */ + STATE: 'oidc.state.', + /** sessionStorage – `oidc.nonce.`. */ + NONCE: 'oidc.nonce.', + /** sessionStorage – `oidc.code_verifier.`. */ + CODE_VERIFIER: 'oidc.code_verifier.', + /** localStorage – `oidc.login.`. */ + LOGIN_PARAMS: 'oidc.login.', + /** sessionStorage – `oidc.sw.version_mismatch_reload.`. */ + SW_VERSION_MISMATCH_RELOAD: 'oidc.sw.version_mismatch_reload.', +} as const; + +/** sessionStorage key tracking the SW controllerchange reload counter. */ +export const SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY = + 'oidc.sw.controllerchange_reload_count' as const; + +/** + * Builds a typed sessionStorage / localStorage key from one of the known + * prefixes and a configuration name. The function is intentionally + * single-purpose so we never lose the prefix-based stability guarantee. + */ +export const buildStorageKey = ( + prefix: (typeof STORAGE_KEY_PREFIX)[keyof typeof STORAGE_KEY_PREFIX], + configurationName: string, +): string => `${prefix}${configurationName}`; + +/** + * Builds the stable placeholder string the SW returns instead of an + * access/refresh/nonce/code-verifier secret. Useful for consumers that need + * to detect whether a value comes from the SW. + */ +export const buildSecuredTokenPlaceholder = ( + placeholder: (typeof TOKEN_PLACEHOLDERS)[keyof typeof TOKEN_PLACEHOLDERS], + configurationName: string, + tabId: string = 'default', +): string => `${placeholder}_${configurationName}#tabId=${tabId}`; + +/** + * Builds the placeholder returned for DPoP-secured access tokens + * (`DPOP_SECURED_BY_OIDC_SERVICE_WORKER_#tabId=`). + */ +export const buildDpopSecuredPlaceholder = ( + configurationName: string, + tabId: string = 'default', +): string => `${DPOP_TOKEN_PLACEHOLDER_PREFIX}_${configurationName}#tabId=${tabId}`; + +/** + * Type guard returning `true` when the provided value is one of the + * supported, public service worker message types. + */ +export const isServiceWorkerMessageType = ( + value: unknown, +): value is ServiceWorkerMessageTypeValue => { + if (typeof value !== 'string') { + return false; + } + return Object.values(ServiceWorkerMessageType).includes(value as ServiceWorkerMessageTypeValue); +}; + +/** + * Internal wire-level type, re-exported for legacy parity. New code should + * prefer {@link ServiceWorkerMessageTypeValue}. + * + * @internal + */ +export type ServiceWorkerMessageEventType = MessageEventType; diff --git a/packages/oidc-client-service-worker/vite.config.js b/packages/oidc-client-service-worker/vite.config.js index c9a91157a..1c4c7854d 100644 --- a/packages/oidc-client-service-worker/vite.config.js +++ b/packages/oidc-client-service-worker/vite.config.js @@ -13,11 +13,14 @@ export default defineConfig({ sourcemap: true, lib: { // Could also be a dictionary or array of multiple entry points - entry: resolve(__dirname, './src/OidcServiceWorker.ts'), + entry: { + OidcServiceWorker: resolve(__dirname, './src/OidcServiceWorker.ts'), + protocol: resolve(__dirname, './src/protocol.ts'), + }, name: 'OidcServiceWorker', formats: ['es'], // the proper extensions will be added - fileName: 'OidcServiceWorker', + fileName: format => `[name].${format === 'es' ? 'js' : format}`, }, rollupOptions: { // make sure to externalize deps that shouldn't be bundled diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index f3c172bf9..bf07c7f47 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -434,6 +434,36 @@ pnpm start ``` +## Service worker protocol + +The `postMessage` protocol used between `OidcClient` and the service worker +is publicly documented and versioned. Typed message constants, payload +helpers and storage key conventions are exported from +`@axa-fr/oidc-client` (and from +`@axa-fr/oidc-client-service-worker/protocol`): + +```ts +import { + OidcClient, + PROTOCOL_VERSION, + ServiceWorkerMessageType, + buildSecuredTokenPlaceholder, + TOKEN_PLACEHOLDERS, +} from '@axa-fr/oidc-client'; + +const oidcClient = OidcClient.get(); + +const { state } = await oidcClient.signalServiceWorker<{ state: string }>({ + type: ServiceWorkerMessageType.GET_STATE, + configurationName: 'default', + data: null, +}); +``` + +See [`PROTOCOL.md`](../oidc-client-service-worker/PROTOCOL.md) in the +service-worker package for the full specification, including stability +guarantees and per-message payload shapes. + ## How It Works This component is a pure vanilla JS OIDC client library agnostic to any framework. diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index af6dea8a3..5c58fb631 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -1,3 +1,5 @@ +export type { ServiceWorkerSignalMessage, ServiceWorkerSignalOptions } from './initWorker.js'; +export { signalServiceWorkerAsync } from './initWorker.js'; export type { ILOidcLocation } from './location.js'; export { OidcLocation } from './location.js'; export { getFetchDefault } from './oidc.js'; @@ -5,6 +7,24 @@ export type { OidcUserInfo } from './oidcClient.js'; export { OidcClient } from './oidcClient.js'; export type { Tokens } from './parseTokens.js'; export { TokenRenewMode } from './parseTokens.js'; +export type { + ServiceWorkerMessage, + ServiceWorkerMessageTypeKey, + ServiceWorkerMessageTypeValue, + ServiceWorkerResponse, +} from './protocol.js'; +export { + buildDpopSecuredPlaceholder, + buildSecuredTokenPlaceholder, + buildStorageKey, + DPOP_TOKEN_PLACEHOLDER_PREFIX, + isServiceWorkerMessageType, + PROTOCOL_VERSION, + ServiceWorkerMessageType, + STORAGE_KEY_PREFIX, + SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY, + TOKEN_PLACEHOLDERS, +} from './protocol.js'; export { getParseQueryStringFromLocation, getPath } from './route-utils'; export type { AuthorityConfiguration, Fetch, OidcConfiguration, StringMap } from './types.js'; export { TokenAutomaticRenewMode } from './types.js'; diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 68961b85b..7e8d9721d 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -4,6 +4,20 @@ import timer from './timer.js'; import { OidcConfiguration } from './types.js'; import codeVersion from './version.js'; +export const DEFAULT_SW_MESSAGE_TIMEOUT_MS = 5000; + +export interface ServiceWorkerSignalMessage { + type: string; + configurationName?: string; + data?: unknown; + tabId?: string; + [key: string]: unknown; +} + +export interface ServiceWorkerSignalOptions { + timeoutMs?: number; +} + let keepAliveServiceWorkerTimeoutId = null; let keepAliveController: AbortController | undefined; @@ -57,8 +71,6 @@ export const getTabId = (configurationName: string) => { return newTabId; }; -const DEFAULT_SW_MESSAGE_TIMEOUT_MS = 5000; - const getServiceWorkerTarget = (registration: ServiceWorkerRegistration): ServiceWorker | null => { return ( navigator.serviceWorker.controller ?? @@ -673,6 +685,18 @@ export const initWorkerAsync = async ( }); }; + const signalAsync = ( + message: ServiceWorkerSignalMessage, + options?: ServiceWorkerSignalOptions, + ): Promise => + sendMessageAsync( + registration, + options, + )({ + ...message, + configurationName: message.configurationName ?? configurationName, + }); + return { clearAsync, initAsync, @@ -692,5 +716,30 @@ export const initWorkerAsync = async ( getDemonstratingProofOfPossessionNonce, setDemonstratingProofOfPossessionJwkAsync, getDemonstratingProofOfPossessionJwkAsync, + signalAsync, }; }; + +/** + * Sends a typed message to the OIDC service worker for the given + * configuration. Wraps `MessageChannel` setup, request/response correlation + * and timeouts. + * + * Resolves with the SW response, rejects on timeout or when no SW is + * registered for the configuration. The provided `configurationName` is + * used when the message itself does not carry one. + */ +export const signalServiceWorkerAsync = async ( + configuration: OidcConfiguration, + configurationName: string, + message: ServiceWorkerSignalMessage, + options?: ServiceWorkerSignalOptions, +): Promise => { + const worker = await initWorkerAsync(configuration, configurationName); + if (!worker) { + throw new Error( + `signalServiceWorkerAsync: no service worker registered for configuration "${configurationName}"`, + ); + } + return worker.signalAsync(message, options); +}; diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index d70ee2463..0f8200784 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -1,4 +1,9 @@ import { fetchWithTokens } from './fetch'; +import { + ServiceWorkerSignalMessage, + ServiceWorkerSignalOptions, + signalServiceWorkerAsync, +} from './initWorker.js'; import { ILOidcLocation, OidcLocation } from './location'; import { LoginCallback, Oidc } from './oidc.js'; import { getValidTokenAsync, OidcToken, Tokens, ValidToken } from './parseTokens.js'; @@ -130,6 +135,30 @@ export class OidcClient { userInfo(): T { return this._oidc.userInfo; } + + /** + * High-level helper to send a message to the OIDC service worker. + * + * Wraps the low-level `postMessage` + `MessageChannel` plumbing and + * returns the response posted back by the worker. Use the typed message + * symbols exported from `@axa-fr/oidc-client-service-worker/protocol` + * (`ServiceWorkerMessageType`) to build messages. + * + * @throws if no service worker is registered for the current + * configuration, or if the worker does not respond before the timeout + * elapses. + */ + async signalServiceWorker( + message: ServiceWorkerSignalMessage, + options?: ServiceWorkerSignalOptions, + ): Promise { + return signalServiceWorkerAsync( + this._oidc.configuration, + this._oidc.configurationName, + message, + options, + ) as Promise; + } } export interface OidcUserInfo { diff --git a/packages/oidc-client/src/protocol.spec.ts b/packages/oidc-client/src/protocol.spec.ts new file mode 100644 index 000000000..cd2c0ed16 --- /dev/null +++ b/packages/oidc-client/src/protocol.spec.ts @@ -0,0 +1,96 @@ +import { describe, expect, it } from 'vitest'; + +import { + buildDpopSecuredPlaceholder, + buildSecuredTokenPlaceholder, + buildStorageKey, + DPOP_TOKEN_PLACEHOLDER_PREFIX, + isServiceWorkerMessageType, + PROTOCOL_VERSION, + ServiceWorkerMessageType, + STORAGE_KEY_PREFIX, + SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY, + TOKEN_PLACEHOLDERS, +} from './protocol'; + +describe('public oidc-client protocol surface', () => { + it('exposes a stable PROTOCOL_VERSION', () => { + expect(PROTOCOL_VERSION).toMatch(/^\d+\.\d+\.\d+$/); + }); + + it('matches the wire-level message types documented in PROTOCOL.md', () => { + expect(ServiceWorkerMessageType).toEqual({ + SKIP_WAITING: 'SKIP_WAITING', + CLAIM: 'claim', + CLEAR: 'clear', + INIT: 'init', + SET_STATE: 'setState', + GET_STATE: 'getState', + SET_CODE_VERIFIER: 'setCodeVerifier', + GET_CODE_VERIFIER: 'getCodeVerifier', + SET_SESSION_STATE: 'setSessionState', + GET_SESSION_STATE: 'getSessionState', + SET_NONCE: 'setNonce', + GET_NONCE: 'getNonce', + SET_DPOP_NONCE: 'setDemonstratingProofOfPossessionNonce', + GET_DPOP_NONCE: 'getDemonstratingProofOfPossessionNonce', + SET_DPOP_JWK: 'setDemonstratingProofOfPossessionJwk', + GET_DPOP_JWK: 'getDemonstratingProofOfPossessionJwk', + }); + }); + + it('exposes the token placeholders the service worker emits', () => { + expect(TOKEN_PLACEHOLDERS).toEqual({ + ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER', + CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER', + }); + expect(DPOP_TOKEN_PLACEHOLDER_PREFIX).toBe('DPOP_SECURED_BY_OIDC_SERVICE_WORKER'); + }); +}); + +describe('protocol helpers', () => { + it('builds secured token placeholders that match the SW output', () => { + expect(buildSecuredTokenPlaceholder(TOKEN_PLACEHOLDERS.ACCESS_TOKEN, 'demo', 'tab-1')).toBe( + 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_demo#tabId=tab-1', + ); + expect(buildSecuredTokenPlaceholder(TOKEN_PLACEHOLDERS.NONCE_TOKEN, 'demo')).toBe( + 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER_demo#tabId=default', + ); + }); + + it('builds DPoP placeholders that match the SW output', () => { + expect(buildDpopSecuredPlaceholder('demo', 'tab-2')).toBe( + `${DPOP_TOKEN_PLACEHOLDER_PREFIX}_demo#tabId=tab-2`, + ); + }); + + it.each([ + [STORAGE_KEY_PREFIX.STATE, 'demo', 'oidc.state.demo'], + [STORAGE_KEY_PREFIX.NONCE, 'demo', 'oidc.nonce.demo'], + [STORAGE_KEY_PREFIX.CODE_VERIFIER, 'demo', 'oidc.code_verifier.demo'], + [STORAGE_KEY_PREFIX.LOGIN_PARAMS, 'demo', 'oidc.login.demo'], + [STORAGE_KEY_PREFIX.TAB_ID, 'demo', 'oidc.tabId.demo'], + ])('combines storage prefix %s + %s into %s', (prefix, configurationName, expected) => { + expect(buildStorageKey(prefix, configurationName)).toBe(expected); + }); + + it('exposes the SW controllerchange reload counter key', () => { + expect(SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY).toBe('oidc.sw.controllerchange_reload_count'); + }); + + it.each(Object.values(ServiceWorkerMessageType))( + 'recognises "%s" as a known message type', + type => { + expect(isServiceWorkerMessageType(type)).toBe(true); + }, + ); + + it.each(['unknown', '', 42, null, undefined, {}])( + 'rejects %p as not a known message type', + value => { + expect(isServiceWorkerMessageType(value)).toBe(false); + }, + ); +}); diff --git a/packages/oidc-client/src/protocol.ts b/packages/oidc-client/src/protocol.ts new file mode 100644 index 000000000..28e7807d5 --- /dev/null +++ b/packages/oidc-client/src/protocol.ts @@ -0,0 +1,106 @@ +/** + * Public, supported entry point for the OIDC service worker `postMessage` + * protocol, available directly from `@axa-fr/oidc-client`. + * + * The same exports are also published from + * `@axa-fr/oidc-client-service-worker/protocol`. The two modules are kept + * deliberately in sync (and verified by a unit test) so applications that + * depend only on `@axa-fr/oidc-client` can interact with the service worker + * without adding a transitive dependency. + * + * See `packages/oidc-client-service-worker/PROTOCOL.md` for the full + * specification. + */ + +/** + * Semver-protected version of the service worker `postMessage` protocol. + */ +export const PROTOCOL_VERSION = '1.0.0' as const; + +/** + * Every supported service worker message type. The values are also the + * literal strings used on the wire as `MessageEventData.type` and must + * remain stable across patch and minor versions of the protocol. + */ +export const ServiceWorkerMessageType = { + SKIP_WAITING: 'SKIP_WAITING', + CLAIM: 'claim', + CLEAR: 'clear', + INIT: 'init', + SET_STATE: 'setState', + GET_STATE: 'getState', + SET_CODE_VERIFIER: 'setCodeVerifier', + GET_CODE_VERIFIER: 'getCodeVerifier', + SET_SESSION_STATE: 'setSessionState', + GET_SESSION_STATE: 'getSessionState', + SET_NONCE: 'setNonce', + GET_NONCE: 'getNonce', + SET_DPOP_NONCE: 'setDemonstratingProofOfPossessionNonce', + GET_DPOP_NONCE: 'getDemonstratingProofOfPossessionNonce', + SET_DPOP_JWK: 'setDemonstratingProofOfPossessionJwk', + GET_DPOP_JWK: 'getDemonstratingProofOfPossessionJwk', +} as const; + +export type ServiceWorkerMessageTypeKey = keyof typeof ServiceWorkerMessageType; +export type ServiceWorkerMessageTypeValue = + (typeof ServiceWorkerMessageType)[ServiceWorkerMessageTypeKey]; + +export interface ServiceWorkerMessage { + type: ServiceWorkerMessageTypeValue | 'SKIP_WAITING' | 'claim'; + configurationName: string; + data: TData; + tabId?: string; +} + +export interface ServiceWorkerResponse { + configurationName?: string; + error?: unknown; + [key: string]: unknown; +} + +/** Stable internal token placeholders – matched by the SW request handler. */ +export const TOKEN_PLACEHOLDERS = { + ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER', + NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER', + CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER', +} as const; + +export const DPOP_TOKEN_PLACEHOLDER_PREFIX = 'DPOP_SECURED_BY_OIDC_SERVICE_WORKER' as const; + +export const STORAGE_KEY_PREFIX = { + TAB_ID: 'oidc.tabId.', + STATE: 'oidc.state.', + NONCE: 'oidc.nonce.', + CODE_VERIFIER: 'oidc.code_verifier.', + LOGIN_PARAMS: 'oidc.login.', + SW_VERSION_MISMATCH_RELOAD: 'oidc.sw.version_mismatch_reload.', +} as const; + +export const SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY = + 'oidc.sw.controllerchange_reload_count' as const; + +export const buildStorageKey = ( + prefix: (typeof STORAGE_KEY_PREFIX)[keyof typeof STORAGE_KEY_PREFIX], + configurationName: string, +): string => `${prefix}${configurationName}`; + +export const buildSecuredTokenPlaceholder = ( + placeholder: (typeof TOKEN_PLACEHOLDERS)[keyof typeof TOKEN_PLACEHOLDERS], + configurationName: string, + tabId: string = 'default', +): string => `${placeholder}_${configurationName}#tabId=${tabId}`; + +export const buildDpopSecuredPlaceholder = ( + configurationName: string, + tabId: string = 'default', +): string => `${DPOP_TOKEN_PLACEHOLDER_PREFIX}_${configurationName}#tabId=${tabId}`; + +export const isServiceWorkerMessageType = ( + value: unknown, +): value is ServiceWorkerMessageTypeValue => { + if (typeof value !== 'string') { + return false; + } + return Object.values(ServiceWorkerMessageType).includes(value as ServiceWorkerMessageTypeValue); +}; diff --git a/packages/oidc-client/src/signalServiceWorker.spec.ts b/packages/oidc-client/src/signalServiceWorker.spec.ts new file mode 100644 index 000000000..b9c6d33be --- /dev/null +++ b/packages/oidc-client/src/signalServiceWorker.spec.ts @@ -0,0 +1,77 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import * as initWorker from './initWorker'; +import { OidcClient } from './oidcClient'; +import { ServiceWorkerMessageType } from './protocol'; + +const buildClient = (overrides: Partial<{ configurationName: string }> = {}) => { + const oidc = { + configuration: { client_id: 'demo-client' }, + configurationName: overrides.configurationName ?? 'demo', + }; + return new OidcClient(oidc as never); +}; + +describe('OidcClient.signalServiceWorker', () => { + afterEach(() => { + vi.restoreAllMocks(); + }); + + it('forwards the typed message to signalServiceWorkerAsync with the OIDC config', async () => { + const expected = { configurationName: 'demo', state: 'restored-state' }; + const spy = vi + .spyOn(initWorker, 'signalServiceWorkerAsync') + .mockResolvedValue(expected as never); + + const client = buildClient(); + const response = await client.signalServiceWorker<{ state: string }>({ + type: ServiceWorkerMessageType.GET_STATE, + configurationName: 'demo', + data: null, + }); + + expect(response).toEqual(expected); + expect(spy).toHaveBeenCalledOnce(); + expect(spy).toHaveBeenCalledWith( + { client_id: 'demo-client' }, + 'demo', + expect.objectContaining({ + type: 'getState', + data: null, + }), + undefined, + ); + }); + + it('propagates a custom timeout option', async () => { + const spy = vi.spyOn(initWorker, 'signalServiceWorkerAsync').mockResolvedValue({} as never); + + const client = buildClient(); + await client.signalServiceWorker( + { type: ServiceWorkerMessageType.CLEAR, configurationName: 'demo', data: { status: null } }, + { timeoutMs: 9000 }, + ); + + expect(spy).toHaveBeenCalledWith( + expect.anything(), + 'demo', + expect.objectContaining({ type: 'clear' }), + { timeoutMs: 9000 }, + ); + }); + + it('rejects when the underlying helper rejects', async () => { + const error = new Error('no SW'); + vi.spyOn(initWorker, 'signalServiceWorkerAsync').mockRejectedValue(error); + + const client = buildClient(); + + await expect( + client.signalServiceWorker({ + type: ServiceWorkerMessageType.GET_STATE, + configurationName: 'demo', + data: null, + }), + ).rejects.toBe(error); + }); +}); From 4240e13d40e4650ca29e04b3251c2814e1e0bb90 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:16:59 +0000 Subject: [PATCH 490/565] [skip ci] Update to version 7.27.12 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 68c4838c5..33b5f5c69 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.11", + "version": "7.27.12", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index b33a1d760..0d71e8c26 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.11'; +export default '7.27.12'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 421400c8b..2c3defb36 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.11", + "version": "7.27.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index b33a1d760..0d71e8c26 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.11'; +export default '7.27.12'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 6dd07cd20..e57c764e4 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.11", + "version": "7.27.12", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From c209f87bd1863e619a5537f4624c74e593971d6d Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:17:01 +0000 Subject: [PATCH 491/565] [skip ci] Generate changelog to version 7.27.12 --- CHANGELOG.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fd58fa3a..035e47c03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.11 +## 7.27.12 + +- [db7af26](https://github.com/AxaFrance/oidc-client/commit/db7af26e7979da303bc5d70df28a56854b8d5f3e) - Document and expose the public service worker message protocol (#1694) (release), 2026-06-16 by *Guillaume Chervet* + + +## v7.27.11 @@ -319,9 +324,3 @@ - [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* -## v7.22.16 - -- [72a6373](https://github.com/AxaFrance/oidc-client/commit/72a6373402a53aaaf01ad7fac22f8ad8c6feaff0) - fix(oidc): improve error handling (release) (#1403), 2024-07-11 by *Miya* -- [c56ceb8](https://github.com/AxaFrance/oidc-client/commit/c56ceb815b28dd5990fe4a1679a61bcebc7e525a) - docs(readme): Update README.md (#1407), 2024-07-12 by *Jason Finch* - - From 7b97a98f47b54ae4a9bc13dfc732c3e153dd8e60 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Jun 2026 11:26:41 +0200 Subject: [PATCH 492/565] Auto fix for issue #1681: OidcProvider can sit in loading/authenticating indefinitely with no timeout event (#1692) (release) * feat: add loading timeout watchdog to OidcProvider (#1681) Add a configurable loading timeout that fires a loadingTimeout_error event when OidcProvider remains stuck in loading/authenticating state beyond a threshold (default 30s). This allows consumers to render recovery UI via the existing event/component plumbing instead of maintaining their own watchdog timers. Changes: - Add loadingTimeout_error event name to oidc-client events - Add loading_timeout_ms config option to OidcConfiguration (default 30s, 0 or negative disables the watchdog) - Add timeout useEffect in OidcProvider that publishes the event when stuck - Add loadingTimeoutComponent prop with a default LoadingTimeout component - Handle loadingTimeout_error in the render switch to show timeout UI - Propagate the event through existing onEvent callback - Add comprehensive tests covering all scenarios Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: fix lint and formatting for PR #1692 - Remove unused 'waitFor' import from OidcProvider.spec.tsx - Fix prettier formatting in OidcProvider.spec.tsx and OidcProvider.tsx Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/oidc-client/src/events.ts | 1 + packages/oidc-client/src/types.ts | 1 + packages/react-oidc/src/OidcProvider.spec.tsx | 279 ++++++++++++++++++ packages/react-oidc/src/OidcProvider.tsx | 34 +++ .../LoadingTimeout.component.tsx | 14 + .../src/core/default-component/index.ts | 1 + 6 files changed, 330 insertions(+) create mode 100644 packages/react-oidc/src/OidcProvider.spec.tsx create mode 100644 packages/react-oidc/src/core/default-component/LoadingTimeout.component.tsx diff --git a/packages/oidc-client/src/events.ts b/packages/oidc-client/src/events.ts index bd36726c9..7e2dfc6f1 100644 --- a/packages/oidc-client/src/events.ts +++ b/packages/oidc-client/src/events.ts @@ -27,4 +27,5 @@ export const eventNames = { syncTokensAsync_end: 'syncTokensAsync_end', syncTokensAsync_error: 'syncTokensAsync_error', tokensInvalidAndWaitingActionsToRefresh: 'tokensInvalidAndWaitingActionsToRefresh', + loadingTimeout_error: 'loadingTimeout_error', }; diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index be6806fc2..ac579ea62 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -46,6 +46,7 @@ export type OidcConfiguration = { demonstrating_proof_of_possession?: boolean; demonstrating_proof_of_possession_configuration?: DemonstratingProofOfPossessionConfiguration; preload_user_info?: boolean; + loading_timeout_ms?: number; }; export interface DemonstratingProofOfPossessionConfiguration { diff --git a/packages/react-oidc/src/OidcProvider.spec.tsx b/packages/react-oidc/src/OidcProvider.spec.tsx new file mode 100644 index 000000000..2df02635e --- /dev/null +++ b/packages/react-oidc/src/OidcProvider.spec.tsx @@ -0,0 +1,279 @@ +import { act, render, screen } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +let mockEventSubscribers: Array<{ id: string; func: (name: string, data: any) => void }> = []; +const mockPublishEvent = vi.fn((eventName, data) => { + mockEventSubscribers.forEach(sub => sub.func(eventName, data)); +}); +const mockSubscribeEvents = vi.fn(func => { + const id = Math.random().toString(); + mockEventSubscribers.push({ id, func }); + return id; +}); +const mockRemoveEventSubscription = vi.fn(id => { + mockEventSubscribers = mockEventSubscribers.filter(e => e.id !== id); +}); + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { + getOrCreate: vi.fn(() => () => ({ + subscribeEvents: mockSubscribeEvents, + removeEventSubscription: mockRemoveEventSubscription, + publishEvent: mockPublishEvent, + configuration: { + redirect_uri: 'http://localhost/callback', + silent_redirect_uri: 'http://localhost/silent-callback', + silent_login_uri: 'http://localhost/silent-login', + }, + tryKeepExistingSessionAsync: vi.fn().mockResolvedValue(true), + })), + get: vi.fn(() => ({ + subscribeEvents: mockSubscribeEvents, + removeEventSubscription: mockRemoveEventSubscription, + publishEvent: mockPublishEvent, + configuration: { + redirect_uri: 'http://localhost/callback', + silent_redirect_uri: 'http://localhost/silent-callback', + silent_login_uri: 'http://localhost/silent-login', + }, + tryKeepExistingSessionAsync: vi.fn().mockResolvedValue(true), + })), + eventNames: { + service_worker_not_supported_by_browser: 'service_worker_not_supported_by_browser', + token_acquired: 'token_acquired', + logout_from_another_tab: 'logout_from_another_tab', + logout_from_same_tab: 'logout_from_same_tab', + token_renewed: 'token_renewed', + token_timer: 'token_timer', + loginAsync_begin: 'loginAsync_begin', + loginAsync_error: 'loginAsync_error', + loginCallbackAsync_begin: 'loginCallbackAsync_begin', + loginCallbackAsync_end: 'loginCallbackAsync_end', + loginCallbackAsync_error: 'loginCallbackAsync_error', + refreshTokensAsync_begin: 'refreshTokensAsync_begin', + refreshTokensAsync: 'refreshTokensAsync', + refreshTokensAsync_end: 'refreshTokensAsync_end', + refreshTokensAsync_error: 'refreshTokensAsync_error', + refreshTokensAsync_silent_error: 'refreshTokensAsync_silent_error', + tryKeepExistingSessionAsync_begin: 'tryKeepExistingSessionAsync_begin', + tryKeepExistingSessionAsync_end: 'tryKeepExistingSessionAsync_end', + tryKeepExistingSessionAsync_error: 'tryKeepExistingSessionAsync_error', + silentLoginAsync_begin: 'silentLoginAsync_begin', + silentLoginAsync: 'silentLoginAsync', + silentLoginAsync_end: 'silentLoginAsync_end', + silentLoginAsync_error: 'silentLoginAsync_error', + syncTokensAsync_begin: 'syncTokensAsync_begin', + syncTokensAsync_lock_not_available: 'syncTokensAsync_lock_not_available', + syncTokensAsync_end: 'syncTokensAsync_end', + syncTokensAsync_error: 'syncTokensAsync_error', + tokensInvalidAndWaitingActionsToRefresh: 'tokensInvalidAndWaitingActionsToRefresh', + loadingTimeout_error: 'loadingTimeout_error', + }, + }, + OidcLocation: class { + getCurrentHref() { + return 'http://localhost/'; + } + getPath() { + return '/'; + } + open() {} + reload() {} + getOrigin() { + return 'http://localhost'; + } + }, + getFetchDefault: vi.fn(() => fetch), +})); + +vi.mock('./core/routes/OidcRoutes.js', () => ({ + default: ({ children }: any) =>
{children}
, +})); + +import { OidcProvider } from './OidcProvider'; + +describe('OidcProvider loading timeout', () => { + beforeEach(() => { + vi.useFakeTimers(); + vi.clearAllMocks(); + mockEventSubscribers = []; + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + const baseConfiguration = { + client_id: 'test-client', + redirect_uri: 'http://localhost/callback', + silent_redirect_uri: 'http://localhost/silent-callback', + scope: 'openid', + authority: 'http://localhost/authority', + }; + + it('should fire loadingTimeout_error when stuck in initial loading state', async () => { + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(100); + }); + + expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 100 }); + }); + + it('should fire loadingTimeout_error when stuck in loginAsync_begin state', async () => { + render( + +
App
+
, + ); + + // Simulate loginAsync_begin event + act(() => { + mockEventSubscribers.forEach(sub => sub.func('loginAsync_begin', {})); + }); + + // Reset to track timeout event specifically + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(200); + }); + + expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 200 }); + }); + + it('should render loadingTimeoutComponent when loadingTimeout_error is triggered', async () => { + const CustomTimeoutComponent = () =>
Timeout!
; + + render( + +
App
+
, + ); + + await act(async () => { + vi.advanceTimersByTime(50); + }); + + expect(screen.getByTestId('custom-timeout')).toBeTruthy(); + }); + + it('should NOT fire loadingTimeout_error when loading_timeout_ms is 0 (disabled)', async () => { + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(60_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should NOT fire loadingTimeout_error when loading_timeout_ms is negative (disabled)', async () => { + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(60_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should NOT fire loadingTimeout_error if provider leaves loading state before deadline', async () => { + render( + +
App
+
, + ); + + // Advance partway + act(() => { + vi.advanceTimersByTime(200); + }); + + // Simulate successful callback (leaving loading state) + act(() => { + mockEventSubscribers.forEach(sub => sub.func('loginCallbackAsync_end', {})); + }); + + mockPublishEvent.mockClear(); + + // Advance past original timeout + act(() => { + vi.advanceTimersByTime(500); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should use default timeout of 30000ms when loading_timeout_ms is not configured', async () => { + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(29_999); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + + act(() => { + vi.advanceTimersByTime(1); + }); + + expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 30_000 }); + }); + + it('should propagate loadingTimeout_error through onEvent callback', async () => { + const onEvent = vi.fn(); + + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(100); + }); + + expect(onEvent).toHaveBeenCalledWith('default', 'loadingTimeout_error', { timeoutMs: 100 }); + }); +}); diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index 7149c6ae3..a4e7653aa 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -13,6 +13,7 @@ import { Authenticating, CallBackSuccess, Loading, + LoadingTimeout, SessionLost, } from './core/default-component/index.js'; import ServiceWorkerNotSupported from './core/default-component/ServiceWorkerNotSupported.component.js'; @@ -31,6 +32,7 @@ export type OidcProviderProps = { authenticatingComponent?: ComponentType; authenticatingErrorComponent?: ComponentType; loadingComponent?: ComponentType; + loadingTimeoutComponent?: ComponentType; serviceWorkerNotSupportedComponent?: ComponentType; configurationName?: string; configuration?: OidcConfiguration; @@ -84,6 +86,8 @@ const Switch = ({ isLoading, loadingComponent, children, configurationName }) => return <>{children}; }; +const DEFAULT_LOADING_TIMEOUT_MS = 30_000; + export const OidcProvider: FC> = ({ children, configuration, @@ -91,6 +95,7 @@ export const OidcProvider: FC> = ({ callbackSuccessComponent = CallBackSuccess, authenticatingComponent = Authenticating, loadingComponent = Loading, + loadingTimeoutComponent = LoadingTimeout, serviceWorkerNotSupportedComponent = ServiceWorkerNotSupported, authenticatingErrorComponent = AuthenticatingError, sessionLostComponent = SessionLost, @@ -155,6 +160,8 @@ export const OidcProvider: FC> = ({ onLogoutFromSameTab(); } // setEvent({name, data}); + } else if (name === OidcClient.eventNames.loadingTimeout_error) { + setEvent({ name, data }); } else if ( name === OidcClient.eventNames.loginAsync_begin || name === OidcClient.eventNames.loginCallbackAsync_end || @@ -181,9 +188,26 @@ export const OidcProvider: FC> = ({ }; }, [configuration, configurationName]); + useEffect(() => { + const timeoutMs = configuration?.loading_timeout_ms ?? DEFAULT_LOADING_TIMEOUT_MS; + if (timeoutMs <= 0) { + return; + } + const isStuck = event.name === '' || event.name === OidcClient.eventNames.loginAsync_begin; + if (!isStuck) { + return; + } + const timeoutId = setTimeout(() => { + const oidcInstance = getOidc(configurationName); + oidcInstance.publishEvent(OidcClient.eventNames.loadingTimeout_error, { timeoutMs }); + }, timeoutMs); + return () => clearTimeout(timeoutId); + }, [event.name, configurationName, configuration]); + const SessionLostComponent = sessionLostComponent; const AuthenticatingComponent = authenticatingComponent; const LoadingComponent = loadingComponent; + const LoadingTimeoutComponent = loadingTimeoutComponent; const ServiceWorkerNotSupportedComponent = serviceWorkerNotSupportedComponent; const AuthenticatingErrorComponent = authenticatingErrorComponent; @@ -211,6 +235,16 @@ export const OidcProvider: FC> = ({ ); + case OidcClient.eventNames.loadingTimeout_error: + return ( + + + + ); case OidcClient.eventNames.loginAsync_error: case OidcClient.eventNames.loginCallbackAsync_error: return ( diff --git a/packages/react-oidc/src/core/default-component/LoadingTimeout.component.tsx b/packages/react-oidc/src/core/default-component/LoadingTimeout.component.tsx new file mode 100644 index 000000000..97e04f481 --- /dev/null +++ b/packages/react-oidc/src/core/default-component/LoadingTimeout.component.tsx @@ -0,0 +1,14 @@ +import { ComponentType } from 'react'; + +const LoadingTimeout: ComponentType = () => ( +
+
+

Loading timeout

+

+ Authentication is taking longer than expected. Please try refreshing the page. +

+
+
+); + +export default LoadingTimeout; diff --git a/packages/react-oidc/src/core/default-component/index.ts b/packages/react-oidc/src/core/default-component/index.ts index 7a441ad7c..e42898e17 100644 --- a/packages/react-oidc/src/core/default-component/index.ts +++ b/packages/react-oidc/src/core/default-component/index.ts @@ -2,5 +2,6 @@ export { default as AuthenticateError } from './AuthenticateError.component.js'; export { default as Authenticating } from './Authenticating.component.js'; export { default as Callback, CallBackSuccess } from './Callback.component.js'; export { default as Loading } from './Loading.component.js'; +export { default as LoadingTimeout } from './LoadingTimeout.component.js'; export { default as ServiceWorkerNotSupported } from './ServiceWorkerNotSupported.component.js'; export { default as SessionLost } from './SessionLost.component.js'; From 82ecdbe8991e5cab24e556b2fd62e2af7fb572a3 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:28:29 +0000 Subject: [PATCH 493/565] [skip ci] Update to version 7.27.13 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 33b5f5c69..575d2cef1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.12", + "version": "7.27.13", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 0d71e8c26..7ed03a6ff 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.12'; +export default '7.27.13'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 2c3defb36..0dc12986b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.12", + "version": "7.27.13", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 0d71e8c26..7ed03a6ff 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.12'; +export default '7.27.13'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e57c764e4..c772a605d 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.12", + "version": "7.27.13", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 72a9c783937c4b9909ab7c70b573becd745870b8 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:28:30 +0000 Subject: [PATCH 494/565] [skip ci] Generate changelog to version 7.27.13 --- CHANGELOG.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 035e47c03..529bf1ed6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.12 +## 7.27.13 + +- [7b97a98](https://github.com/AxaFrance/oidc-client/commit/7b97a98f47b54ae4a9bc13dfc732c3e153dd8e60) - Auto fix for issue #1681: OidcProvider can sit in loading/authenticating indefinitely with no timeout event (#1692) (release), 2026-06-16 by *Guillaume Chervet* + + +## v7.27.12 - [db7af26](https://github.com/AxaFrance/oidc-client/commit/db7af26e7979da303bc5d70df28a56854b8d5f3e) - Document and expose the public service worker message protocol (#1694) (release), 2026-06-16 by *Guillaume Chervet* @@ -314,13 +319,3 @@ - [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* -## v7.22.17 - -- [b099078](https://github.com/AxaFrance/oidc-client/commit/b099078f9d4b61dffd03034f511a4f32e80977a8) - fix(oidc): clenup client internal promises when requests are finished (release) (#1417), 2024-07-15 by *wermanoid* -- [01f0714](https://github.com/AxaFrance/oidc-client/commit/01f0714241e6442e6b58fcba8b86804ed75cec09) - tests(domain): Be more explicit about intent of test, is to not throw, not return undefined. (#1413), 2024-07-15 by *Jason Finch* -- [b94fa5c](https://github.com/AxaFrance/oidc-client/commit/b94fa5ca90bd366c4f59a870c428f42872bfacaa) - docs: Minor language change. (#1412), 2024-07-15 by *Jason Finch* -- [7caee91](https://github.com/AxaFrance/oidc-client/commit/7caee919b4854526dad83203216965746baecabe) - build(job): Update job scripts to v4. (earlier versions are marked deprecated) (#1411), 2024-07-15 by *Jason Finch* -- [a46b1aa](https://github.com/AxaFrance/oidc-client/commit/a46b1aabe19db70beac342c557ae2c986d16eae7) - fix (FetchToken): Fix FetchToken param to be boolean (#1414), 2024-07-15 by *Jason Finch* -- [a989ed2](https://github.com/AxaFrance/oidc-client/commit/a989ed29f46b66483bc2c7c51e73bcc19b2c9736) - build(lint): Update lint step to run. (#1409), 2024-07-13 by *Jason Finch* - - From 416a1b52c64e8d9c764f605f19c8a21fe3a5f467 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 16 Jun 2026 11:29:37 +0200 Subject: [PATCH 495/565] Auto fix for issue #1682: CallbackManager: no observable signal that post-callback navigation has committed (Safari edge case) (#1691) (release) * Auto fix for issue #1682: evolution * fix: auto-fix lint formatting errors Applied eslint --fix to resolve formatting issues in: - Callback.component.tsx (arrow function parentheses, line wrapping) - Callback.component.spec.tsx (import formatting, JSX formatting) - index.ts (trailing formatting) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: GnOuGo Agent Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/oidc-client/src/events.ts | 2 + packages/react-oidc/src/OidcProvider.tsx | 3 + .../Callback.component.spec.tsx | 248 ++++++++++++++++++ .../default-component/Callback.component.tsx | 65 ++++- .../react-oidc/src/core/routes/OidcRoutes.tsx | 3 + packages/react-oidc/src/index.ts | 1 + 6 files changed, 319 insertions(+), 3 deletions(-) create mode 100644 packages/react-oidc/src/core/default-component/Callback.component.spec.tsx diff --git a/packages/oidc-client/src/events.ts b/packages/oidc-client/src/events.ts index 7e2dfc6f1..c66d4b4a1 100644 --- a/packages/oidc-client/src/events.ts +++ b/packages/oidc-client/src/events.ts @@ -10,6 +10,8 @@ export const eventNames = { loginCallbackAsync_begin: 'loginCallbackAsync_begin', loginCallbackAsync_end: 'loginCallbackAsync_end', loginCallbackAsync_error: 'loginCallbackAsync_error', + loginCallbackAsync_navigated: 'loginCallbackAsync_navigated', + loginCallbackAsync_navigation_error: 'loginCallbackAsync_navigation_error', refreshTokensAsync_begin: 'refreshTokensAsync_begin', refreshTokensAsync: 'refreshTokensAsync', refreshTokensAsync_end: 'refreshTokensAsync_end', diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index a4e7653aa..fc10013b7 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -41,6 +41,7 @@ export type OidcProviderProps = { onLogoutFromAnotherTab?: () => void; onLogoutFromSameTab?: () => void; withCustomHistory?: () => CustomHistory; + navigateAfterCallback?: (callbackPath: string) => Promise; onEvent?: (configuration: string, name: string, data: any) => void; getFetch?: () => Fetch; location?: ILOidcLocation; @@ -103,6 +104,7 @@ export const OidcProvider: FC> = ({ onLogoutFromAnotherTab = null, onLogoutFromSameTab = null, withCustomHistory = null, + navigateAfterCallback = null, onEvent = null, getFetch = null, location = null, @@ -284,6 +286,7 @@ export const OidcProvider: FC> = ({ authenticatingComponent={authenticatingComponent} configurationName={configurationName} withCustomHistory={withCustomHistory} + navigateAfterCallback={navigateAfterCallback} location={location ?? new OidcLocation()} > diff --git a/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx b/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx new file mode 100644 index 000000000..9622d01f8 --- /dev/null +++ b/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx @@ -0,0 +1,248 @@ +import { act, render, waitFor } from '@testing-library/react'; +import React from 'react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import CallbackManager, { CallBackSuccess, verifyNavigationCommitted } from './Callback.component'; + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { + get: vi.fn(), + eventNames: { + loginCallbackAsync_navigated: 'loginCallbackAsync_navigated', + loginCallbackAsync_navigation_error: 'loginCallbackAsync_navigation_error', + }, + }, +})); + +vi.mock('../routes/withRouter.js', () => ({ + getCustomHistory: vi.fn(), +})); + +import { OidcClient } from '@axa-fr/oidc-client'; + +import { getCustomHistory } from '../routes/withRouter.js'; + +describe('verifyNavigationCommitted', () => { + it('should return true when current path matches target path', () => { + const windowMock = { location: { pathname: '/dashboard' } } as Window; + expect(verifyNavigationCommitted('/dashboard', windowMock)).toBe(true); + }); + + it('should return false when current path does not match target path', () => { + const windowMock = { location: { pathname: '/callback' } } as Window; + expect(verifyNavigationCommitted('/dashboard', windowMock)).toBe(false); + }); + + it('should return true when target path is root', () => { + const windowMock = { location: { pathname: '/anything' } } as Window; + expect(verifyNavigationCommitted('/', windowMock)).toBe(true); + }); +}); + +describe('CallBackSuccess', () => { + it('renders the success message', () => { + const { getByText } = render(); + expect(getByText('Authentication complete')).toBeTruthy(); + expect(getByText('You will be redirected to your application.')).toBeTruthy(); + }); +}); + +describe('CallbackManager', () => { + let mockPublishEvent: ReturnType; + let mockLoginCallbackAsync: ReturnType; + let mockReplaceState: ReturnType; + + beforeEach(() => { + vi.useFakeTimers(); + mockPublishEvent = vi.fn(); + mockLoginCallbackAsync = vi.fn(); + mockReplaceState = vi.fn(); + + (OidcClient.get as ReturnType).mockReturnValue({ + loginCallbackAsync: mockLoginCallbackAsync, + publishEvent: mockPublishEvent, + }); + + (getCustomHistory as ReturnType).mockReturnValue({ + replaceState: mockReplaceState, + }); + }); + + afterEach(() => { + vi.useRealTimers(); + vi.clearAllMocks(); + }); + + it('should use navigateAfterCallback when provided and emit navigated event on success', async () => { + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/dashboard' }); + const navigateAfterCallback = vi.fn().mockResolvedValue(undefined); + + await act(async () => { + render( + , + ); + }); + + expect(navigateAfterCallback).toHaveBeenCalledWith('/dashboard'); + expect(mockPublishEvent).toHaveBeenCalledWith('loginCallbackAsync_navigated', { + configurationName: 'default', + callbackPath: '/dashboard', + }); + }); + + it('should emit navigation_error event when navigateAfterCallback rejects', async () => { + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/dashboard' }); + const navError = new Error('Navigation failed'); + const navigateAfterCallback = vi.fn().mockRejectedValue(navError); + + await act(async () => { + render( + , + ); + }); + + expect(mockPublishEvent).toHaveBeenCalledWith('loginCallbackAsync_navigation_error', { + configurationName: 'default', + callbackPath: '/dashboard', + error: navError, + }); + }); + + it('should render error component when navigateAfterCallback fails', async () => { + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/dashboard' }); + const navigateAfterCallback = vi.fn().mockRejectedValue(new Error('fail')); + + const ErrorComponent = () =>
Error occurred
; + + let container; + await act(async () => { + const result = render( + , + ); + container = result.container; + }); + + expect(container.textContent).toContain('Error occurred'); + }); + + it('should use default history navigation when navigateAfterCallback is not provided', async () => { + vi.useRealTimers(); + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/dashboard' }); + + // Mock window.location to simulate successful navigation + Object.defineProperty(window, 'location', { + value: { pathname: '/dashboard' }, + writable: true, + }); + + await act(async () => { + render(); + // Wait for the verification delay to pass + await new Promise(resolve => setTimeout(resolve, 300)); + }); + + expect(mockReplaceState).toHaveBeenCalledWith('/dashboard'); + + await waitFor(() => { + expect(mockPublishEvent).toHaveBeenCalledWith('loginCallbackAsync_navigated', { + configurationName: 'default', + callbackPath: '/dashboard', + }); + }); + }); + + it('should emit navigation_error when default navigation does not commit', async () => { + vi.useRealTimers(); + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/dashboard' }); + + // Mock window.location to simulate failed navigation + Object.defineProperty(window, 'location', { + value: { pathname: '/callback' }, + writable: true, + }); + + await act(async () => { + render(); + // Wait for the verification delay to pass + await new Promise(resolve => setTimeout(resolve, 300)); + }); + + await waitFor(() => { + expect(mockPublishEvent).toHaveBeenCalledWith( + 'loginCallbackAsync_navigation_error', + expect.objectContaining({ + configurationName: 'default', + callbackPath: '/dashboard', + }), + ); + }); + }); + + it('should use "/" as fallback when callbackPath is empty', async () => { + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '' }); + const navigateAfterCallback = vi.fn().mockResolvedValue(undefined); + + await act(async () => { + render( + , + ); + }); + + expect(navigateAfterCallback).toHaveBeenCalledWith('/'); + }); + + it('should use withCustomHistory when provided and no navigateAfterCallback', async () => { + mockLoginCallbackAsync.mockResolvedValue({ callbackPath: '/profile' }); + const customReplaceState = vi.fn(); + const withCustomHistory = vi.fn().mockReturnValue({ replaceState: customReplaceState }); + + Object.defineProperty(window, 'location', { + value: { pathname: '/' }, + writable: true, + }); + + await act(async () => { + render(); + }); + + expect(withCustomHistory).toHaveBeenCalled(); + expect(customReplaceState).toHaveBeenCalledWith('/profile'); + }); + + it('should set error state when loginCallbackAsync throws', async () => { + mockLoginCallbackAsync.mockRejectedValue(new Error('login error')); + + const ErrorComponent = () =>
Login Error
; + + let container; + await act(async () => { + const result = render( + , + ); + container = result.container; + }); + + expect(container.textContent).toContain('Login Error'); + }); + + it('should render success component by default', () => { + mockLoginCallbackAsync.mockReturnValue(new Promise(() => {})); // never resolves + + const { getByText } = render(); + + expect(getByText('Authentication complete')).toBeTruthy(); + }); +}); diff --git a/packages/react-oidc/src/core/default-component/Callback.component.tsx b/packages/react-oidc/src/core/default-component/Callback.component.tsx index a9b2bc230..a1edfc922 100644 --- a/packages/react-oidc/src/core/default-component/Callback.component.tsx +++ b/packages/react-oidc/src/core/default-component/Callback.component.tsx @@ -13,11 +13,22 @@ export const CallBackSuccess: ComponentType = () => (
); +const NAVIGATION_VERIFICATION_DELAY_MS = 200; + +export const verifyNavigationCommitted = ( + targetPath: string, + windowInternal: Window = window, +): boolean => { + const currentPath = windowInternal.location.pathname; + return currentPath === targetPath || targetPath === '/'; +}; + const CallbackManager: ComponentType = ({ callBackError, callBackSuccess, configurationName, withCustomHistory, + navigateAfterCallback, }) => { const [isError, setIsError] = useState(false); useEffect(() => { @@ -25,9 +36,57 @@ const CallbackManager: ComponentType = ({ const playCallbackAsync = async () => { const getOidc = OidcClient.get; try { - const { callbackPath } = await getOidc(configurationName).loginCallbackAsync(); - const history = withCustomHistory ? withCustomHistory() : getCustomHistory(); - history.replaceState(callbackPath || '/'); + const oidcClient = getOidc(configurationName); + const { callbackPath } = await oidcClient.loginCallbackAsync(); + const targetPath = callbackPath || '/'; + + if (navigateAfterCallback) { + try { + await navigateAfterCallback(targetPath); + oidcClient.publishEvent(OidcClient.eventNames.loginCallbackAsync_navigated, { + configurationName, + callbackPath: targetPath, + }); + } catch (navigationError) { + oidcClient.publishEvent(OidcClient.eventNames.loginCallbackAsync_navigation_error, { + configurationName, + callbackPath: targetPath, + error: navigationError, + }); + if (isMounted) { + console.warn(navigationError); + setIsError(true); + } + } + } else { + const history = withCustomHistory ? withCustomHistory() : getCustomHistory(); + history.replaceState(targetPath); + + await new Promise(resolve => { + setTimeout(() => { + resolve(); + }, NAVIGATION_VERIFICATION_DELAY_MS); + }); + + if (isMounted) { + const committed = verifyNavigationCommitted(targetPath); + if (committed) { + oidcClient.publishEvent(OidcClient.eventNames.loginCallbackAsync_navigated, { + configurationName, + callbackPath: targetPath, + }); + } else { + oidcClient.publishEvent(OidcClient.eventNames.loginCallbackAsync_navigation_error, { + configurationName, + callbackPath: targetPath, + error: new Error( + `Navigation did not commit: expected "${targetPath}" but found "${window.location.pathname}"`, + ), + }); + setIsError(true); + } + } + } } catch (error) { if (isMounted) { console.warn(error); diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.tsx index 7c5dc9d8f..1fad9bf2d 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.tsx @@ -15,6 +15,7 @@ type OidcRoutesProps = { silent_redirect_uri?: string; silent_login_uri?: string; withCustomHistory?: () => CustomHistory; + navigateAfterCallback?: (callbackPath: string) => Promise; location: ILOidcLocation; }; @@ -27,6 +28,7 @@ const OidcRoutes: FC> = ({ children, configurationName, withCustomHistory = null, + navigateAfterCallback = null, }) => { // This exist because in next.js window outside useEffect is null const pathname = window ? getPath(window.location.href) : ''; @@ -62,6 +64,7 @@ const OidcRoutes: FC> = ({ callBackSuccess={callbackSuccessComponent} configurationName={configurationName} withCustomHistory={withCustomHistory} + navigateAfterCallback={navigateAfterCallback} /> ); default: diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index 6eabe6121..cccd35649 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -1,4 +1,5 @@ export { useOidcFetch, withOidcFetch } from './FetchToken.js'; +export type { OidcProviderProps } from './OidcProvider.js'; export { OidcProvider } from './OidcProvider.js'; export { OidcSecure, withOidcSecure } from './OidcSecure.js'; export { useOidc, useOidcAccessToken, useOidcIdToken } from './ReactOidc.js'; From 5563fdb983a67da26b5c948d69cd8b64fa80b8df Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:31:21 +0000 Subject: [PATCH 496/565] [skip ci] Update to version 7.27.14 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 575d2cef1..234c8311d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.13", + "version": "7.27.14", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7ed03a6ff..5aac85b91 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.13'; +export default '7.27.14'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 0dc12986b..fa66495ae 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.13", + "version": "7.27.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7ed03a6ff..5aac85b91 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.13'; +export default '7.27.14'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index c772a605d..f940e80b0 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.13", + "version": "7.27.14", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e05d1e2282938b93a7ca2810750bbc8fab678ddd Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jun 2026 09:31:23 +0000 Subject: [PATCH 497/565] [skip ci] Generate changelog to version 7.27.14 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 529bf1ed6..6b3e9ba81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.13 +## 7.27.14 + +- [416a1b5](https://github.com/AxaFrance/oidc-client/commit/416a1b52c64e8d9c764f605f19c8a21fe3a5f467) - Auto fix for issue #1682: CallbackManager: no observable signal that post-callback navigation has committed (Safari edge case) (#1691) (release), 2026-06-16 by *Guillaume Chervet* + + +## v7.27.13 - [7b97a98](https://github.com/AxaFrance/oidc-client/commit/7b97a98f47b54ae4a9bc13dfc732c3e153dd8e60) - Auto fix for issue #1681: OidcProvider can sit in loading/authenticating indefinitely with no timeout event (#1692) (release), 2026-06-16 by *Guillaume Chervet* @@ -314,8 +319,3 @@ - [cd2f57e](https://github.com/AxaFrance/oidc-client/commit/cd2f57edb99e04495b9884723cd05277a45aad43) - fix(demo): Update configurations.ts, 2024-07-16 by *Guillaume Chervet* -## v7.22.18 - -- [5ee0cc8](https://github.com/AxaFrance/oidc-client/commit/5ee0cc8f6d823056da221ad081c3821ba9fac343) - fix(oidc): separate state, nonce and codeVerifier for each tab (release) (#1402), 2024-07-16 by *Miya* - - From e4cd2bd885f404bedaa66200d10c6145f403823a Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sun, 21 Jun 2026 15:04:16 +0200 Subject: [PATCH 498/565] Fix issue #1696: loadingTimeout_error fires on authenticated/idle state after a silent session restore (regression from #1681 / #1692) (#1697) (release) Co-authored-by: GnOuGo Agent --- packages/react-oidc/src/OidcProvider.spec.tsx | 165 +++++++++++++++--- packages/react-oidc/src/OidcProvider.tsx | 43 ++++- 2 files changed, 183 insertions(+), 25 deletions(-) diff --git a/packages/react-oidc/src/OidcProvider.spec.tsx b/packages/react-oidc/src/OidcProvider.spec.tsx index 2df02635e..d37ea61eb 100644 --- a/packages/react-oidc/src/OidcProvider.spec.tsx +++ b/packages/react-oidc/src/OidcProvider.spec.tsx @@ -14,30 +14,30 @@ const mockRemoveEventSubscription = vi.fn(id => { mockEventSubscribers = mockEventSubscribers.filter(e => e.id !== id); }); +const mockOidcInstance: { + subscribeEvents: typeof mockSubscribeEvents; + removeEventSubscription: typeof mockRemoveEventSubscription; + publishEvent: typeof mockPublishEvent; + configuration: Record; + tryKeepExistingSessionAsync: ReturnType; + tokens: unknown; +} = { + subscribeEvents: mockSubscribeEvents, + removeEventSubscription: mockRemoveEventSubscription, + publishEvent: mockPublishEvent, + configuration: { + redirect_uri: 'http://localhost/callback', + silent_redirect_uri: 'http://localhost/silent-callback', + silent_login_uri: 'http://localhost/silent-login', + }, + tryKeepExistingSessionAsync: vi.fn().mockResolvedValue(true), + tokens: null, +}; + vi.mock('@axa-fr/oidc-client', () => ({ OidcClient: { - getOrCreate: vi.fn(() => () => ({ - subscribeEvents: mockSubscribeEvents, - removeEventSubscription: mockRemoveEventSubscription, - publishEvent: mockPublishEvent, - configuration: { - redirect_uri: 'http://localhost/callback', - silent_redirect_uri: 'http://localhost/silent-callback', - silent_login_uri: 'http://localhost/silent-login', - }, - tryKeepExistingSessionAsync: vi.fn().mockResolvedValue(true), - })), - get: vi.fn(() => ({ - subscribeEvents: mockSubscribeEvents, - removeEventSubscription: mockRemoveEventSubscription, - publishEvent: mockPublishEvent, - configuration: { - redirect_uri: 'http://localhost/callback', - silent_redirect_uri: 'http://localhost/silent-callback', - silent_login_uri: 'http://localhost/silent-login', - }, - tryKeepExistingSessionAsync: vi.fn().mockResolvedValue(true), - })), + getOrCreate: vi.fn(() => () => mockOidcInstance), + get: vi.fn(() => mockOidcInstance), eventNames: { service_worker_not_supported_by_browser: 'service_worker_not_supported_by_browser', token_acquired: 'token_acquired', @@ -97,6 +97,7 @@ describe('OidcProvider loading timeout', () => { vi.useFakeTimers(); vi.clearAllMocks(); mockEventSubscribers = []; + mockOidcInstance.tokens = null; }); afterEach(() => { @@ -257,6 +258,126 @@ describe('OidcProvider loading timeout', () => { expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 30_000 }); }); + it('should NOT fire loadingTimeout_error after a silent session restore when authenticated', async () => { + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(100); + }); + + // Simulate a successful silent session restore (no loginCallbackAsync_end is emitted). + act(() => { + mockEventSubscribers.forEach(sub => + sub.func('tryKeepExistingSessionAsync_end', { success: true }), + ); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(10_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should still fire loadingTimeout_error when silent session restore reports no existing session', async () => { + render( + +
App
+
, + ); + + act(() => { + mockEventSubscribers.forEach(sub => + sub.func('tryKeepExistingSessionAsync_end', { success: false }), + ); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(300); + }); + + expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 300 }); + }); + + it('should NOT fire loadingTimeout_error when token_acquired fires before the deadline', async () => { + render( + +
App
+
, + ); + + act(() => { + mockEventSubscribers.forEach(sub => sub.func('token_acquired', {})); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(10_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should NOT fire loadingTimeout_error when token_renewed fires before the deadline', async () => { + render( + +
App
+
, + ); + + act(() => { + mockEventSubscribers.forEach(sub => sub.func('token_renewed', {})); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(10_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should NOT arm the watchdog when the OIDC client mounts already authenticated', async () => { + mockOidcInstance.tokens = { accessToken: 'existing-token' }; + + render( + +
App
+
, + ); + + act(() => { + vi.advanceTimersByTime(60_000); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + it('should propagate loadingTimeout_error through onEvent callback', async () => { const onEvent = vi.fn(); diff --git a/packages/react-oidc/src/OidcProvider.tsx b/packages/react-oidc/src/OidcProvider.tsx index fc10013b7..20dd529d6 100644 --- a/packages/react-oidc/src/OidcProvider.tsx +++ b/packages/react-oidc/src/OidcProvider.tsx @@ -89,6 +89,30 @@ const Switch = ({ isLoading, loadingComponent, children, configurationName }) => const DEFAULT_LOADING_TIMEOUT_MS = 30_000; +/** + * Returns true when an event signals that the OIDC client has reached an + * authenticated, idle state and the loading watchdog should be disarmed. + * + * The default `event.name === ''` state in {@link OidcProvider} is overloaded: + * it represents both "not started yet" and "done and idle". A silent session + * restore via `tryKeepExistingSessionAsync` does not emit + * `loginCallbackAsync_end`, so without these explicit ready signals the + * watchdog would fire against a fully authenticated app. + */ +const isReadySignal = (name: string, data: unknown): boolean => { + if ( + name === OidcClient.eventNames.token_acquired || + name === OidcClient.eventNames.token_renewed || + name === OidcClient.eventNames.loginCallbackAsync_end + ) { + return true; + } + if (name === OidcClient.eventNames.tryKeepExistingSessionAsync_end) { + return (data as { success?: boolean } | null)?.success === true; + } + return false; +}; + export const OidcProvider: FC> = ({ children, configuration, @@ -124,6 +148,7 @@ export const OidcProvider: FC> = ({ const loading = false; const [event, setEvent] = useState(defaultEventState); + const [isAuthenticatedAndIdle, setIsAuthenticatedAndIdle] = useState(false); const [currentConfigurationName, setConfigurationName] = useState(configurationName); useEffect(() => { @@ -142,6 +167,9 @@ export const OidcProvider: FC> = ({ useEffect(() => { const oidc = getOidc(configurationName); const newSubscriptionId = oidc.subscribeEvents((name, data) => { + if (isReadySignal(name, data)) { + setIsAuthenticatedAndIdle(true); + } if ( name === OidcClient.eventNames.refreshTokensAsync_error || name === OidcClient.eventNames.syncTokensAsync_error @@ -187,6 +215,7 @@ export const OidcProvider: FC> = ({ const previousOidc = getOidc(configurationName); previousOidc.removeEventSubscription(newSubscriptionId); setEvent(defaultEventState); + setIsAuthenticatedAndIdle(false); }; }, [configuration, configurationName]); @@ -195,16 +224,24 @@ export const OidcProvider: FC> = ({ if (timeoutMs <= 0) { return; } + if (isAuthenticatedAndIdle) { + return; + } + const oidcInstance = getOidc(configurationName); + if (oidcInstance?.tokens != null) { + return; + } const isStuck = event.name === '' || event.name === OidcClient.eventNames.loginAsync_begin; if (!isStuck) { return; } const timeoutId = setTimeout(() => { - const oidcInstance = getOidc(configurationName); - oidcInstance.publishEvent(OidcClient.eventNames.loadingTimeout_error, { timeoutMs }); + getOidc(configurationName).publishEvent(OidcClient.eventNames.loadingTimeout_error, { + timeoutMs, + }); }, timeoutMs); return () => clearTimeout(timeoutId); - }, [event.name, configurationName, configuration]); + }, [event.name, isAuthenticatedAndIdle, configurationName, configuration]); const SessionLostComponent = sessionLostComponent; const AuthenticatingComponent = authenticatingComponent; From 0d977d1c38f4ab02fc4a91e523b2b57fef1c5153 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 21 Jun 2026 13:06:24 +0000 Subject: [PATCH 499/565] [skip ci] Update to version 7.27.15 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 234c8311d..d71d83497 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.14", + "version": "7.27.15", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 5aac85b91..2324f9cfe 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.14'; +export default '7.27.15'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index fa66495ae..5bf803d48 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.14", + "version": "7.27.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 5aac85b91..2324f9cfe 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.14'; +export default '7.27.15'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f940e80b0..3f6ed2a79 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.14", + "version": "7.27.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 373e0a091c8482b40a1a2121ffb0a8e6ef9091dc Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 21 Jun 2026 13:06:26 +0000 Subject: [PATCH 500/565] [skip ci] Generate changelog to version 7.27.15 --- CHANGELOG.md | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b3e9ba81..060e48179 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.14 +## 7.27.15 + +- [e4cd2bd](https://github.com/AxaFrance/oidc-client/commit/e4cd2bd885f404bedaa66200d10c6145f403823a) - Fix issue #1696: loadingTimeout_error fires on authenticated/idle state after a silent session restore (regression from #1681 / #1692) (#1697) (release), 2026-06-21 by *Guillaume Chervet* + + +## v7.27.14 - [416a1b5](https://github.com/AxaFrance/oidc-client/commit/416a1b52c64e8d9c764f605f19c8a21fe3a5f467) - Auto fix for issue #1682: CallbackManager: no observable signal that post-callback navigation has committed (Safari edge case) (#1691) (release), 2026-06-16 by *Guillaume Chervet* @@ -305,17 +310,3 @@ - [32a2af3](https://github.com/AxaFrance/oidc-client/commit/32a2af3028cd69581d1ab0ee183c7b3146998b41) - chore(lint): Fix lint warnings., 2024-07-21 by *Jason Finch* -## v7.22.19 - -- [2cf0b62](https://github.com/AxaFrance/oidc-client/commit/2cf0b6243b39f3927d75fb80a96030259b7c16a2) - fix(oidc): autorenew from custom fetch was broken (release), 2024-07-20 by *Guillaume Chervet* -- [f1d9da4](https://github.com/AxaFrance/oidc-client/commit/f1d9da44647d5b754df9c73cadb899179a98982b) - fix(oidc): lint (alpha), 2024-07-19 by *Guillaume Chervet* -- [e4f4d97](https://github.com/AxaFrance/oidc-client/commit/e4f4d9774acb94f968b566b69cb8f11581a76830) - chore: apply prettier in repo, 2024-07-18 by *Alex Werman* -- [02b00e0](https://github.com/AxaFrance/oidc-client/commit/02b00e075aeb8a291e1fc72b28ffe4eab1787db4) - fix(eslint): Fix ESLint to run prettier, 2024-07-17 by *Jason Finch* -- [9191b0c](https://github.com/AxaFrance/oidc-client/commit/9191b0c2f95491fd12cf93673bb468d9b6d61774) - chore(packages): Bump packages for eslint/prettier, 2024-07-17 by *Jason Finch* -- [a082b20](https://github.com/AxaFrance/oidc-client/commit/a082b20a943ab6322e69c00770d8ba86c9b8eaa2) - fix (Lint): Fix lint errors after rebase., 2024-07-17 by *Jason Finch* -- [f6cf194](https://github.com/AxaFrance/oidc-client/commit/f6cf194d9c14d7eba20f23a89e215bb9cc6cacd1) - refactor(silentcallback): Catch any errors in async playCallbackAsync, 2024-07-13 by *Jason Finch* -- [8797330](https://github.com/AxaFrance/oidc-client/commit/8797330ea5060a77b8d10a352ff166a33210f6aa) - refactor(lint): Fix minor lint issues, 2024-07-13 by *Jason Finch* -- [bb7bc92](https://github.com/AxaFrance/oidc-client/commit/bb7bc929f7a1bc4f1d210216d89fad881056990f) - fix (lint): Fix all lint errors reporting by eslint., 2024-07-12 by *Jason Finch* -- [cd2f57e](https://github.com/AxaFrance/oidc-client/commit/cd2f57edb99e04495b9884723cd05277a45aad43) - fix(demo): Update configurations.ts, 2024-07-16 by *Guillaume Chervet* - - From cb8fc88246229ee819a32a2164385ef05209b806 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 23 Jun 2026 21:26:24 +0200 Subject: [PATCH 501/565] Gracefully handle hooks outside OidcProvider and add test provider #1679 (#1698) (release) Co-authored-by: GnOuGo Agent --- packages/oidc-client/README.md | 18 +++- packages/oidc-client/src/oidc.ts | 33 ++++++- packages/oidc-client/src/oidcClient.spec.ts | 34 +++++++ packages/oidc-client/src/oidcClient.ts | 24 ++++- packages/react-oidc/README.md | 9 ++ packages/react-oidc/src/FetchToken.tsx | 4 +- packages/react-oidc/src/OidcSecure.tsx | 4 +- packages/react-oidc/src/ReactOidc.tsx | 57 +++++++++--- packages/react-oidc/src/User.ts | 12 ++- .../Callback.component.spec.tsx | 3 +- .../default-component/Callback.component.tsx | 2 +- .../SilentCallback.component.tsx | 2 +- .../SilentLogin.component.tsx | 2 +- .../src/hooksWithoutProvider.spec.tsx | 89 +++++++++++++++++++ .../src/warnMissingConfiguration.ts | 28 ++++++ 15 files changed, 292 insertions(+), 29 deletions(-) create mode 100644 packages/oidc-client/src/oidcClient.spec.ts create mode 100644 packages/react-oidc/src/hooksWithoutProvider.spec.tsx create mode 100644 packages/react-oidc/src/warnMissingConfiguration.ts diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index bf07c7f47..939dccf60 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -315,11 +315,23 @@ export class OidcClient { static getOrCreate(getFetch: () => Fetch)(configuration: OidcConfiguration, name?: string): OidcClient; /** - * Retrieves an existing OidcClient instance with the specified name, or creates a new instance if it does not exist. + * Retrieves an existing OidcClient instance with the specified name. + * Since issue #1679, this returns `null` when no instance has been + * initialized for the given name (instead of throwing). Use + * `OidcClient.getOrThrow` to preserve the previous fail-fast behaviour. * @param name The name of the OidcClient instance to retrieve. - * @returns The existing OidcClient instance or a new instance with the specified name. + * @returns The existing OidcClient instance, or null if none exists. */ - static get(name?: string): OidcClient; + static get(name?: string): OidcClient | null; + + /** + * Same as `OidcClient.get` but throws an explicit error when no instance + * has been initialized for the given name. Useful when you want to fail + * fast on misconfiguration. + * @param name The name of the OidcClient instance to retrieve. + * @returns The existing OidcClient instance. + */ + static getOrThrow(name?: string): OidcClient; /** * The names of the events supported by the Oidc class. diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 1bd4f8afe..8acaa2b01 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -183,13 +183,38 @@ export class Oidc { return oidcFactory(getFetch, location)(configuration, name); }; - static get(name = 'default') { - const isInsideBrowser = typeof process === 'undefined'; - if (!Object.prototype.hasOwnProperty.call(oidcDatabase, name) && isInsideBrowser) { + /** + * Retrieve an existing OIDC instance previously initialized via + * {@link Oidc.getOrCreate}. + * + * Since issue #1679, this method no longer throws when the requested + * configuration has not been initialized; it returns `null` instead. + * This makes hooks such as `useOidc`, `useOidcUser` and `useOidcIdToken` + * safe to call outside of an `` (e.g. in unit tests or + * Storybook stories). + * + * Use {@link Oidc.getOrThrow} to preserve the previous fail-fast + * behaviour. + */ + static get(name = 'default'): Oidc | null { + if (!Object.prototype.hasOwnProperty.call(oidcDatabase, name)) { + return null; + } + return oidcDatabase[name]; + } + + /** + * Retrieve an existing OIDC instance, throwing an explicit error if it + * has not been initialized. This preserves the historical (pre-#1679) + * fail-fast behaviour of `Oidc.get`. + */ + static getOrThrow(name = 'default'): Oidc { + const oidc = Oidc.get(name); + if (!oidc) { throw Error(`OIDC library does seem initialized. Please checkout that you are using OIDC hook inside a component.`); } - return oidcDatabase[name]; + return oidc; } static eventNames = eventNames; diff --git a/packages/oidc-client/src/oidcClient.spec.ts b/packages/oidc-client/src/oidcClient.spec.ts new file mode 100644 index 000000000..5830691bd --- /dev/null +++ b/packages/oidc-client/src/oidcClient.spec.ts @@ -0,0 +1,34 @@ +import { describe, expect, it } from 'vitest'; + +import { Oidc } from './oidc.js'; +import { OidcClient } from './oidcClient.js'; + +describe('OidcClient.get (issue #1679)', () => { + it('returns null when no configuration has been initialized', () => { + expect(OidcClient.get('unknown-configuration-1679')).toBeNull(); + }); + + it('does not throw when no configuration has been initialized', () => { + expect(() => OidcClient.get('another-unknown-configuration-1679')).not.toThrow(); + }); +}); + +describe('OidcClient.getOrThrow (issue #1679)', () => { + it('throws an explicit error when configuration has not been initialized', () => { + expect(() => OidcClient.getOrThrow('missing-configuration-1679')).toThrow( + /OIDC library does seem initialized/, + ); + }); +}); + +describe('Oidc.get (issue #1679)', () => { + it('returns null when no configuration has been initialized', () => { + expect(Oidc.get('unknown-oidc-1679')).toBeNull(); + }); + + it('Oidc.getOrThrow throws when configuration has not been initialized', () => { + expect(() => Oidc.getOrThrow('missing-oidc-1679')).toThrow( + /OIDC library does seem initialized/, + ); + }); +}); diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 0f8200784..851bfa51c 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -38,8 +38,28 @@ export class OidcClient { return new OidcClient(Oidc.getOrCreate(getFetch, location)(configuration, name)); }; - static get(name = 'default'): OidcClient { - return new OidcClient(Oidc.get(name)); + /** + * Retrieve an existing {@link OidcClient} by configuration name. + * + * Since issue #1679, this method returns `null` when the requested + * configuration has not been initialized, instead of throwing. This + * allows React hooks to be used safely outside of ``. + * + * Use {@link OidcClient.getOrThrow} to preserve the previous fail-fast + * behaviour. + */ + static get(name = 'default'): OidcClient | null { + const oidc = Oidc.get(name); + return oidc ? new OidcClient(oidc) : null; + } + + /** + * Retrieve an existing {@link OidcClient}, throwing if it has not been + * initialized. Equivalent to the pre-#1679 behaviour of + * {@link OidcClient.get}. + */ + static getOrThrow(name = 'default'): OidcClient { + return new OidcClient(Oidc.getOrThrow(name)); } static eventNames = Oidc.eventNames; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index f990aab06..bd9963042 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -281,6 +281,15 @@ const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPo ## How to consume +> **Note (issue #1679):** `useOidc`, `useOidcUser`, `useOidcAccessToken` and +> `useOidcIdToken` are safe to call **outside** of an `` (e.g. +> in unit tests or Storybook stories). When no provider is mounted, they +> emit a single `console.warn` per configuration name and return stable +> default values (`isAuthenticated: false`, `oidcUser: null`, +> `accessToken: null`, `idToken: null`, with no-op `login`/`logout`/ +> `renewTokens`/`reloadOidcUser`). Use `OidcClient.getOrThrow(name)` if you +> prefer the previous fail-fast behaviour. + "useOidc" returns all props from the Hook : ```javascript diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index 9463a61b9..abfb2777f 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -41,7 +41,9 @@ export const useOidcFetch = ( demonstratingProofOfPossession: boolean = false, ) => { const previousFetch = fetch || window.fetch; - const getOidc = OidcClient.get; + // useOidcFetch relies on an initialized OIDC configuration to attach + // the bearer token, so we keep the original fail-fast behaviour. + const getOidc = OidcClient.getOrThrow; const memoizedFetchCallback = useCallback( (input: RequestInfo | URL, init?: RequestInit) => { diff --git a/packages/react-oidc/src/OidcSecure.tsx b/packages/react-oidc/src/OidcSecure.tsx index 448959adc..8c52b5036 100644 --- a/packages/react-oidc/src/OidcSecure.tsx +++ b/packages/react-oidc/src/OidcSecure.tsx @@ -13,7 +13,9 @@ export const OidcSecure: FC> = ({ extras = null, configurationName = 'default', }) => { - const getOidc = OidcClient.get; + // Keep the previous fail-fast behaviour: this component cannot + // meaningfully render without an initialized OIDC configuration. + const getOidc = OidcClient.getOrThrow; const oidc = getOidc(configurationName); useEffect(() => { if (!oidc.tokens) { diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index ed38b416d..340b211ac 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,6 +1,8 @@ import { OidcClient, StringMap, Tokens } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; +import { warnMissingConfigurationOnce } from './warnMissingConfiguration.js'; + const defaultConfigurationName = 'default'; type GetOidcFn = { @@ -11,7 +13,7 @@ const defaultIsAuthenticated = (getOidc: GetOidcFn, configurationName: string) = let isAuthenticated = false; const oidc = getOidc(configurationName); if (oidc) { - isAuthenticated = getOidc(configurationName).tokens != null; + isAuthenticated = oidc.tokens != null; } return isAuthenticated; }; @@ -25,6 +27,12 @@ export const useOidc = (configurationName = defaultConfigurationName) => { useEffect(() => { let isMounted = true; const oidc = getOidc(configurationName); + // Hooks may be rendered outside of an (issue #1679): + // in that case `oidc` is null and we simply skip event subscription. + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return undefined; + } const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if ( @@ -48,25 +56,34 @@ export const useOidc = (configurationName = defaultConfigurationName) => { extras: StringMap | undefined = undefined, silentLoginOnly = false, scope: string = undefined, - ) => { - return getOidc(configurationName).loginAsync( - callbackPath, - extras, - false, - scope, - silentLoginOnly, - ); + ): Promise => { + const oidc = getOidc(configurationName); + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return Promise.resolve(); + } + return oidc.loginAsync(callbackPath, extras, false, scope, silentLoginOnly); }; const logout = ( callbackPath: string | null | undefined = undefined, extras: StringMap | undefined = undefined, - ) => { - return getOidc(configurationName).logoutAsync(callbackPath, extras); + ): Promise => { + const oidc = getOidc(configurationName); + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return Promise.resolve(); + } + return oidc.logoutAsync(callbackPath, extras); }; const renewTokens = async ( extras: StringMap | undefined = undefined, ): Promise => { - const tokens = await getOidc(configurationName).renewTokensAsync(extras); + const oidc = getOidc(configurationName); + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return { accessToken: null, accessTokenPayload: null, idToken: null, idTokenPayload: null }; + } + const tokens = await oidc.renewTokensAsync(extras); return { // @ts-ignore @@ -87,6 +104,9 @@ const accessTokenInitialState = { accessToken: null, accessTokenPayload: null }; const initTokens = (configurationName: string) => { const getOidc = OidcClient.get; const oidc = getOidc(configurationName); + if (!oidc) { + return accessTokenInitialState; + } if (oidc.tokens) { const tokens = oidc.tokens; return { @@ -122,6 +142,11 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) useEffect(() => { let isMounted = true; const oidc = getOidc(configurationName); + // No provider in the tree (issue #1679): keep the default token state. + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return undefined; + } const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if ( @@ -161,6 +186,9 @@ const initIdToken = (configurationName: string) => { const getOidc = OidcClient.get; const oidc = getOidc(configurationName); + if (!oidc) { + return idTokenInitialState; + } if (oidc.tokens) { const tokens = oidc.tokens; return { idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload }; @@ -180,6 +208,11 @@ export const useOidcIdToken = (configurationName = defaultConfigurationName) => useEffect(() => { let isMounted = true; const oidc = getOidc(configurationName); + // No provider in the tree (issue #1679): keep the default id-token state. + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return undefined; + } const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { if ( diff --git a/packages/react-oidc/src/User.ts b/packages/react-oidc/src/User.ts index e7b306fee..00cd25cc8 100644 --- a/packages/react-oidc/src/User.ts +++ b/packages/react-oidc/src/User.ts @@ -1,6 +1,8 @@ import { OidcClient, type OidcUserInfo } from '@axa-fr/oidc-client'; import { useEffect, useRef, useState } from 'react'; +import { warnMissingConfigurationOnce } from './warnMissingConfiguration.js'; + export enum OidcUserStatus { Unauthenticated = 'Unauthenticated', Loading = 'Loading user', @@ -18,7 +20,9 @@ export const useOidcUser = ( demonstrating_proof_of_possession = false, ) => { const oidc = OidcClient.get(configurationName); - const user = oidc.userInfo(); + // When the hook is used outside of an (issue #1679), + // `OidcClient.get` returns null instead of throwing. + const user = oidc ? oidc.userInfo() : null; const [oidcUser, setOidcUser] = useState>({ user: user, status: user ? OidcUserStatus.Loaded : OidcUserStatus.Unauthenticated, @@ -29,7 +33,11 @@ export const useOidcUser = ( useEffect(() => { const oidc = OidcClient.get(configurationName); let isMounted = true; - if (oidc && oidc.tokens) { + if (!oidc) { + warnMissingConfigurationOnce(configurationName); + return undefined; + } + if (oidc.tokens) { const isCache = oidcUserId === oidcPreviousUserIdRef.current; if (isCache && oidc.userInfo()) { return; diff --git a/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx b/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx index 9622d01f8..372289aec 100644 --- a/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx +++ b/packages/react-oidc/src/core/default-component/Callback.component.spec.tsx @@ -7,6 +7,7 @@ import CallbackManager, { CallBackSuccess, verifyNavigationCommitted } from './C vi.mock('@axa-fr/oidc-client', () => ({ OidcClient: { get: vi.fn(), + getOrThrow: vi.fn(), eventNames: { loginCallbackAsync_navigated: 'loginCallbackAsync_navigated', loginCallbackAsync_navigation_error: 'loginCallbackAsync_navigation_error', @@ -58,7 +59,7 @@ describe('CallbackManager', () => { mockLoginCallbackAsync = vi.fn(); mockReplaceState = vi.fn(); - (OidcClient.get as ReturnType).mockReturnValue({ + (OidcClient.getOrThrow as ReturnType).mockReturnValue({ loginCallbackAsync: mockLoginCallbackAsync, publishEvent: mockPublishEvent, }); diff --git a/packages/react-oidc/src/core/default-component/Callback.component.tsx b/packages/react-oidc/src/core/default-component/Callback.component.tsx index a1edfc922..dc40c13e4 100644 --- a/packages/react-oidc/src/core/default-component/Callback.component.tsx +++ b/packages/react-oidc/src/core/default-component/Callback.component.tsx @@ -34,7 +34,7 @@ const CallbackManager: ComponentType = ({ useEffect(() => { let isMounted = true; const playCallbackAsync = async () => { - const getOidc = OidcClient.get; + const getOidc = OidcClient.getOrThrow; try { const oidcClient = getOidc(configurationName); const { callbackPath } = await oidcClient.loginCallbackAsync(); diff --git a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx index 8a3865267..f19b9a261 100644 --- a/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentCallback.component.tsx @@ -8,7 +8,7 @@ export interface SilentCallbackProps { const SilentCallbackManager: FC = ({ configurationName }) => { useEffect(() => { const playCallbackAsync = async () => { - const oidc = OidcClient.get(configurationName); + const oidc = OidcClient.getOrThrow(configurationName); oidc.silentLoginCallbackAsync(); }; diff --git a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx index c7255b61d..e35ea6387 100644 --- a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx @@ -4,7 +4,7 @@ import { ComponentType, useEffect } from 'react'; const SilentLogin: ComponentType = ({ configurationName }) => { const queryParams = getParseQueryStringFromLocation(window.location.href); - const getOidc = OidcClient.get; + const getOidc = OidcClient.getOrThrow; const oidc = getOidc(configurationName); let extras = null; diff --git a/packages/react-oidc/src/hooksWithoutProvider.spec.tsx b/packages/react-oidc/src/hooksWithoutProvider.spec.tsx new file mode 100644 index 000000000..efd77e946 --- /dev/null +++ b/packages/react-oidc/src/hooksWithoutProvider.spec.tsx @@ -0,0 +1,89 @@ +import { renderHook } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { useOidc, useOidcAccessToken, useOidcIdToken } from './ReactOidc'; +import { OidcUserStatus, useOidcUser } from './User'; +import { resetWarnedConfigurations } from './warnMissingConfiguration'; + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { + get: vi.fn(() => null), + getOrThrow: vi.fn(() => { + throw new Error('OIDC library does seem initialized.'); + }), + eventNames: { + logout_from_another_tab: 'logout_from_another_tab', + logout_from_same_tab: 'logout_from_same_tab', + token_acquired: 'token_acquired', + token_renewed: 'token_renewed', + refreshTokensAsync_error: 'refreshTokensAsync_error', + syncTokensAsync_error: 'syncTokensAsync_error', + }, + }, +})); + +describe('hooks used outside (issue #1679)', () => { + let warnSpy: ReturnType; + + beforeEach(() => { + resetWarnedConfigurations(); + warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => undefined); + }); + + afterEach(() => { + warnSpy.mockRestore(); + }); + + describe('useOidc', () => { + it('does not throw and returns safe defaults', () => { + const { result } = renderHook(() => useOidc()); + expect(result.current.isAuthenticated).toBe(false); + expect(typeof result.current.login).toBe('function'); + expect(typeof result.current.logout).toBe('function'); + expect(typeof result.current.renewTokens).toBe('function'); + }); + + it('login / logout / renewTokens resolve without throwing', async () => { + const { result } = renderHook(() => useOidc()); + await expect(result.current.login()).resolves.toBeUndefined(); + await expect(result.current.logout()).resolves.toBeUndefined(); + await expect(result.current.renewTokens()).resolves.toMatchObject({ + accessToken: null, + idToken: null, + }); + }); + + it('warns once per configuration name', () => { + renderHook(() => useOidc('cfg-a')); + renderHook(() => useOidc('cfg-a')); + renderHook(() => useOidc('cfg-b')); + const messagesForA = warnSpy.mock.calls.filter(args => String(args[0]).includes('"cfg-a"')); + const messagesForB = warnSpy.mock.calls.filter(args => String(args[0]).includes('"cfg-b"')); + expect(messagesForA.length).toBe(1); + expect(messagesForB.length).toBe(1); + }); + }); + + describe('useOidcAccessToken', () => { + it('returns the default access-token state', () => { + const { result } = renderHook(() => useOidcAccessToken()); + expect(result.current).toEqual({ accessToken: null, accessTokenPayload: null }); + }); + }); + + describe('useOidcIdToken', () => { + it('returns the default id-token state', () => { + const { result } = renderHook(() => useOidcIdToken()); + expect(result.current).toEqual({ idToken: null, idTokenPayload: null }); + }); + }); + + describe('useOidcUser', () => { + it('returns the default user state without throwing', () => { + const { result } = renderHook(() => useOidcUser()); + expect(result.current.oidcUser).toBeNull(); + expect(result.current.oidcUserLoadingState).toBe(OidcUserStatus.Unauthenticated); + expect(typeof result.current.reloadOidcUser).toBe('function'); + }); + }); +}); diff --git a/packages/react-oidc/src/warnMissingConfiguration.ts b/packages/react-oidc/src/warnMissingConfiguration.ts new file mode 100644 index 000000000..4fb21a87a --- /dev/null +++ b/packages/react-oidc/src/warnMissingConfiguration.ts @@ -0,0 +1,28 @@ +const warnedConfigurations = new Set(); + +/** + * Emits a `console.warn` once per `configurationName` when an OIDC hook is + * used without a matching ``. Introduced for issue #1679 so + * that consumers get a clear, non-fatal signal in tests and Storybook. + * + * Exported for testing purposes. + */ +export const warnMissingConfigurationOnce = (configurationName: string): void => { + if (warnedConfigurations.has(configurationName)) { + return; + } + warnedConfigurations.add(configurationName); + console.warn( + `@axa-fr/react-oidc: no OIDC configuration found for "${configurationName}". ` + + `Make sure to wrap your component tree with . ` + + `Hooks are returning safe default values (issue #1679).`, + ); +}; + +/** + * Resets the internal set of already-warned configuration names. Intended + * for tests only. + */ +export const resetWarnedConfigurations = (): void => { + warnedConfigurations.clear(); +}; From fb22c068e5ccb79fd3ceefe9902e2f936c4f8699 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 19:28:33 +0000 Subject: [PATCH 502/565] [skip ci] Update to version 7.27.16 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index d71d83497..1e009930d 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.15", + "version": "7.27.16", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 2324f9cfe..94279f676 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.15'; +export default '7.27.16'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 5bf803d48..672e10bb7 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.15", + "version": "7.27.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 2324f9cfe..94279f676 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.15'; +export default '7.27.16'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 3f6ed2a79..7e5e4aaf0 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.15", + "version": "7.27.16", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 5204bb3c0ce690f6dc36aa3ab708c154b120e283 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 19:28:34 +0000 Subject: [PATCH 503/565] [skip ci] Generate changelog to version 7.27.16 --- CHANGELOG.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 060e48179..a64256e8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.15 +## 7.27.16 + +- [cb8fc88](https://github.com/AxaFrance/oidc-client/commit/cb8fc88246229ee819a32a2164385ef05209b806) - Gracefully handle hooks outside OidcProvider and add test provider #1679 (#1698) (release), 2026-06-23 by *Guillaume Chervet* + + +## v7.27.15 - [e4cd2bd](https://github.com/AxaFrance/oidc-client/commit/e4cd2bd885f404bedaa66200d10c6145f403823a) - Fix issue #1696: loadingTimeout_error fires on authenticated/idle state after a silent session restore (regression from #1681 / #1692) (#1697) (release), 2026-06-21 by *Guillaume Chervet* @@ -301,12 +306,3 @@ - [318de92](https://github.com/AxaFrance/oidc-client/commit/318de922980c167dd9fc1a743d2dedd106b9a02d) - fix(oidc): Add null as union type into arguments for login, logout, renewTokens functions (#1427) (release), 2024-07-26 by *ShimpeiKamiguchi* -## v7.22.20 - -- [05ace2d](https://github.com/AxaFrance/oidc-client/commit/05ace2dce4a36493b1d127d049c3ef7d5ebd90b4) - fix(oidc): record tabIds when service worker receives init event (release), 2024-07-22 by *mkrzempek* -- [6b5f6b4](https://github.com/AxaFrance/oidc-client/commit/6b5f6b428aba70b32d5264b0de89752a00b352e3) - refactor(initWorker): null coalescing, 2024-07-21 by *Jason Finch* -- [34bd8e4](https://github.com/AxaFrance/oidc-client/commit/34bd8e4b3388761b2127a9c73980d74edac7b3ad) - refactor(parameters): Default parameters should be last.sonarlint(typescript:S1788), 2024-07-21 by *Jason Finch* -- [44fa6f2](https://github.com/AxaFrance/oidc-client/commit/44fa6f2678f989ee23a84a506aea3caf159b9c2c) - fix spelling `token_acquired`, 2024-07-21 by *Jason Finch* -- [32a2af3](https://github.com/AxaFrance/oidc-client/commit/32a2af3028cd69581d1ab0ee183c7b3146998b41) - chore(lint): Fix lint warnings., 2024-07-21 by *Jason Finch* - - From 940aa8da6427e95dd2aa380575c7a27c7c8f9aac Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 23 Jun 2026 21:59:48 +0200 Subject: [PATCH 504/565] fix: Prevent logoutAsync from clearing local session before navigation to avoid re-auth race (#1701) (release) Co-authored-by: GnOuGo Agent --- packages/oidc-client/src/logout.spec.ts | 209 ++++++++++++++++++++- packages/oidc-client/src/logout.ts | 229 +++++++++++++++--------- packages/oidc-client/src/oidc.ts | 31 +++- packages/oidc-client/src/oidcClient.ts | 26 +++ packages/react-oidc/src/OidcSecure.tsx | 6 +- 5 files changed, 418 insertions(+), 83 deletions(-) diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index 65469f0fc..c12ce0ee1 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -2,8 +2,9 @@ import { describe, expect, it, vi } from 'vitest'; +import { eventNames } from './events'; import { ILOidcLocation } from './location'; -import { logoutAsync } from './logout'; +import { clearSessionAsync, logoutAsync } from './logout'; describe('Logout test suite', () => { const expectedFinalUrl = @@ -138,4 +139,210 @@ describe('Logout test suite', () => { expect(finalUrl).toBe(expectedFinalUrl); }, ); + + it('navigates to end_session_endpoint before clearing the local session (issue #1677)', async () => { + // This is the regression test for the race described in issue #1677. + // `OidcProvider`/`OidcSecure` watches `oidc.tokens`; if `destroyAsync` + // runs before `oicLocation.open`, the React tree can briefly observe a + // null token state and kick off a new auth flow before the navigation + // to the IdP's end-session endpoint commits. + const configuration = { + client_id: 'interactive.public.short', + authority: 'http://api', + logout_tokens_to_invalidate: ['access_token', 'refresh_token'], + }; + + const callOrder: string[] = []; + + const mockFetchFn = vi.fn().mockImplementation(() => { + callOrder.push('revoke'); + return Promise.resolve({ status: 200 }); + }); + + const oidc: any = { + configuration, + tokens: { + idToken: 'abcd', + accessToken: 'abcd', + refreshToken: 'abdc', + idTokenPayload: { sub: 'sub-123' }, + }, + isLoggingOut: false, + initAsync: () => + Promise.resolve({ + revocationEndpoint: 'http://api/connect/revocation', + endSessionEndpoint: 'http://api/connect/endsession', + }), + destroyAsync: vi.fn().mockImplementation(() => { + callOrder.push('destroyAsync'); + oidc.tokens = null; + return Promise.resolve(); + }), + logoutSameTabAsync: () => Promise.resolve(), + publishEvent: (name: string) => callOrder.push(`publishEvent:${name}`), + }; + + const oidcDatabase = { default: oidc }; + + let navigatedUrl = ''; + class OidcLocationMock implements ILOidcLocation { + open(url: string): void { + callOrder.push('open'); + navigatedUrl = url; + } + getCurrentHref() { + return ''; + } + getPath() { + return ''; + } + reload() { + callOrder.push('reload'); + } + getOrigin() { + return 'http://localhost:4200'; + } + } + + await logoutAsync( + oidc, + oidcDatabase, + mockFetchFn, + console, + new OidcLocationMock(), + )('/logged_out', null); + + // Revocation comes first (so tokens are still valid when revoked), + // navigation comes second (page starts unloading), and only then we + // clear local state and broadcast `logout_from_same_tab`. + expect(callOrder[0]).toBe('revoke'); + expect(callOrder[1]).toBe('revoke'); + expect(callOrder[2]).toBe('open'); + expect(callOrder.indexOf('destroyAsync')).toBeGreaterThan(callOrder.indexOf('open')); + expect(callOrder.indexOf(`publishEvent:${eventNames.logout_from_same_tab}`)).toBeGreaterThan( + callOrder.indexOf('open'), + ); + + // The id_token_hint must still be present on the navigation URL, even + // though local tokens have been cleared by `destroyAsync` afterwards. + expect(navigatedUrl).toContain('id_token_hint=abcd'); + expect(navigatedUrl).toContain( + 'post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogged_out', + ); + + // The flag stays set after the call returns: the page is expected to be + // unloading and any UI re-render that briefly observes `tokens === null` + // should skip starting a new login flow. + expect(oidc.isLoggingOut).toBe(true); + }); + + it('resets isLoggingOut and does not navigate when no_reload is requested', async () => { + const configuration = { + client_id: 'interactive.public.short', + authority: 'http://api', + logout_tokens_to_invalidate: [], + }; + + const events: string[] = []; + let navigated = false; + const oidc: any = { + configuration, + tokens: { + idToken: 'abcd', + accessToken: 'abcd', + refreshToken: 'abdc', + idTokenPayload: { sub: 'sub-123' }, + }, + isLoggingOut: false, + initAsync: () => + Promise.resolve({ + revocationEndpoint: 'http://api/connect/revocation', + endSessionEndpoint: 'http://api/connect/endsession', + }), + destroyAsync: () => Promise.resolve(), + logoutSameTabAsync: () => Promise.resolve(), + publishEvent: (name: string) => events.push(name), + }; + const oidcDatabase = { default: oidc }; + + class OidcLocationMock implements ILOidcLocation { + open() { + navigated = true; + } + getCurrentHref() { + return ''; + } + getPath() { + return ''; + } + reload() { + navigated = true; + } + getOrigin() { + return 'http://localhost:4200'; + } + } + + await logoutAsync( + oidc, + oidcDatabase, + vi.fn(), + console, + new OidcLocationMock(), + )('/logged_out', { 'no_reload:oidc': 'true' }); + + expect(navigated).toBe(false); + expect(events).toContain(eventNames.logout_from_same_tab); + expect(oidc.isLoggingOut).toBe(false); + }); + + describe('clearSessionAsync', () => { + it('clears the local session and emits logout_from_same_tab without contacting the IdP', async () => { + const events: { name: string; data: unknown }[] = []; + const oidc: any = { + configuration: { client_id: 'interactive.public.short' }, + tokens: { + idToken: 'abcd', + accessToken: 'abcd', + refreshToken: 'abdc', + idTokenPayload: { sub: 'sub-123' }, + }, + destroyAsync: vi.fn().mockImplementation(status => { + oidc.tokens = null; + events.push({ name: 'destroyAsync', data: status }); + return Promise.resolve(); + }), + logoutSameTabAsync: vi.fn().mockResolvedValue(undefined), + publishEvent: (name: string, data: unknown) => events.push({ name, data }), + }; + const oidcDatabase = { default: oidc }; + + await clearSessionAsync(oidc, oidcDatabase)(); + + expect(oidc.destroyAsync).toHaveBeenCalledWith('LOGGED_OUT'); + expect(oidc.tokens).toBeNull(); + expect(events.some(e => e.name === eventNames.logout_from_same_tab)).toBe(true); + }); + + it('calls logoutSameTabAsync for sibling OIDC clients registered in the same tab', async () => { + const oidc: any = { + configuration: { client_id: 'interactive.public.short' }, + tokens: { + idToken: 'abcd', + accessToken: 'abcd', + refreshToken: 'abdc', + idTokenPayload: { sub: 'sub-123' }, + }, + destroyAsync: () => Promise.resolve(), + logoutSameTabAsync: vi.fn().mockResolvedValue(undefined), + publishEvent: () => undefined, + }; + const sibling: any = { configuration: { client_id: 'other' } }; + const oidcDatabase = { default: oidc, other: sibling }; + + await clearSessionAsync(oidc, oidcDatabase)(); + + expect(oidc.logoutSameTabAsync).toHaveBeenCalledWith('interactive.public.short', 'sub-123'); + }); + }); }); diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index a758d6fcb..3f5764d24 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -59,6 +59,58 @@ export const destroyAsync = oidc => async status => { oidc.userInfo = null; }; +/** + * Clears the local OIDC session (tokens, user info, service-worker storage) + * and broadcasts `logout_from_same_tab` to any other OIDC clients registered + * in the same tab. + * + * It is intentionally decoupled from `logoutAsync`: callers that want to drop + * the local session without contacting the identity provider — for example a + * service-worker-only flow, a SPA-only logout, or an error-recovery path — + * can use this helper directly. `logoutAsync` itself calls it as the very + * last step, after the browser navigation to `end_session_endpoint` has been + * scheduled, so that the React tree never observes a transient "no tokens" + * state before the page is unloaded. + */ +export const clearSessionAsync = (oidc, oidcDatabase) => async () => { + const sub = oidc.tokens?.idTokenPayload?.sub ?? null; + await oidc.destroyAsync('LOGGED_OUT'); + for (const [, itemOidc] of Object.entries(oidcDatabase)) { + if (itemOidc !== oidc) { + // @ts-ignore + await oidc.logoutSameTabAsync(oidc.configuration.client_id, sub); + } else { + oidc.publishEvent(eventNames.logout_from_same_tab, {}); + } + } +}; + +const buildEndSessionUrl = ( + endSessionEndpoint: string, + endPointExtras: StringMap, + idToken: string, + postLogoutRedirectUri: string | null, +): string => { + if (!('id_token_hint' in endPointExtras)) { + endPointExtras['id_token_hint'] = idToken; + } + if (!('post_logout_redirect_uri' in endPointExtras) && postLogoutRedirectUri !== null) { + endPointExtras['post_logout_redirect_uri'] = postLogoutRedirectUri; + } + let queryString = ''; + for (const [key, value] of Object.entries(endPointExtras)) { + if (value !== null && value !== undefined) { + if (queryString === '') { + queryString += '?'; + } else { + queryString += '&'; + } + queryString += `${key}=${encodeURIComponent(value)}`; + } + } + return `${endSessionEndpoint}${queryString}`; +}; + export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation: ILOidcLocation) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { @@ -79,94 +131,111 @@ export const logoutAsync = if (callbackPathOrUrl) { isUri = callbackPathOrUrl.includes('https://') || callbackPathOrUrl.includes('http://'); } - const url = isUri ? callbackPathOrUrl : oicLocation.getOrigin() + path; + const postLogoutRedirectUri = + callbackPathOrUrl === null + ? null + : isUri + ? callbackPathOrUrl + : oicLocation.getOrigin() + path; + // Capture identifiers from the live session *before* any clear happens, so the + // values stay valid no matter when we drop local state. // @ts-ignore const idToken = oidc.tokens ? oidc.tokens.idToken : ''; + + // Mark the instance as "logout in progress" so consumers (OidcSecure, route + // guards, silent renew, 401 retry interceptors, …) can back off from + // triggering a new auth flow during the window between us clearing the + // local session and the browser actually navigating away. + oidc.isLoggingOut = true; + try { - const revocationEndpoint = oidcServerConfiguration.revocationEndpoint; - if (revocationEndpoint) { - const promises = []; - const accessToken = oidc.tokens ? oidc.tokens.accessToken : null; - if ( - accessToken && - configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.access_token) - ) { - const revokeAccessTokenExtras = extractExtras(extras, ':revoke_access_token'); - const revokeAccessTokenPromise = performRevocationRequestAsync(fetch)( - revocationEndpoint, - accessToken, - TOKEN_TYPE.access_token, - configuration.client_id, - revokeAccessTokenExtras, - ); - promises.push(revokeAccessTokenPromise); - } - const refreshToken = oidc.tokens ? oidc.tokens.refreshToken : null; - if ( - refreshToken && - configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.refresh_token) - ) { - const revokeAccessTokenExtras = extractExtras(extras, ':revoke_refresh_token'); - const revokeRefreshTokenPromise = performRevocationRequestAsync(fetch)( - revocationEndpoint, - refreshToken, - TOKEN_TYPE.refresh_token, - configuration.client_id, - revokeAccessTokenExtras, - ); - promises.push(revokeRefreshTokenPromise); - } - if (promises.length > 0) { - await Promise.all(promises); + try { + const revocationEndpoint = oidcServerConfiguration.revocationEndpoint; + if (revocationEndpoint) { + const promises = []; + const accessToken = oidc.tokens ? oidc.tokens.accessToken : null; + if ( + accessToken && + configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.access_token) + ) { + const revokeAccessTokenExtras = extractExtras(extras, ':revoke_access_token'); + const revokeAccessTokenPromise = performRevocationRequestAsync(fetch)( + revocationEndpoint, + accessToken, + TOKEN_TYPE.access_token, + configuration.client_id, + revokeAccessTokenExtras, + ); + promises.push(revokeAccessTokenPromise); + } + const refreshToken = oidc.tokens ? oidc.tokens.refreshToken : null; + if ( + refreshToken && + configuration.logout_tokens_to_invalidate.includes(oidcLogoutTokens.refresh_token) + ) { + const revokeAccessTokenExtras = extractExtras(extras, ':revoke_refresh_token'); + const revokeRefreshTokenPromise = performRevocationRequestAsync(fetch)( + revocationEndpoint, + refreshToken, + TOKEN_TYPE.refresh_token, + configuration.client_id, + revokeAccessTokenExtras, + ); + promises.push(revokeRefreshTokenPromise); + } + if (promises.length > 0) { + // Revocation must be awaited *before* navigation, so a cancelled + // navigation can never leave valid tokens behind both in storage + // and on the authorization server. + await Promise.all(promises); + } } + } catch (exception) { + console.warn( + 'logoutAsync: error when revoking tokens, if the error persist, you ay configure property logout_tokens_to_invalidate from configuration to avoid this error', + ); + console.warn(exception); } - } catch (exception) { - console.warn( - 'logoutAsync: error when revoking tokens, if the error persist, you ay configure property logout_tokens_to_invalidate from configuration to avoid this error', - ); - console.warn(exception); - } - const sub = oidc.tokens?.idTokenPayload?.sub ?? null; - - await oidc.destroyAsync('LOGGED_OUT'); - for (const [, itemOidc] of Object.entries(oidcDatabase)) { - if (itemOidc !== oidc) { - // @ts-ignore - await oidc.logoutSameTabAsync(oidc.configuration.client_id, sub); - } else { - oidc.publishEvent(eventNames.logout_from_same_tab, {}); - } - } - - const oidcExtras = extractExtras(extras, ':oidc'); - const noReload = oidcExtras && oidcExtras['no_reload'] === 'true'; - - if (noReload) { - return; - } - const endPointExtras = keepExtras(extras); + const oidcExtras = extractExtras(extras, ':oidc'); + const noReload = oidcExtras && oidcExtras['no_reload'] === 'true'; - if (oidcServerConfiguration.endSessionEndpoint) { - if (!('id_token_hint' in endPointExtras)) { - endPointExtras['id_token_hint'] = idToken; - } - if (!('post_logout_redirect_uri' in endPointExtras) && callbackPathOrUrl !== null) { - endPointExtras['post_logout_redirect_uri'] = url; + if (noReload) { + // No navigation happens here: this branch is essentially a "clear local + // session" call dressed as a logout. We can drop state immediately and + // reset the flag since the call returns normally to the caller. + await clearSessionAsync(oidc, oidcDatabase)(); + oidc.isLoggingOut = false; + return; } - let queryString = ''; - for (const [key, value] of Object.entries(endPointExtras)) { - if (value !== null && value !== undefined) { - if (queryString === '') { - queryString += '?'; - } else { - queryString += '&'; - } - queryString += `${key}=${encodeURIComponent(value)}`; - } + + // Navigate to the end-session endpoint (or reload) *before* clearing the + // local session. This closes the race where `OidcProvider` / + // `OidcSecure` / silent-renew timers observe a null `tokens` and kick + // off a new auth flow in the window between local clear and navigation. + const endPointExtras = keepExtras(extras); + if (oidcServerConfiguration.endSessionEndpoint) { + const endSessionUrl = buildEndSessionUrl( + oidcServerConfiguration.endSessionEndpoint, + endPointExtras, + idToken, + postLogoutRedirectUri, + ); + oicLocation.open(endSessionUrl); + } else { + oicLocation.reload(); } - oicLocation.open(`${oidcServerConfiguration.endSessionEndpoint}${queryString}`); - } else { - oicLocation.reload(); + + // Now that navigation has been scheduled, drop the local session. By the + // time React re-renders against the null tokens the page is already + // unloading; if for any reason it is not (e.g. navigation cancelled by a + // `beforeunload` handler) the `isLoggingOut` flag stays set so guards + // still know not to start a fresh auth flow. + await clearSessionAsync(oidc, oidcDatabase)(); + } catch (exception) { + // If anything went wrong, reset the flag so the app is not stuck in a + // "logging out forever" state. + oidc.isLoggingOut = false; + throw exception; } }; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 8acaa2b01..3f3cef4e8 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -12,7 +12,7 @@ import { import { tryKeepSessionAsync } from './keepSession'; import { ILOidcLocation, OidcLocation } from './location'; import { defaultLoginAsync, loginCallbackAsync } from './login.js'; -import { destroyAsync, logoutAsync } from './logout.js'; +import { clearSessionAsync, destroyAsync, logoutAsync } from './logout.js'; import { TokenRenewMode, Tokens } from './parseTokens.js'; import { autoRenewTokens, renewTokensAndStartTimerAsync } from './renewTokens.js'; import { fetchFromIssuer } from './requests.js'; @@ -99,6 +99,14 @@ export class Oidc { public checkSessionIFrame: CheckSessionIFrame; public getFetch: () => Fetch; public location: ILOidcLocation; + /** + * `true` while {@link logoutAsync} is executing or has scheduled a + * navigation to the identity provider's end-session endpoint that has not + * yet committed. Consumers (UI guards, silent-renew handlers, 401 retry + * interceptors, …) should check this flag and skip starting a new auth + * flow when it is set, even if `tokens` is null. + */ + public isLoggingOut = false; constructor( configuration: OidcConfiguration, configurationName = 'default', @@ -477,6 +485,27 @@ Please checkout that you are using OIDC hook inside a = null; + async clearSessionAsync(): Promise { + if (this.clearSessionPromise) { + return this.clearSessionPromise; + } + this.clearSessionPromise = clearSessionAsync(this, oidcDatabase)(); + return this.clearSessionPromise.finally(() => { + this.clearSessionPromise = null; + }); + } + async logoutSameTabAsync(clientId: string, sub: any) { // @ts-ignore if ( diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index 851bfa51c..fce1fa264 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -84,6 +84,32 @@ export class OidcClient { return this._oidc.logoutAsync(callbackPathOrUrl, extras); } + /** + * Drops the local OIDC session (tokens, user info, service-worker storage) + * and notifies same-tab listeners via the `logout_from_same_tab` event, + * without contacting the identity provider's `end_session_endpoint` and + * without revoking tokens. + * + * Use this for SPA-only logouts, service-worker-only flows, or + * error-recovery paths. For a standard OIDC RP-initiated logout (with + * token revocation and navigation to the IdP's end-session endpoint) use + * {@link logoutAsync} instead. + */ + clearSessionAsync(): Promise { + return this._oidc.clearSessionAsync(); + } + + /** + * `true` while a logout flow is in progress: between the moment + * {@link logoutAsync} starts and the moment the browser navigates away to + * the identity provider's end-session endpoint. UI guards and silent-renew + * handlers should check this flag to avoid kicking off a new auth flow + * during that window. + */ + get isLoggingOut(): boolean { + return this._oidc.isLoggingOut === true; + } + silentLoginCallbackAsync(): Promise { return this._oidc.silentLoginCallbackAsync(); } diff --git a/packages/react-oidc/src/OidcSecure.tsx b/packages/react-oidc/src/OidcSecure.tsx index 8c52b5036..776bf7b6b 100644 --- a/packages/react-oidc/src/OidcSecure.tsx +++ b/packages/react-oidc/src/OidcSecure.tsx @@ -18,7 +18,11 @@ export const OidcSecure: FC> = ({ const getOidc = OidcClient.getOrThrow; const oidc = getOidc(configurationName); useEffect(() => { - if (!oidc.tokens) { + // Skip auto re-login while a logout flow is in progress: in that window + // `tokens` has just been cleared but the browser has not yet navigated to + // the identity provider's end-session endpoint, and starting a new auth + // flow here would race the logout navigation (see issue #1677). + if (!oidc.tokens && !oidc.isLoggingOut) { oidc.loginAsync(callbackPath, extras); } }, [configurationName, callbackPath, extras]); From 9a0f519a1ea540d5de1020dbc5e068e2006e7993 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 20:02:00 +0000 Subject: [PATCH 505/565] [skip ci] Update to version 7.27.17 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 1e009930d..99b87d579 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.16", + "version": "7.27.17", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 94279f676..d611dc2c3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.16'; +export default '7.27.17'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 672e10bb7..ea8c8bf4b 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.16", + "version": "7.27.17", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 94279f676..d611dc2c3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.16'; +export default '7.27.17'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 7e5e4aaf0..b53d3f500 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.16", + "version": "7.27.17", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From efc3f1324a64e9a62f2bbeb35dc39702b35cc141 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 20:02:01 +0000 Subject: [PATCH 506/565] [skip ci] Generate changelog to version 7.27.17 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a64256e8a..d8e50819b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.16 +## 7.27.17 + +- [940aa8d](https://github.com/AxaFrance/oidc-client/commit/940aa8da6427e95dd2aa380575c7a27c7c8f9aac) - fix: Prevent logoutAsync from clearing local session before navigation to avoid re-auth race (#1701) (release), 2026-06-23 by *Guillaume Chervet* + + +## v7.27.16 - [cb8fc88](https://github.com/AxaFrance/oidc-client/commit/cb8fc88246229ee819a32a2164385ef05209b806) - Gracefully handle hooks outside OidcProvider and add test provider #1679 (#1698) (release), 2026-06-23 by *Guillaume Chervet* @@ -301,8 +306,3 @@ - [23ae6ba](https://github.com/AxaFrance/oidc-client/commit/23ae6ba287a85cc879c92228feb3855dcbe2930e) - fix(oidc): Add undefined as union type into arguments for login, logout, renewTokens (#1429) (alpha), 2024-08-02 by *ShimpeiKamiguchi* -## v7.22.21 - -- [318de92](https://github.com/AxaFrance/oidc-client/commit/318de922980c167dd9fc1a743d2dedd106b9a02d) - fix(oidc): Add null as union type into arguments for login, logout, renewTokens functions (#1427) (release), 2024-07-26 by *ShimpeiKamiguchi* - - From e4afee9ccf68a3905c1d071223c2cea0a435fb8b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 23 Jun 2026 22:21:29 +0200 Subject: [PATCH 507/565] Handle corrupted or missing OIDC state with a clear, descriptive error (#1700) (release) Co-authored-by: GnOuGo Agent --- packages/oidc-client/README.md | 35 ++++ packages/oidc-client/src/index.ts | 1 + packages/oidc-client/src/login.spec.ts | 151 ++++++++++++++++++ packages/oidc-client/src/login.ts | 25 ++- .../oidc-client/src/oidcStateError.spec.ts | 33 ++++ packages/oidc-client/src/oidcStateError.ts | 50 ++++++ packages/oidc-client/src/renewTokens.ts | 13 ++ packages/react-oidc/src/index.ts | 3 + 8 files changed, 309 insertions(+), 2 deletions(-) create mode 100644 packages/oidc-client/src/login.spec.ts create mode 100644 packages/oidc-client/src/oidcStateError.spec.ts create mode 100644 packages/oidc-client/src/oidcStateError.ts diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 939dccf60..4bbab9268 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -446,6 +446,41 @@ pnpm start ``` +## Handling missing or corrupted login state + +When the OIDC state or nonce is missing from storage at callback time (for +example because the user is in a private browsing tab, cleared storage +manually, or because the browser evicted the entry between the authorize +redirect and the callback), the library now throws a typed +`OidcStateError` instead of letting a generic `TypeError` escape. + +```ts +import { isOidcStateError, OidcStateError, OidcStateErrorCode } from '@axa-fr/oidc-client'; + +try { + await oidcClient.loginCallbackAsync(); +} catch (error) { + if (isOidcStateError(error)) { + switch (error.code) { + case OidcStateErrorCode.STATE_MISSING: + // The stored state was not found at callback time. + break; + case OidcStateErrorCode.STATE_MISMATCH: + // The state returned by the server does not match the stored one. + break; + case OidcStateErrorCode.NONCE_MISSING: + // The stored nonce was not found at callback time. + break; + } + } +} +``` + +`OidcStateError` is an `Error` subclass, exposes a stable `code` field, and +is also re-exported from `@axa-fr/react-oidc`. For silent renewal, a missing +nonce no longer throws a `TypeError` — it is reported through the existing +`SESSION_LOST` status so consumers can recover via the normal re-login flow. + ## Service worker protocol The `postMessage` protocol used between `OidcClient` and the service worker diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 5c58fb631..063139591 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -5,6 +5,7 @@ export { OidcLocation } from './location.js'; export { getFetchDefault } from './oidc.js'; export type { OidcUserInfo } from './oidcClient.js'; export { OidcClient } from './oidcClient.js'; +export { isOidcStateError, OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; export type { Tokens } from './parseTokens.js'; export { TokenRenewMode } from './parseTokens.js'; export type { diff --git a/packages/oidc-client/src/login.spec.ts b/packages/oidc-client/src/login.spec.ts new file mode 100644 index 000000000..3d60c6542 --- /dev/null +++ b/packages/oidc-client/src/login.spec.ts @@ -0,0 +1,151 @@ +// Tests for the guards added to loginCallbackAsync to surface missing / +// mismatched state and missing nonce as typed `OidcStateError` instead of a +// generic TypeError. See https://github.com/AxaFrance/oidc-client/issues/1678 +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { ILOidcLocation } from './location'; +import { loginCallbackAsync } from './login'; +import { OidcStateError, OidcStateErrorCode } from './oidcStateError'; + +const makeStorage = (): Storage => { + const store: Record = {}; + return { + getItem: (key: string) => store[key] ?? null, + setItem: (key: string, value: string) => { + store[key] = value; + }, + removeItem: (key: string) => { + delete store[key]; + }, + clear: () => { + for (const key of Object.keys(store)) { + delete store[key]; + } + }, + get length() { + return Object.keys(store).length; + }, + key: (index: number) => Object.keys(store)[index] ?? null, + [Symbol.iterator]: function* () { + yield* Object.entries(store); + }, + } as unknown as Storage; +}; + +class FakeLocation implements ILOidcLocation { + constructor(private currentHref: string) {} + open(): void {} + reload(): void {} + getCurrentHref(): string { + return this.currentHref; + } + getPath(): string { + return '/callback'; + } + getOrigin(): string { + return 'http://localhost:4200'; + } +} + +const buildOidc = ({ href, storage }: { href: string; storage: Storage }) => { + const publishedEvents: Array<{ name: string; data: unknown }> = []; + const configurationName = 'default'; + const configuration = { + client_id: 'interactive.public.short', + redirect_uri: 'http://localhost:4200/authentication/callback', + silent_redirect_uri: 'http://localhost:4200/authentication/silent-callback', + scope: 'openid profile email', + authority: 'http://api', + refresh_time_before_tokens_expiration_in_second: 70, + token_request_timeout: 30000, + authority_configuration: null, + storage, + login_state_storage: storage, + // no service_worker_relative_url -> initWorkerAsync returns null + }; + const oidc: any = { + configuration, + configurationName, + location: new FakeLocation(href), + publishEvent: (name: string, data: unknown) => { + publishedEvents.push({ name, data }); + }, + initAsync: vi.fn(async () => ({ + issuer: 'http://api', + authorizationEndpoint: 'http://api/connect/authorize', + tokenEndpoint: 'http://api/connect/token', + checkSessionIframe: 'http://api/connect/checksession', + })), + startCheckSessionAsync: vi.fn(async () => undefined), + }; + return { oidc, publishedEvents }; +}; + +describe('loginCallbackAsync — state/nonce guards (issue #1678)', () => { + let storage: Storage; + + beforeEach(() => { + storage = makeStorage(); + }); + + it('throws OidcStateError(STATE_MISSING) when stored state is missing but callback URL contains state', async () => { + // No `oidc.state.default` written into storage at all (simulates a + // private-browsing tab, manual storage clear, or browser eviction + // between the authorize redirect and the callback). + const href = 'http://localhost:4200/authentication/callback?code=abc&state=server-state-value'; + const { oidc, publishedEvents } = buildOidc({ href, storage }); + + await expect(loginCallbackAsync(oidc)()).rejects.toBeInstanceOf(OidcStateError); + await expect(loginCallbackAsync(oidc)()).rejects.toMatchObject({ + code: OidcStateErrorCode.STATE_MISSING, + }); + + // The error must also be published as a loginCallbackAsync_error event + // so listeners (incl. the React provider) can react to it. + const errorEvent = publishedEvents.find(e => e.name === 'loginCallbackAsync_error'); + expect(errorEvent).toBeDefined(); + expect(errorEvent!.data).toBeInstanceOf(OidcStateError); + }); + + it('throws OidcStateError(STATE_MISMATCH) when the stored state differs from the returned one', async () => { + storage[`oidc.state.default`] = 'stored-state-value'; + storage[`oidc.nonce.default`] = 'stored-nonce-value'; + const href = + 'http://localhost:4200/authentication/callback?code=abc&state=different-state-value'; + const { oidc } = buildOidc({ href, storage }); + + await expect(loginCallbackAsync(oidc)()).rejects.toBeInstanceOf(OidcStateError); + await expect(loginCallbackAsync(oidc)()).rejects.toMatchObject({ + code: OidcStateErrorCode.STATE_MISMATCH, + }); + }); + + it('throws OidcStateError(NONCE_MISSING) when state is valid but nonce is missing from storage', async () => { + storage[`oidc.state.default`] = 'matching-state'; + // No oidc.nonce.default written -> getNonceAsync returns { nonce: undefined } + const href = 'http://localhost:4200/authentication/callback?code=abc&state=matching-state'; + const { oidc } = buildOidc({ href, storage }); + + await expect(loginCallbackAsync(oidc)()).rejects.toBeInstanceOf(OidcStateError); + await expect(loginCallbackAsync(oidc)()).rejects.toMatchObject({ + code: OidcStateErrorCode.NONCE_MISSING, + }); + }); + + it('does not throw a generic TypeError when state and nonce are both missing', async () => { + // Regression: before the fix, a missing nonce would surface as + // "Cannot read properties of undefined (reading 'nonce')" when reaching + // isTokensOidcValid(..., nonceData.nonce, ...). + const href = 'http://localhost:4200/authentication/callback?code=abc&state=server-state-value'; + const { oidc } = buildOidc({ href, storage }); + + let caught: unknown; + try { + await loginCallbackAsync(oidc)(); + } catch (e) { + caught = e; + } + expect(caught).toBeInstanceOf(OidcStateError); + expect(caught).not.toBeInstanceOf(TypeError); + }); +}); diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 04eaf47ce..76598931d 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -5,6 +5,7 @@ import { initWorkerAsync } from './initWorker.js'; import { generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync } from './jwt'; import { ILOidcLocation } from './location'; import Oidc from './oidc'; +import { OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; import { isTokensOidcValid } from './parseTokens.js'; import { performAuthorizationRequestAsync, performFirstTokenRequestAsync } from './requests.js'; import { getParseQueryStringFromLocation } from './route-utils.js'; @@ -156,8 +157,28 @@ export const loginCallbackAsync = `Issuer not valid (expected: ${oidcServerConfiguration.issuer}, received: ${queryParams.iss})`, ); } - if (queryParams.state && queryParams.state !== state) { - throw new Error(`State not valid (expected: ${state}, received: ${queryParams.state})`); + // Surface missing / mismatched login state as a typed, identifiable error + // rather than a generic TypeError when later dereferencing nonceData.nonce. + // See https://github.com/AxaFrance/oidc-client/issues/1678 + if (queryParams.state) { + if (!state) { + throw new OidcStateError( + OidcStateErrorCode.STATE_MISSING, + 'OIDC state is missing from storage. The login state may have been cleared between the authorization redirect and the callback (e.g., private browsing, storage cleared, or browser eviction).', + ); + } + if (queryParams.state !== state) { + throw new OidcStateError( + OidcStateErrorCode.STATE_MISMATCH, + `OIDC state does not match the stored one (expected: ${state}, received: ${queryParams.state}).`, + ); + } + } + if (!nonceData || !nonceData.nonce) { + throw new OidcStateError( + OidcStateErrorCode.NONCE_MISSING, + 'OIDC nonce is missing from storage. The login state may have been cleared between the authorization redirect and the callback (e.g., private browsing, storage cleared, or browser eviction).', + ); } const data = { diff --git a/packages/oidc-client/src/oidcStateError.spec.ts b/packages/oidc-client/src/oidcStateError.spec.ts new file mode 100644 index 000000000..53742875d --- /dev/null +++ b/packages/oidc-client/src/oidcStateError.spec.ts @@ -0,0 +1,33 @@ +import { describe, expect, it } from 'vitest'; + +import { isOidcStateError, OidcStateError, OidcStateErrorCode } from './oidcStateError'; + +describe('OidcStateError', () => { + it('exposes the well-known state error codes', () => { + expect(OidcStateErrorCode.STATE_MISSING).toBe('STATE_MISSING'); + expect(OidcStateErrorCode.STATE_MISMATCH).toBe('STATE_MISMATCH'); + expect(OidcStateErrorCode.NONCE_MISSING).toBe('NONCE_MISSING'); + }); + + it('is an Error subclass with name "OidcStateError"', () => { + const err = new OidcStateError(OidcStateErrorCode.STATE_MISSING, 'missing'); + expect(err).toBeInstanceOf(Error); + expect(err).toBeInstanceOf(OidcStateError); + expect(err.name).toBe('OidcStateError'); + }); + + it('preserves the code and message passed to the constructor', () => { + const err = new OidcStateError(OidcStateErrorCode.STATE_MISMATCH, 'mismatch happened'); + expect(err.code).toBe('STATE_MISMATCH'); + expect(err.message).toBe('mismatch happened'); + }); + + it('is detectable via isOidcStateError', () => { + const err = new OidcStateError(OidcStateErrorCode.NONCE_MISSING, 'nonce missing'); + expect(isOidcStateError(err)).toBe(true); + expect(isOidcStateError(new Error('boom'))).toBe(false); + expect(isOidcStateError(null)).toBe(false); + expect(isOidcStateError(undefined)).toBe(false); + expect(isOidcStateError({ code: 'STATE_MISSING' })).toBe(false); + }); +}); diff --git a/packages/oidc-client/src/oidcStateError.ts b/packages/oidc-client/src/oidcStateError.ts new file mode 100644 index 000000000..05df674b4 --- /dev/null +++ b/packages/oidc-client/src/oidcStateError.ts @@ -0,0 +1,50 @@ +/** + * Stable, machine-readable codes for OIDC state / nonce failures occurring + * between the authorization redirect and the callback handling. + * + * These codes let consumers react to specific failure modes without having to + * pattern-match against error message strings. + */ +export const OidcStateErrorCode = { + /** No state was found in storage when handling the callback. */ + STATE_MISSING: 'STATE_MISSING', + /** The state returned by the server does not match the stored one. */ + STATE_MISMATCH: 'STATE_MISMATCH', + /** No nonce was found in storage when handling the callback / renewal. */ + NONCE_MISSING: 'NONCE_MISSING', +} as const; + +// Companion type that mirrors the const above. This is the standard TS +// "string-enum-like" pattern; we intentionally reuse the same name so that +// `OidcStateErrorCode` works as both a value namespace and a type for +// consumers. +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type OidcStateErrorCode = (typeof OidcStateErrorCode)[keyof typeof OidcStateErrorCode]; + +/** + * Typed error thrown when the OIDC login state or nonce is missing, + * corrupted, or does not match the value returned by the authorization server. + * + * Consumers can use `instanceof OidcStateError` and inspect `code` instead of + * relying on the (unstable) error message text. + */ +export class OidcStateError extends Error { + readonly code: OidcStateErrorCode; + + constructor(code: OidcStateErrorCode, message: string) { + super(message); + this.name = 'OidcStateError'; + this.code = code; + + // Keep prototype chain intact when transpiled to ES5. + Object.setPrototypeOf(this, OidcStateError.prototype); + } +} + +/** + * Type guard for {@link OidcStateError}. Useful in callers that want to react + * specifically to state/nonce failures. + */ +export const isOidcStateError = (value: unknown): value is OidcStateError => { + return value instanceof OidcStateError; +}; diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 95b8cb1f5..1ed314501 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -446,6 +446,19 @@ const synchroniseTokensAsync = ); if (tokenResponse.success) { + // Guard against a missing/corrupted nonce reaching id_token validation. + // Without this guard, accessing `nonce.nonce` would throw a TypeError + // when the underlying storage has been cleared (private mode, manual + // clearing, browser eviction). We prefer a defined SESSION_LOST result + // so silent renew stays non-throwing for consumers. + // See https://github.com/AxaFrance/oidc-client/issues/1678 + if (!nonce || !nonce.nonce) { + updateTokens(null); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { + message: 'refresh token: nonce missing from storage', + }); + return { tokens: null, status: 'SESSION_LOST' }; + } const { isValid, reason } = isTokensOidcValid( tokenResponse.data, nonce.nonce, diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index cccd35649..861a698ca 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -13,8 +13,11 @@ export type { } from '@axa-fr/oidc-client'; export type { OidcUserInfo } from '@axa-fr/oidc-client'; export { + isOidcStateError, OidcClient, OidcLocation, + OidcStateError, + OidcStateErrorCode, TokenAutomaticRenewMode, TokenRenewMode, } from '@axa-fr/oidc-client'; From 09f22ee7f9b7baad3c9d57da9bc31212d2590606 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 20:23:40 +0000 Subject: [PATCH 508/565] [skip ci] Update to version 7.27.18 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 99b87d579..74bfc64ed 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.17", + "version": "7.27.18", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index d611dc2c3..eaf10b3fc 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.17'; +export default '7.27.18'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index ea8c8bf4b..602de01c0 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.17", + "version": "7.27.18", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index d611dc2c3..eaf10b3fc 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.17'; +export default '7.27.18'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index b53d3f500..e925ac6ec 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.17", + "version": "7.27.18", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From fadfe2d8e4500555ed4194da955bfda453a5c49e Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 23 Jun 2026 20:23:42 +0000 Subject: [PATCH 509/565] [skip ci] Generate changelog to version 7.27.18 --- CHANGELOG.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8e50819b..f8c23999e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.17 +## 7.27.18 + +- [e4afee9](https://github.com/AxaFrance/oidc-client/commit/e4afee9ccf68a3905c1d071223c2cea0a435fb8b) - Handle corrupted or missing OIDC state with a clear, descriptive error (#1700) (release), 2026-06-23 by *Guillaume Chervet* + + +## v7.27.17 - [940aa8d](https://github.com/AxaFrance/oidc-client/commit/940aa8da6427e95dd2aa380575c7a27c7c8f9aac) - fix: Prevent logoutAsync from clearing local session before navigation to avoid re-auth race (#1701) (release), 2026-06-23 by *Guillaume Chervet* @@ -299,10 +304,3 @@ - [d15a57d](https://github.com/AxaFrance/oidc-client/commit/d15a57d98309db99d3bcd8d1a6a4fbeffe1b5402) - Fix(oidc): usage of config option service_worker_register (#1440) (release), 2024-08-25 by *Thomas Miliopoulos* -## v7.22.22 - -- [d213de1](https://github.com/AxaFrance/oidc-client/commit/d213de1a49d891cc1c0f399621f696ed861c145e) - doc(oidc) :Update README.md (release), 2024-08-20 by *Guillaume Chervet* -- [1159262](https://github.com/AxaFrance/oidc-client/commit/115926280965cffc5a4f7ea2234bf1a0017ff896) - fix(logout): should work correctly with multiple tabs (alpha) (#1435), 2024-08-13 by *wermanoid* -- [23ae6ba](https://github.com/AxaFrance/oidc-client/commit/23ae6ba287a85cc879c92228feb3855dcbe2930e) - fix(oidc): Add undefined as union type into arguments for login, logout, renewTokens (#1429) (alpha), 2024-08-02 by *ShimpeiKamiguchi* - - From de470065418f3c98099f5df0a039bc33392cb74d Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 24 Jun 2026 17:36:02 +0200 Subject: [PATCH 510/565] Handle service worker AbortError on tab shutdown to avoid uncaught rejections (#1702) (release) Co-authored-by: GnOuGo Agent --- packages/oidc-client/src/initWorker.ts | 54 +++++-- .../src/initWorkerAbortError.spec.ts | 147 ++++++++++++++++++ 2 files changed, 184 insertions(+), 17 deletions(-) create mode 100644 packages/oidc-client/src/initWorkerAbortError.spec.ts diff --git a/packages/oidc-client/src/initWorker.ts b/packages/oidc-client/src/initWorker.ts index 7e8d9721d..64b95b48b 100644 --- a/packages/oidc-client/src/initWorker.ts +++ b/packages/oidc-client/src/initWorker.ts @@ -172,7 +172,18 @@ let controllerChangeReloading = false; // Cache registration promises by URL so that navigator.serviceWorker.register (or a custom // service_worker_register) is called at most once per JavaScript session (page lifetime), // regardless of how many times initWorkerAsync is invoked. -const registrationCache = new Map>(); +export const registrationCache = new Map>(); + +// AbortError surfaces during transient lifecycle events (e.g. iOS Safari tab shutdown or +// backgrounding) and does not represent a genuine configuration problem. We treat it as +// non-fatal, clear the cache entry so future calls can retry, and fall back to the +// non–service-worker path by returning null from initWorkerAsync. +const isAbortError = (error: unknown): boolean => { + if (error instanceof DOMException) { + return error.name === 'AbortError'; + } + return (error as { name?: string } | null)?.name === 'AbortError'; +}; // Session-level guard to prevent infinite reload loops caused by SW update cycles. // The controllerchange listener triggers a page reload, but after reload the module-level @@ -229,25 +240,34 @@ export const initWorkerAsync = async ( const swUrl = `${serviceWorkerRelativeUrl}?v=${codeVersion}`; + const cacheKey = configuration.service_worker_register ? serviceWorkerRelativeUrl : swUrl; + + if (!registrationCache.has(cacheKey)) { + registrationCache.set( + cacheKey, + configuration.service_worker_register + ? configuration.service_worker_register(serviceWorkerRelativeUrl) + : navigator.serviceWorker.register(swUrl, { + updateViaCache: 'none', + }), + ); + } + let registration: ServiceWorkerRegistration = null as any; - if (configuration.service_worker_register) { - if (!registrationCache.has(serviceWorkerRelativeUrl)) { - registrationCache.set( - serviceWorkerRelativeUrl, - configuration.service_worker_register(serviceWorkerRelativeUrl), - ); - } - registration = await registrationCache.get(serviceWorkerRelativeUrl)!; - } else { - if (!registrationCache.has(swUrl)) { - registrationCache.set( - swUrl, - navigator.serviceWorker.register(swUrl, { - updateViaCache: 'none', - }), + try { + registration = await registrationCache.get(cacheKey)!; + } catch (error) { + if (isAbortError(error)) { + // Drop the rejected promise so a later call can attempt registration again + // once the browser is in a stable state (e.g. tab is foregrounded again). + registrationCache.delete(cacheKey); + console.warn( + 'oidc-client: service worker registration was aborted (likely tab shutdown or backgrounding); falling back to non–service-worker mode.', + error, ); + return null; } - registration = await registrationCache.get(swUrl)!; + throw error; } const versionMismatchKey = `oidc.sw.version_mismatch_reload.${configurationName}`; diff --git a/packages/oidc-client/src/initWorkerAbortError.spec.ts b/packages/oidc-client/src/initWorkerAbortError.spec.ts new file mode 100644 index 000000000..db4344b9a --- /dev/null +++ b/packages/oidc-client/src/initWorkerAbortError.spec.ts @@ -0,0 +1,147 @@ +// Tests covering the AbortError handling added to initWorkerAsync. +// See https://github.com/AxaFrance/oidc-client/issues/1675 +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { initWorkerAsync, registrationCache } from './initWorker'; +import { OidcConfiguration } from './types'; + +const SERVICE_WORKER_RELATIVE_URL = '/OidcServiceWorker.js'; + +const buildConfiguration = (overrides: Partial = {}): OidcConfiguration => { + return { + client_id: 'test-client', + redirect_uri: 'http://localhost/callback', + scope: 'openid', + authority: 'http://authority', + service_worker_relative_url: SERVICE_WORKER_RELATIVE_URL, + service_worker_activate: () => true, + ...overrides, + } as OidcConfiguration; +}; + +const createAbortError = (): DOMException => { + // DOMException is available in the test environment (jsdom / happy-dom). + return new DOMException('The operation was aborted.', 'AbortError'); +}; + +describe('initWorkerAsync AbortError handling', () => { + let originalNavigator: PropertyDescriptor | undefined; + let originalWindow: PropertyDescriptor | undefined; + let warnSpy: ReturnType; + + beforeEach(() => { + registrationCache.clear(); + originalNavigator = Object.getOwnPropertyDescriptor(globalThis, 'navigator'); + originalWindow = Object.getOwnPropertyDescriptor(globalThis, 'window'); + Object.defineProperty(globalThis, 'window', { + configurable: true, + value: {}, + }); + Object.defineProperty(globalThis, 'navigator', { + configurable: true, + value: { + serviceWorker: { + register: vi.fn(), + ready: Promise.resolve({} as ServiceWorkerRegistration), + controller: null, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + }, + }, + }); + warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + }); + + afterEach(() => { + registrationCache.clear(); + if (originalNavigator) { + Object.defineProperty(globalThis, 'navigator', originalNavigator); + } else { + delete (globalThis as { navigator?: unknown }).navigator; + } + if (originalWindow) { + Object.defineProperty(globalThis, 'window', originalWindow); + } else { + delete (globalThis as { window?: unknown }).window; + } + vi.restoreAllMocks(); + }); + + it('returns null when a custom service_worker_register rejects with an AbortError', async () => { + const abortError = createAbortError(); + const service_worker_register = vi.fn(() => Promise.reject(abortError)); + + const result = await initWorkerAsync( + buildConfiguration({ service_worker_register }), + 'default', + ); + + expect(result).toBeNull(); + expect(service_worker_register).toHaveBeenCalledOnce(); + expect(registrationCache.has(SERVICE_WORKER_RELATIVE_URL)).toBe(false); + expect(warnSpy).toHaveBeenCalled(); + }); + + it('returns null when navigator.serviceWorker.register rejects with an AbortError', async () => { + const abortError = createAbortError(); + (navigator.serviceWorker.register as unknown as ReturnType).mockImplementation( + () => Promise.reject(abortError), + ); + + const result = await initWorkerAsync(buildConfiguration(), 'default'); + + expect(result).toBeNull(); + // The cache entry for the SW URL should have been cleared so a later retry is possible. + expect(Array.from(registrationCache.keys())).toHaveLength(0); + expect(warnSpy).toHaveBeenCalled(); + }); + + it('also treats plain { name: "AbortError" } rejections as aborts', async () => { + const plainAbort = { name: 'AbortError', message: 'aborted' }; + const service_worker_register = vi.fn(() => Promise.reject(plainAbort)); + + const result = await initWorkerAsync( + buildConfiguration({ service_worker_register }), + 'default', + ); + + expect(result).toBeNull(); + expect(registrationCache.has(SERVICE_WORKER_RELATIVE_URL)).toBe(false); + }); + + it('allows a subsequent call to retry registration after an AbortError', async () => { + const abortError = createAbortError(); + const service_worker_register = vi + .fn() + .mockImplementationOnce(() => Promise.reject(abortError)) + // Returning a never-resolving promise on the retry is fine for the assertion below: + // we only need to confirm that the function was called a second time after the + // failed cache entry was cleared. + .mockImplementationOnce(() => new Promise(() => {})); + + const configuration = buildConfiguration({ service_worker_register }); + + const firstResult = await initWorkerAsync(configuration, 'default'); + expect(firstResult).toBeNull(); + expect(service_worker_register).toHaveBeenCalledTimes(1); + + // Kick off the second call (don't await – the mocked promise never resolves). + void initWorkerAsync(configuration, 'default'); + // Allow the microtask queue to drain so the registration call is observed. + await Promise.resolve(); + + expect(service_worker_register).toHaveBeenCalledTimes(2); + }); + + it('propagates non-AbortError rejections to the caller', async () => { + const genericError = new Error('boom'); + const service_worker_register = vi.fn(() => Promise.reject(genericError)); + + await expect( + initWorkerAsync(buildConfiguration({ service_worker_register }), 'default'), + ).rejects.toBe(genericError); + + // Non-AbortError rejections keep the cache entry in place (existing behavior). + expect(registrationCache.has(SERVICE_WORKER_RELATIVE_URL)).toBe(true); + }); +}); From 23863da29021f238c176d6a11805cd0dff363424 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 24 Jun 2026 15:38:14 +0000 Subject: [PATCH 511/565] [skip ci] Update to version 7.27.19 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 74bfc64ed..456b6d8f9 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.18", + "version": "7.27.19", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index eaf10b3fc..518e4067d 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.18'; +export default '7.27.19'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 602de01c0..6ce333e18 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.18", + "version": "7.27.19", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index eaf10b3fc..518e4067d 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.18'; +export default '7.27.19'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index e925ac6ec..2cd555694 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.18", + "version": "7.27.19", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 9fc09f5b9b080a86d2a8379e15498bf2d641688b Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 24 Jun 2026 15:38:16 +0000 Subject: [PATCH 512/565] [skip ci] Generate changelog to version 7.27.19 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8c23999e..8c9fbc255 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.27.18 +## 7.27.19 + +- [de47006](https://github.com/AxaFrance/oidc-client/commit/de470065418f3c98099f5df0a039bc33392cb74d) - Handle service worker AbortError on tab shutdown to avoid uncaught rejections (#1702) (release), 2026-06-24 by *Guillaume Chervet* + + +## v7.27.18 - [e4afee9](https://github.com/AxaFrance/oidc-client/commit/e4afee9ccf68a3905c1d071223c2cea0a435fb8b) - Handle corrupted or missing OIDC state with a clear, descriptive error (#1700) (release), 2026-06-23 by *Guillaume Chervet* @@ -299,8 +304,3 @@ - [47f9de1](https://github.com/AxaFrance/oidc-client/commit/47f9de1f648838ae085c45a5dcd55687f80829c5) - fix(oidc): remove no-existing property add typings (release), 2024-08-25 by *Guillaume Chervet* -## v7.22.23 - -- [d15a57d](https://github.com/AxaFrance/oidc-client/commit/d15a57d98309db99d3bcd8d1a6a4fbeffe1b5402) - Fix(oidc): usage of config option service_worker_register (#1440) (release), 2024-08-25 by *Thomas Miliopoulos* - - From afad2667d38f700a839fe6cfbff2a7ce9a02b792 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Jul 2026 21:34:59 +0200 Subject: [PATCH 513/565] fix: remove hardcoded pnpm version from GitHub Actions workflows (#1707) * Initial plan * fix: remove hardcoded pnpm version from GitHub Actions workflows Remove the hardcoded `version` parameter from all `pnpm/action-setup@v4` steps across all workflow files. The action will now automatically read the pnpm version from the `packageManager` field in `package.json`, eliminating the version mismatch error: Error: Multiple versions of pnpm specified: - version 8.6.11 in the GitHub Action config - version pnpm@11.10.0 in the package.json Also remove the now-unused `PNPM_VERSION` environment variable from all workflow files. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .../workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml | 2 -- .../workflows/azure-static-web-apps-icy-glacier-004ab4303.yml | 2 -- .github/workflows/ci.yml | 2 -- .github/workflows/lint.yml | 2 -- .github/workflows/npm-publish.yml | 3 --- 5 files changed, 11 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index 800067481..77c3c50a0 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -10,7 +10,6 @@ on: - main env: - PNPM_VERSION: 8.6.11 NODE_VERSION: 20 jobs: skip_ci: @@ -34,7 +33,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false - name: pnpm install run: pnpm i --frozen-lockfile diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index cf32cc26c..eaceda79e 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -10,7 +10,6 @@ on: - main env: - PNPM_VERSION: 8.6.11 NODE_VERSION: 20 jobs: skip_ci: @@ -34,7 +33,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false - name: pnpm install root run: pnpm i --frozen-lockfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a5bc7277..21ba60c52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,6 @@ on: # branches: [ main ] env: - PNPM_VERSION: 8.6.11 NODE_VERSION: 20 jobs: @@ -27,7 +26,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false # oidc-client diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 57a358071..fa49718df 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,6 @@ on: # - main env: - PNPM_VERSION: 8.6.11 NODE_VERSION: 20 jobs: @@ -31,7 +30,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false # ESLint and Prettier must be in `package.json` diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index a4423f33a..ffe48f228 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -10,7 +10,6 @@ on: branches: [ main ] env: - PNPM_VERSION: 8.6.11 NODE_VERSION: 20 jobs: skip_ci: @@ -32,7 +31,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false - name: pnpm i @@ -127,7 +125,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: ${{ env.PNPM_VERSION }} run_install: false # oidc-client-service-worker From a8ce57dd6ff970c6608c3f99a0fafc0264e654b7 Mon Sep 17 00:00:00 2001 From: Pavan Kumar Jadda <17564080+pavankjadda@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:36:57 -0400 Subject: [PATCH 514/565] fix: fixes vulnarabilities by updating dependencies (#1706) (release) Updates dependencies in package.json and pnpm-lock.yaml; upgrade ESLint, TypeScript, and related packages to latest versions, and adjust pnpm workspace settings. --- package.json | 22 +- pnpm-lock.yaml | 7817 ++++++++++++++++++++++++------------------- pnpm-workspace.yaml | 6 + 3 files changed, 4358 insertions(+), 3487 deletions(-) diff --git a/package.json b/package.json index d66ce59c6..fd2c39f5d 100644 --- a/package.json +++ b/package.json @@ -31,28 +31,28 @@ "@eslint/compat": "^2.1.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^10.0.1", - "@typescript-eslint/eslint-plugin": "^8.59.3", - "@typescript-eslint/parser": "^8.59.3", - "eslint": "^10.4.0", + "@typescript-eslint/eslint-plugin": "^8.63.0", + "@typescript-eslint/parser": "^8.63.0", + "eslint": "^10.6.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-n": "^18.0.1", + "eslint-plugin-n": "^18.2.1", "eslint-plugin-no-only-tests": "^3.4.0", - "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-regexp": "^3.1.0", + "eslint-plugin-regexp": "^3.1.1", "eslint-plugin-simple-import-sort": "^13.0.0", "eslint-plugin-testing-library": "^7.16.2", - "prettier": "^3.8.3", + "prettier": "^3.9.5", "tslib": "^2.8.1", - "tsx": "4.22.0", - "typescript": "6.0.3", - "vitest": "4.1.6" + "tsx": "4.23.0", + "typescript": "7.0.2", + "vitest": "4.1.10" }, "engines": { "node": ">= 20.19.0" }, - "packageManager": "pnpm@8.6.11" + "packageManager": "pnpm@11.10.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5290cce3e..afee32051 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -10,70 +10,70 @@ importers: devDependencies: '@eslint/compat': specifier: ^2.1.0 - version: 2.1.0(eslint@10.4.0) + version: 2.1.0(eslint@10.6.0) '@eslint/eslintrc': specifier: ^3.3.5 version: 3.3.5 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.4.0) + version: 10.0.1(eslint@10.6.0) '@typescript-eslint/eslint-plugin': - specifier: ^8.59.3 - version: 8.59.3(@typescript-eslint/parser@8.59.3)(eslint@10.4.0)(typescript@6.0.3) + specifier: ^8.63.0 + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0)(typescript@7.0.2) '@typescript-eslint/parser': - specifier: ^8.59.3 - version: 8.59.3(eslint@10.4.0)(typescript@6.0.3) + specifier: ^8.63.0 + version: 8.63.0(eslint@10.6.0)(typescript@7.0.2) eslint: - specifier: ^10.4.0 - version: 10.4.0 + specifier: ^10.6.0 + version: 10.6.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.4.0) + version: 10.1.8(eslint@10.6.0) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.59.3)(eslint@10.4.0) + version: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@10.4.0) + version: 6.10.2(eslint@10.6.0) eslint-plugin-n: - specifier: ^18.0.1 - version: 18.0.1(eslint@10.4.0)(typescript@6.0.3) + specifier: ^18.2.1 + version: 18.2.1(eslint@10.6.0)(typescript@7.0.2) eslint-plugin-no-only-tests: specifier: ^3.4.0 version: 3.4.0 eslint-plugin-prettier: - specifier: ^5.5.5 - version: 5.5.5(eslint-config-prettier@10.1.8)(eslint@10.4.0)(prettier@3.8.3) + specifier: ^5.5.6 + version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@10.4.0) + version: 7.37.5(eslint@10.6.0) eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@10.4.0) + version: 7.1.1(eslint@10.6.0) eslint-plugin-regexp: - specifier: ^3.1.0 - version: 3.1.0(eslint@10.4.0) + specifier: ^3.1.1 + version: 3.1.1(eslint@10.6.0) eslint-plugin-simple-import-sort: specifier: ^13.0.0 - version: 13.0.0(eslint@10.4.0) + version: 13.0.0(eslint@10.6.0) eslint-plugin-testing-library: specifier: ^7.16.2 - version: 7.16.2(eslint@10.4.0)(typescript@6.0.3) + version: 7.16.2(eslint@10.6.0)(typescript@7.0.2) prettier: - specifier: ^3.8.3 - version: 3.8.3 + specifier: ^3.9.5 + version: 3.9.5 tslib: specifier: ^2.8.1 version: 2.8.1 tsx: - specifier: 4.22.0 - version: 4.22.0 + specifier: 4.23.0 + version: 4.23.0 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 7.0.2 + version: 7.0.2 vitest: - specifier: 4.1.6 - version: 4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13) + specifier: 4.1.10 + version: 4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) examples/nextjs-demo: dependencies: @@ -82,16 +82,16 @@ importers: version: link:../../packages/react-oidc next: specifier: ^16.2.6 - version: 16.2.6(@babel/core@7.29.0)(react-dom@19.2.6)(react@19.2.6) + version: 16.2.10(@babel/core@7.29.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: specifier: ^19.2.6 - version: 19.2.6 + version: 19.2.7 react-dom: specifier: ^19.2.6 - version: 19.2.6(react@19.2.6) + version: 19.2.7(react@19.2.7) styled-jsx: specifier: ^5.1.7 - version: 5.1.7(@babel/core@7.29.0)(react@19.2.6) + version: 5.1.7(@babel/core@7.29.7)(react@19.2.7) examples/oidc-client-demo: dependencies: @@ -113,7 +113,7 @@ importers: version: 10.1.0 vite: specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) examples/react-oidc-demo: dependencies: @@ -122,20 +122,20 @@ importers: version: link:../../packages/react-oidc react: specifier: ^19.2.6 - version: 19.2.6 + version: 19.2.7 react-dom: specifier: ^19.2.6 - version: 19.2.6(react@19.2.6) + version: 19.2.7(react@19.2.7) react-router-dom: specifier: ^7.15.1 - version: 7.15.1(react-dom@19.2.6)(react@19.2.6) + version: 7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) devDependencies: '@testing-library/jest-dom': specifier: 6.9.1 version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -144,7 +144,7 @@ importers: version: 19.2.14 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.13) + version: 6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) bootstrap: specifier: ^5.3.8 version: 5.3.8(@popperjs/core@2.11.8) @@ -162,13 +162,13 @@ importers: version: 6.0.3 vite: specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) vite-plugin-dts: specifier: 5.0.0 - version: 5.0.0(typescript@6.0.3)(vite@8.0.13) + version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) vitest: specifier: 4.1.6 - version: 4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13) + version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) packages/oidc-client: dependencies: @@ -184,7 +184,7 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/node': specifier: ^25.8.0 version: 25.8.0 @@ -205,13 +205,13 @@ importers: version: 6.0.3 vite: specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) vite-plugin-dts: specifier: 5.0.0 - version: 5.0.0(typescript@6.0.3)(vite@8.0.13) + version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) vitest: specifier: 4.1.6 - version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13) + version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) packages/oidc-client-service-worker: devDependencies: @@ -232,13 +232,13 @@ importers: version: 6.0.3 vite: specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) vite-plugin-dts: specifier: 5.0.0 - version: 5.0.0(typescript@6.0.3)(vite@8.0.13) + version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) vitest: specifier: 4.1.6 - version: 4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13) + version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) packages/react-oidc: dependencies: @@ -254,7 +254,7 @@ importers: version: 6.9.1 '@testing-library/react': specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -263,7 +263,7 @@ importers: version: 19.2.14 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.13) + version: 6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) '@vitest/coverage-v8': specifier: 4.1.6 version: 4.1.6(vitest@4.1.6) @@ -281,13 +281,13 @@ importers: version: 29.1.1 msw: specifier: 2.14.6 - version: 2.14.6(typescript@6.0.3) + version: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) react: specifier: ^19.2.6 - version: 19.2.6 + version: 19.2.7 react-dom: specifier: ^19.2.6 - version: 19.2.6(react@19.2.6) + version: 19.2.7(react@19.2.7) rimraf: specifier: 6.1.3 version: 6.1.3 @@ -296,535 +296,331 @@ importers: version: 6.0.3 vite: specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) vite-plugin-dts: specifier: 5.0.0 - version: 5.0.0(typescript@6.0.3)(vite@8.0.13) + version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) vitest: specifier: 4.1.6 - version: 4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13) + version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) packages: - /@adobe/css-tools@4.4.4: - resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - dev: true + '@adobe/css-tools@4.5.0': + resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} - /@asamuzakjp/css-color@5.1.11: + '@asamuzakjp/css-color@5.1.11': resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - dev: true - /@asamuzakjp/dom-selector@7.1.1: + '@asamuzakjp/dom-selector@7.1.1': resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@asamuzakjp/nwsapi': 2.3.9 - bidi-js: 1.0.3 - css-tree: 3.2.1 - is-potential-custom-element-name: 1.0.1 - dev: true - /@asamuzakjp/generational-cache@1.0.1: + '@asamuzakjp/generational-cache@1.0.1': resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - dev: true - /@asamuzakjp/nwsapi@2.3.9: + '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - dev: true - /@babel/code-frame@7.29.0: - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - /@babel/compat-data@7.29.0: - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} - /@babel/core@7.29.0: - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/generator@7.29.1: - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - /@babel/helper-compilation-targets@7.28.6: - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.2 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-globals@7.28.0: - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} - /@babel/helper-module-imports@7.28.6: - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - /@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0): - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - /@babel/helper-string-parser@7.27.1: - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.28.5: - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.27.1: - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.29.2: - resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - /@babel/parser@7.29.2: - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.29.0 - /@babel/runtime@7.29.2: - resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/template@7.28.6: - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - /@babel/traverse@7.29.0: - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - /@babel/types@7.29.0: - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - /@bcoe/v8-coverage@1.0.2: + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - dev: true - /@bramus/specificity@2.4.2: + '@bramus/specificity@2.4.2': resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true - dependencies: - css-tree: 3.2.1 - dev: true - /@csstools/color-helpers@6.0.2: - resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + '@csstools/color-helpers@6.1.0': + resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} engines: {node: '>=20.19.0'} - dev: true - /@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0): - resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - dev: true - /@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0): - resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + '@csstools/css-color-parser@4.1.9': + resolution: {integrity: sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - dependencies: - '@csstools/color-helpers': 6.0.2 - '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0)(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - dev: true - /@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0): + '@csstools/css-parser-algorithms@4.0.0': resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - dependencies: - '@csstools/css-tokenizer': 4.0.0 - dev: true - /@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1): - resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + '@csstools/css-syntax-patches-for-csstree@1.1.6': + resolution: {integrity: sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: css-tree: optional: true - dependencies: - css-tree: 3.2.1 - dev: true - /@csstools/css-tokenizer@4.0.0: + '@csstools/css-tokenizer@4.0.0': resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} - dev: true - /@emnapi/core@1.10.0: + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - requiresBuild: true - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - dev: true - optional: true - /@emnapi/runtime@1.10.0: + '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - optional: true - /@emnapi/wasi-threads@1.2.1: + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: true - optional: true - /@epic-web/invariant@1.0.0: + '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - dev: true - /@esbuild/aix-ppc64@0.28.0: - resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.28.0: - resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.28.0: - resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.28.0: - resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.28.0: - resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.28.0: - resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.28.0: - resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.28.0: - resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.28.0: - resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.28.0: - resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.28.0: - resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.28.0: - resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.28.0: - resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.28.0: - resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.28.0: - resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.28.0: - resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.28.0: - resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-arm64@0.28.0: - resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.28.0: - resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-arm64@0.28.0: - resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.28.0: - resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openharmony-arm64@0.28.0: - resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.28.0: - resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.28.0: - resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.28.0: - resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.28.0: - resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint-community/eslint-utils@4.9.1(eslint@10.4.0): + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 10.4.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.12.2: + '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/compat@2.1.0(eslint@10.4.0): + '@eslint/compat@2.1.0': resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: @@ -832,54 +628,24 @@ packages: peerDependenciesMeta: eslint: optional: true - dependencies: - '@eslint/core': 1.2.1 - eslint: 10.4.0 - dev: true - /@eslint/config-array@0.23.5: + '@eslint/config-array@0.23.5': resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@eslint/object-schema': 3.0.5 - debug: 4.4.3 - minimatch: 10.2.5 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/config-helpers@0.6.0: + '@eslint/config-helpers@0.6.0': resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@eslint/core': 1.2.1 - dev: true - /@eslint/core@1.2.1: + '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@types/json-schema': 7.0.15 - dev: true - /@eslint/eslintrc@3.3.5: + '@eslint/eslintrc@3.3.5': resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.15.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@10.0.1(eslint@10.4.0): + '@eslint/js@10.0.1': resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: @@ -887,730 +653,476 @@ packages: peerDependenciesMeta: eslint: optional: true - dependencies: - eslint: 10.4.0 - dev: true - /@eslint/object-schema@3.0.5: + '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dev: true - /@eslint/plugin-kit@0.7.1: - resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@eslint/core': 1.2.1 - levn: 0.4.1 - dev: true - /@exodus/bytes@1.15.0: - resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: '@noble/hashes': ^1.8.0 || ^2.0.0 peerDependenciesMeta: '@noble/hashes': optional: true - dev: true - /@humanfs/core@0.19.2: + '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} - dependencies: - '@humanfs/types': 0.15.0 - dev: true - /@humanfs/node@0.16.8: + '@humanfs/node@0.16.8': resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} - dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 - dev: true - /@humanfs/types@0.15.0: + '@humanfs/types@0.15.0': resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} - dev: true - /@humanwhocodes/module-importer@1.0.1: + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true - /@humanwhocodes/retry@0.4.3: + '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - dev: true - /@img/colour@1.1.0: + '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - requiresBuild: true - dev: false - optional: true - /@img/sharp-darwin-arm64@0.34.5: + '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - dev: false - optional: true - /@img/sharp-darwin-x64@0.34.5: + '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - dev: false - optional: true - /@img/sharp-libvips-darwin-arm64@1.2.4: + '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@img/sharp-libvips-darwin-x64@1.2.4: + '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@img/sharp-libvips-linux-arm64@1.2.4: + '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linux-arm@1.2.4: + '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linux-ppc64@1.2.4: + '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linux-riscv64@1.2.4: + '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linux-s390x@1.2.4: + '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linux-x64@1.2.4: + '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@img/sharp-libvips-linuxmusl-arm64@1.2.4: + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [musl] - /@img/sharp-libvips-linuxmusl-x64@1.2.4: + '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [musl] - /@img/sharp-linux-arm64@0.34.5: + '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linux-arm@0.34.5: + '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linux-ppc64@0.34.5: + '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linux-riscv64@0.34.5: + '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linux-s390x@0.34.5: + '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linux-x64@0.34.5: + '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - dev: false - optional: true + libc: [glibc] - /@img/sharp-linuxmusl-arm64@0.34.5: + '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - dev: false - optional: true + libc: [musl] - /@img/sharp-linuxmusl-x64@0.34.5: + '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - dev: false - optional: true + libc: [musl] - /@img/sharp-wasm32@0.34.5: + '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - requiresBuild: true - dependencies: - '@emnapi/runtime': 1.10.0 - dev: false - optional: true - /@img/sharp-win32-arm64@0.34.5: + '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@img/sharp-win32-ia32@0.34.5: + '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@img/sharp-win32-x64@0.34.5: + '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@inquirer/ansi@2.0.5: - resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - dev: true + '@inquirer/ansi@2.0.7': + resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} - /@inquirer/confirm@6.0.12: - resolution: {integrity: sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/confirm@6.1.1': + resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - dependencies: - '@inquirer/core': 11.1.9 - '@inquirer/type': 4.0.5 - dev: true - /@inquirer/core@11.1.9: - resolution: {integrity: sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/core@11.2.1': + resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - dependencies: - '@inquirer/ansi': 2.0.5 - '@inquirer/figures': 2.0.5 - '@inquirer/type': 4.0.5 - cli-width: 4.1.0 - fast-wrap-ansi: 0.2.0 - mute-stream: 3.0.0 - signal-exit: 4.1.0 - dev: true - /@inquirer/figures@2.0.5: - resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - dev: true + '@inquirer/figures@2.0.7': + resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} - /@inquirer/type@4.0.5: - resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/type@4.0.7': + resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - dev: true - /@jridgewell/gen-mapping@0.3.13: + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - /@jridgewell/remapping@2.3.5: + '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - /@jridgewell/resolve-uri@3.1.2: + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec@1.5.5: + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - /@jridgewell/trace-mapping@0.3.31: + '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - /@mswjs/interceptors@0.41.6: - resolution: {integrity: sha512-qmDvJIjcNsZ6tXWy2G9yuCgMPTTn35GMA3dPpSLm7QJVpbQzYdw0ALy1bKoivXnEM3U93/OrK+/M719b+fg84Q==} + '@mswjs/interceptors@0.41.9': + resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} engines: {node: '>=18'} - dependencies: - '@open-draft/deferred-promise': 2.2.0 - '@open-draft/logger': 0.3.0 - '@open-draft/until': 2.1.0 - is-node-process: 1.2.0 - outvariant: 1.4.3 - strict-event-emitter: 0.5.1 - dev: true - /@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - requiresBuild: true + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 - dev: true - optional: true - /@next/env@16.2.6: - resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} - dev: false + '@next/env@16.2.10': + resolution: {integrity: sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==} - /@next/swc-darwin-arm64@16.2.6: - resolution: {integrity: sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==} + '@next/swc-darwin-arm64@16.2.10': + resolution: {integrity: sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-x64@16.2.6: - resolution: {integrity: sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==} + '@next/swc-darwin-x64@16.2.10': + resolution: {integrity: sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-gnu@16.2.6: - resolution: {integrity: sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==} + '@next/swc-linux-arm64-gnu@16.2.10': + resolution: {integrity: sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@next/swc-linux-arm64-musl@16.2.6: - resolution: {integrity: sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==} + '@next/swc-linux-arm64-musl@16.2.10': + resolution: {integrity: sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [musl] - /@next/swc-linux-x64-gnu@16.2.6: - resolution: {integrity: sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==} + '@next/swc-linux-x64-gnu@16.2.10': + resolution: {integrity: sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [glibc] - /@next/swc-linux-x64-musl@16.2.6: - resolution: {integrity: sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==} + '@next/swc-linux-x64-musl@16.2.10': + resolution: {integrity: sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true + libc: [musl] - /@next/swc-win32-arm64-msvc@16.2.6: - resolution: {integrity: sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==} + '@next/swc-win32-arm64-msvc@16.2.10': + resolution: {integrity: sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-x64-msvc@16.2.6: - resolution: {integrity: sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==} + '@next/swc-win32-x64-msvc@16.2.10': + resolution: {integrity: sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 - dev: true - /@open-draft/deferred-promise@2.2.0: + '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - dev: true - /@open-draft/deferred-promise@3.0.0: + '@open-draft/deferred-promise@3.0.0': resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} - dev: true - /@open-draft/logger@0.3.0: + '@open-draft/logger@0.3.0': resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - dependencies: - is-node-process: 1.2.0 - outvariant: 1.4.3 - dev: true - /@open-draft/until@2.1.0: + '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - dev: true - /@oxc-project/types@0.130.0: + '@oxc-project/types@0.130.0': resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} - dev: true - /@pkgr/core@0.2.9: - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} - /@popperjs/core@2.11.8: + '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - dev: true - /@rolldown/binding-android-arm64@1.0.1: + '@rolldown/binding-android-arm64@1.0.1': resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-darwin-arm64@1.0.1: + '@rolldown/binding-darwin-arm64@1.0.1': resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-darwin-x64@1.0.1: + '@rolldown/binding-darwin-x64@1.0.1': resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-freebsd-x64@1.0.1: + '@rolldown/binding-freebsd-x64@1.0.1': resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-linux-arm-gnueabihf@1.0.1: + '@rolldown/binding-linux-arm-gnueabihf@1.0.1': resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-linux-arm64-gnu@1.0.1: + '@rolldown/binding-linux-arm64-gnu@1.0.1': resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rolldown/binding-linux-arm64-musl@1.0.1: + '@rolldown/binding-linux-arm64-musl@1.0.1': resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /@rolldown/binding-linux-ppc64-gnu@1.0.1: + '@rolldown/binding-linux-ppc64-gnu@1.0.1': resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rolldown/binding-linux-s390x-gnu@1.0.1: + '@rolldown/binding-linux-s390x-gnu@1.0.1': resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rolldown/binding-linux-x64-gnu@1.0.1: + '@rolldown/binding-linux-x64-gnu@1.0.1': resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rolldown/binding-linux-x64-musl@1.0.1: + '@rolldown/binding-linux-x64-musl@1.0.1': resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /@rolldown/binding-openharmony-arm64@1.0.1: + '@rolldown/binding-openharmony-arm64@1.0.1': resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-wasm32-wasi@1.0.1: + '@rolldown/binding-wasm32-wasi@1.0.1': resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - requiresBuild: true - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - dev: true - optional: true - /@rolldown/binding-win32-arm64-msvc@1.0.1: + '@rolldown/binding-win32-arm64-msvc@1.0.1': resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rolldown/binding-win32-x64-msvc@1.0.1: + '@rolldown/binding-win32-x64-msvc@1.0.1': resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rolldown/pluginutils@1.0.1: + '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - dev: true - /@rollup/pluginutils@5.3.0: - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.4 - dev: true - /@rtsao/scc@1.1.0: + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - dev: true - /@sindresorhus/merge-streams@4.0.0: + '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - dev: true - /@standard-schema/spec@1.1.0: + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - dev: true - /@swc/helpers@0.5.15: + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - dependencies: - tslib: 2.8.1 - dev: false - /@testing-library/dom@10.4.1: + '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/runtime': 7.29.2 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - picocolors: 1.1.1 - pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.9.1: + '@testing-library/jest-dom@6.9.1': resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - dependencies: - '@adobe/css-tools': 4.4.4 - aria-query: 5.3.2 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - picocolors: 1.1.1 - redent: 3.0.0 - dev: true - /@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.6)(react@19.2.6): + '@testing-library/react@16.3.2': resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} engines: {node: '>=18'} peerDependencies: @@ -1624,306 +1136,229 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.29.2 - '@testing-library/dom': 10.4.1 - '@types/react': 19.2.14 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - dev: true - /@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1): + '@testing-library/user-event@14.6.1': resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' - dependencies: - '@testing-library/dom': 10.4.1 - dev: true - /@tybys/wasm-util@0.10.1: - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - requiresBuild: true - dependencies: - tslib: 2.8.1 - dev: true - optional: true + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - /@types/aria-query@5.0.4: + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - dev: true - /@types/chai@5.2.3: + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - dev: true - /@types/deep-eql@4.0.2: + '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - dev: true - /@types/esrecurse@4.3.1: + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - dev: true - /@types/estree@1.0.8: - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - dev: true + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - /@types/json-schema@7.0.15: + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - /@types/json5@0.0.29: + '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - /@types/node@25.8.0: + '@types/node@25.8.0': resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} - dependencies: - undici-types: 7.24.6 - dev: true - /@types/react@19.2.14: + '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - dependencies: - csstype: 3.2.3 - dev: true - /@types/set-cookie-parser@2.4.10: + '@types/set-cookie-parser@2.4.10': resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} - dependencies: - '@types/node': 25.8.0 - dev: true - /@types/statuses@2.0.6: + '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} - dev: true - /@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3)(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} + '@typescript-eslint/eslint-plugin@8.63.0': + resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.3 + '@typescript-eslint/parser': ^8.63.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/type-utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.3 - eslint: 10.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser@8.59.3(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} + '@typescript-eslint/parser@8.63.0': + resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.3 - debug: 4.4.3 - eslint: 10.4.0 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/project-service@8.59.0(typescript@6.0.3): - resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) - '@typescript-eslint/types': 8.59.0 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/project-service@8.59.3(typescript@6.0.3): - resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} + '@typescript-eslint/project-service@8.63.0': + resolution: {integrity: sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) - '@typescript-eslint/types': 8.59.3 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@8.59.0: - resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 - dev: true - - /@typescript-eslint/scope-manager@8.59.3: - resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 - dev: true - /@typescript-eslint/tsconfig-utils@8.59.0(typescript@6.0.3): - resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} + '@typescript-eslint/scope-manager@8.63.0': + resolution: {integrity: sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - dependencies: - typescript: 6.0.3 - dev: true - /@typescript-eslint/tsconfig-utils@8.59.3(typescript@6.0.3): - resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} + '@typescript-eslint/tsconfig-utils@8.63.0': + resolution: {integrity: sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - dependencies: - typescript: 6.0.3 - dev: true - /@typescript-eslint/type-utils@8.59.3(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} + '@typescript-eslint/type-utils@8.63.0': + resolution: {integrity: sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - debug: 4.4.3 - eslint: 10.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@8.59.0: - resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /@typescript-eslint/types@8.59.3: - resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@typescript-eslint/typescript-estree@8.59.0(typescript@6.0.3): - resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} + '@typescript-eslint/types@8.63.0': + resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/project-service': 8.59.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@6.0.3) - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.7.4 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@8.59.3(typescript@6.0.3): - resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} + '@typescript-eslint/typescript-estree@8.63.0': + resolution: {integrity: sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - dependencies: - '@typescript-eslint/project-service': 8.59.3(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.7.4 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@8.59.0(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} + '@typescript-eslint/utils@8.63.0': + resolution: {integrity: sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@6.0.3) - eslint: 10.4.0 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@8.59.3(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} + '@typescript-eslint/visitor-keys@8.63.0': + resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - eslint: 10.4.0 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/visitor-keys@8.59.0: - resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.59.0 - eslint-visitor-keys: 5.0.1 - dev: true + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - /@typescript-eslint/visitor-keys@8.59.3: - resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.59.3 - eslint-visitor-keys: 5.0.1 - dev: true + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] - /@vitejs/plugin-react@6.0.2(vite@8.0.13): + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-react@6.0.2': resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: @@ -1935,12 +1370,8 @@ packages: optional: true babel-plugin-react-compiler: optional: true - dependencies: - '@rolldown/pluginutils': 1.0.1 - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - dev: true - /@vitest/coverage-v8@4.1.6(vitest@4.1.6): + '@vitest/coverage-v8@4.1.6': resolution: {integrity: sha512-36l628fQ/9a/8ihy97eOtEnvWQEdqULQOJtcaxtoNq0G1w3Mxd4szSahOaMM9/NGyZ+hyKcMtIW/WIxq0XQViQ==} peerDependencies: '@vitest/browser': 4.1.6 @@ -1948,32 +1379,25 @@ packages: peerDependenciesMeta: '@vitest/browser': optional: true - dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.6 - ast-v8-to-istanbul: 1.0.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.2 - obug: 2.1.1 - std-env: 4.1.0 - tinyrainbow: 3.1.0 - vitest: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13) - dev: true - /@vitest/expect@4.1.6: + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + + '@vitest/expect@4.1.6': resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 - chai: 6.2.2 - tinyrainbow: 3.1.0 - dev: true - /@vitest/mocker@4.1.6(msw@2.14.6)(vite@8.0.13): + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/mocker@4.1.6': resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} peerDependencies: msw: ^2.4.9 @@ -1983,550 +1407,309 @@ packages: optional: true vite: optional: true - dependencies: - '@vitest/spy': 4.1.6 - estree-walker: 3.0.3 - magic-string: 0.30.21 - msw: 2.14.6(typescript@6.0.3) - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - dev: true - /@vitest/pretty-format@4.1.6: + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + + '@vitest/pretty-format@4.1.6': resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} - dependencies: - tinyrainbow: 3.1.0 - dev: true - /@vitest/runner@4.1.6: + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + + '@vitest/runner@4.1.6': resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} - dependencies: - '@vitest/utils': 4.1.6 - pathe: 2.0.3 - dev: true - /@vitest/snapshot@4.1.6: + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + + '@vitest/snapshot@4.1.6': resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} - dependencies: - '@vitest/pretty-format': 4.1.6 - '@vitest/utils': 4.1.6 - magic-string: 0.30.21 - pathe: 2.0.3 - dev: true - /@vitest/spy@4.1.6: + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + + '@vitest/spy@4.1.6': resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} - dev: true - /@vitest/utils@4.1.6: + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + + '@vitest/utils@4.1.6': resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} - dependencies: - '@vitest/pretty-format': 4.1.6 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - dev: true - /@volar/language-core@2.4.28: + '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - dependencies: - '@volar/source-map': 2.4.28 - dev: true - /@volar/source-map@2.4.28: + '@volar/source-map@2.4.28': resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - dev: true - /@volar/typescript@2.4.28: + '@volar/typescript@2.4.28': resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} - dependencies: - '@volar/language-core': 2.4.28 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 - dev: true - /acorn-jsx@5.3.2(acorn@8.16.0): + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.16.0 - dev: true - /acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /ajv@6.15.0: + ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - /ansi-regex@5.0.1: + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - /ansi-styles@5.2.0: + ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true - /argparse@2.0.1: + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - /aria-query@5.3.0: + aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - dependencies: - dequal: 2.0.3 - dev: true - /aria-query@5.3.2: + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - dev: true - /array-buffer-byte-length@1.0.2: + array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - dev: true - /array-includes@3.1.9: + array-includes@3.1.9: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - dev: true - /array.prototype.findlast@1.2.5: + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - dev: true - /array.prototype.findlastindex@1.2.6: + array.prototype.findlastindex@1.2.6: resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - dev: true - /array.prototype.flat@1.3.3: + array.prototype.flat@1.3.3: resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - dev: true - /array.prototype.flatmap@1.3.3: + array.prototype.flatmap@1.3.3: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - dev: true - /array.prototype.tosorted@1.1.4: + array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - dev: true - /arraybuffer.prototype.slice@1.0.4: + arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - dev: true - /assertion-error@2.0.1: + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - dev: true - /ast-types-flow@0.0.8: + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true - /ast-v8-to-istanbul@1.0.0: - resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - estree-walker: 3.0.3 - js-tokens: 10.0.0 - dev: true + ast-v8-to-istanbul@1.0.4: + resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==} - /async-function@1.0.0: + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - dev: true - /available-typed-arrays@1.0.7: + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.1.0 - dev: true - /axe-core@4.11.3: - resolution: {integrity: sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==} + axe-core@4.12.1: + resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} engines: {node: '>=4'} - dev: true - /axobject-query@4.1.0: + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - dev: true - /balanced-match@1.0.2: + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - /balanced-match@4.0.4: + balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - dev: true - /baseline-browser-mapping@2.10.23: - resolution: {integrity: sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==} + baseline-browser-mapping@2.10.42: + resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==} engines: {node: '>=6.0.0'} hasBin: true - /bidi-js@1.0.3: + bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - dependencies: - require-from-string: 2.0.2 - dev: true - /bootstrap@5.3.8(@popperjs/core@2.11.8): + bootstrap@5.3.8: resolution: {integrity: sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==} peerDependencies: '@popperjs/core': ^2.11.8 - dependencies: - '@popperjs/core': 2.11.8 - dev: true - /brace-expansion@1.1.14: - resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true + brace-expansion@1.1.16: + resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} - /brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + brace-expansion@5.0.7: + resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} - dependencies: - balanced-match: 4.0.4 - dev: true - /braces@3.0.3: + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: true - /browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + browserslist@4.28.5: + resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - dependencies: - baseline-browser-mapping: 2.10.23 - caniuse-lite: 1.0.30001791 - electron-to-chromium: 1.5.344 - node-releases: 2.0.38 - update-browserslist-db: 1.2.3(browserslist@4.28.2) - /call-bind-apply-helpers@1.0.2: + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - dev: true - /call-bind@1.0.9: + call-bind@1.0.9: resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - dev: true - /call-bound@1.0.4: + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - dev: true - /callsites@3.1.0: + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: true - /caniuse-lite@1.0.30001791: - resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} + caniuse-lite@1.0.30001803: + resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==} - /chai@6.2.2: + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - dev: true - /cli-width@4.1.0: + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - dev: true - /client-only@0.0.1: + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false - /cliui@7.0.4: + cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /color-convert@2.0.1: + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - /color-name@1.1.4: + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - requiresBuild: true - dev: true - /comment-parser@1.4.6: - resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} + comment-parser@1.4.7: + resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} engines: {node: '>= 12.0.0'} - dev: true - /compare-versions@6.1.1: + compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} - dev: true - /concat-map@0.0.1: + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - /confbox@0.1.8: + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - dev: true - /confbox@0.2.4: + confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - dev: true - /convert-source-map@2.0.0: + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie@1.1.1: + cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - /copy-file@11.1.0: + copy-file@11.1.0: resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} engines: {node: '>=18'} - dependencies: - graceful-fs: 4.2.11 - p-event: 6.0.1 - dev: true - /copyfiles@2.4.1: + copyfiles@2.4.1: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true - dependencies: - glob: 7.2.3 - minimatch: 3.1.5 - mkdirp: 1.0.4 - noms: 0.0.0 - through2: 2.0.5 - untildify: 4.0.0 - yargs: 16.2.0 - dev: true - /core-util-is@1.0.3: + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - /cpy-cli@7.0.0: + cpy-cli@7.0.0: resolution: {integrity: sha512-uGCdhIxGfZcPXidCuT8w1jBknVXFx0un7NLjzqBZcdnkIWtLUnWMPk5TC37ceoVjwASLSNsRtTXXNTuFIyE2ng==} engines: {node: '>=20'} hasBin: true - dependencies: - cpy: 13.2.2 - globby: 16.2.0 - meow: 14.1.0 - dev: true - /cpy@13.2.2: + cpy@13.2.2: resolution: {integrity: sha512-FEc7gmNSj4mDQCWNt3mByVn3qZX3EjMvggiqgCQPF1yJAFfyX6Ai/emN89w18TRp+QcFmdTLgX3hfNnIVgYHcw==} engines: {node: '>=20'} - dependencies: - copy-file: 11.1.0 - globby: 16.2.0 - junk: 4.0.1 - micromatch: 4.0.8 - p-filter: 4.1.0 - p-map: 7.0.4 - dev: true - /cross-env@10.1.0: + cross-env@10.1.0: resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} engines: {node: '>=20'} hasBin: true - dependencies: - '@epic-web/invariant': 1.0.0 - cross-spawn: 7.0.6 - dev: true - /cross-spawn@7.0.6: + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - /css-tree@3.2.1: + css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dependencies: - mdn-data: 2.27.1 - source-map-js: 1.2.1 - dev: true - /css.escape@1.5.1: + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - dev: true - /csstype@3.2.3: + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - dev: true - /damerau-levenshtein@1.0.8: + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - /data-urls@7.0.0: + data-urls@7.0.0: resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - dependencies: - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1 - transitivePeerDependencies: - - '@noble/hashes' - dev: true - /data-view-buffer@1.0.2: + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: true - /data-view-byte-length@1.0.2: + data-view-byte-length@1.0.2: resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: true - /data-view-byte-offset@1.0.1: + data-view-byte-offset@1.0.1: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: true - /debug@3.2.7: + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug@4.4.3: + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: @@ -2534,296 +1717,129 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.3 - /decimal.js@10.6.0: + decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - dev: true - /deep-is@0.1.4: + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /define-data-property@1.1.4: + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: true - /define-properties@1.2.1: + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: true - /dequal@2.0.3: + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true - /detect-libc@2.1.2: + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - requiresBuild: true - /doctrine@2.1.0: + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dev: true - /dom-accessibility-api@0.6.3: + dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - dev: true - /dunder-proto@1.0.1: + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: true - /electron-to-chromium@1.5.344: - resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} + electron-to-chromium@1.5.389: + resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} - /emoji-regex@8.0.0: + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /emoji-regex@9.2.2: + emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - /enhanced-resolve@5.21.0: - resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + enhanced-resolve@5.24.2: + resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.3 - dev: true - /entities@8.0.0: + entities@8.0.0: resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} engines: {node: '>=20.19.0'} - dev: true - /es-abstract@1.24.2: + es-abstract-get@1.0.0: + resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.2: resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.3 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.4 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.20 - dev: true - /es-define-property@1.0.1: + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} - dev: true - /es-errors@1.3.0: + es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: true - /es-iterator-helpers@1.3.2: - resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} + es-iterator-helpers@1.3.3: + resolution: {integrity: sha512-0PuBxFi+4uPanB97iDxCLWuHeYud2FALrw5HFZGtAF38UpJDbDC8frwp2cnDyae692CQ0dou60UwWfhgsa4U/g==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 - dev: true - /es-module-lexer@2.1.0: - resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} - dev: true + es-module-lexer@2.3.0: + resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} - /es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.1.0: + es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.3 - dev: true - /es-shim-unscopables@1.1.0: + es-shim-unscopables@1.1.0: resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.3 - dev: true - /es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + es-to-primitive@1.3.4: + resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - dev: true - /esbuild@0.28.0: - resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.0 - '@esbuild/android-arm': 0.28.0 - '@esbuild/android-arm64': 0.28.0 - '@esbuild/android-x64': 0.28.0 - '@esbuild/darwin-arm64': 0.28.0 - '@esbuild/darwin-x64': 0.28.0 - '@esbuild/freebsd-arm64': 0.28.0 - '@esbuild/freebsd-x64': 0.28.0 - '@esbuild/linux-arm': 0.28.0 - '@esbuild/linux-arm64': 0.28.0 - '@esbuild/linux-ia32': 0.28.0 - '@esbuild/linux-loong64': 0.28.0 - '@esbuild/linux-mips64el': 0.28.0 - '@esbuild/linux-ppc64': 0.28.0 - '@esbuild/linux-riscv64': 0.28.0 - '@esbuild/linux-s390x': 0.28.0 - '@esbuild/linux-x64': 0.28.0 - '@esbuild/netbsd-arm64': 0.28.0 - '@esbuild/netbsd-x64': 0.28.0 - '@esbuild/openbsd-arm64': 0.28.0 - '@esbuild/openbsd-x64': 0.28.0 - '@esbuild/openharmony-arm64': 0.28.0 - '@esbuild/sunos-x64': 0.28.0 - '@esbuild/win32-arm64': 0.28.0 - '@esbuild/win32-ia32': 0.28.0 - '@esbuild/win32-x64': 0.28.0 - dev: true - - /escalade@3.2.0: + + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - /escape-string-regexp@4.0.0: + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: true - /eslint-compat-utils@0.5.1(eslint@10.4.0): + eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' - dependencies: - eslint: 10.4.0 - semver: 7.7.4 - dev: true - /eslint-config-prettier@10.1.8(eslint@10.4.0): + eslint-config-prettier@10.1.8: resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' - dependencies: - eslint: 10.4.0 - dev: true - /eslint-import-resolver-node@0.3.10: + eslint-import-resolver-node@0.3.10: resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 2.0.0-next.6 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.3)(eslint-import-resolver-node@0.3.10)(eslint@10.4.0): - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + eslint-module-utils@2.14.0: + resolution: {integrity: sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2842,28 +1858,14 @@ packages: optional: true eslint-import-resolver-webpack: optional: true - dependencies: - '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - debug: 3.2.7 - eslint: 10.4.0 - eslint-import-resolver-node: 0.3.10 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-es-x@7.8.0(eslint@10.4.0): + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - '@eslint-community/regexpp': 4.12.2 - eslint: 10.4.0 - eslint-compat-utils: 0.5.1(eslint@10.4.0) - dev: true - /eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.3)(eslint@10.4.0): + eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -2872,60 +1874,15 @@ packages: peerDependenciesMeta: '@typescript-eslint/parser': optional: true - dependencies: - '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.59.3(eslint@10.4.0)(typescript@6.0.3) - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 10.4.0 - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.3)(eslint-import-resolver-node@0.3.10)(eslint@10.4.0) - hasown: 2.0.3 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.10.2(eslint@10.4.0): + eslint-plugin-jsx-a11y@6.10.2: resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.11.3 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 10.4.0 - hasown: 2.0.3 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - dev: true - /eslint-plugin-n@18.0.1(eslint@10.4.0)(typescript@6.0.3): - resolution: {integrity: sha512-q3ARhk+eZRc7myR0KHx+R3/GJeOHF+Ir6PK95Pu2tEX8Sl/4BIpmmVLva2kPrjC2gCmn6WHlHm+3yeo6Rxhycw==} + eslint-plugin-n@18.2.1: + resolution: {integrity: sha512-aO3C9//yq8JIvYOi/T+jPvcZ9hZzpwzbR8esrYpFtgE9vpbyM8kn42AQOtIqYspVmpaSWr8X+nrlQuAJYxXAaw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=8.57.1' @@ -2936,26 +1893,13 @@ packages: optional: true typescript: optional: true - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - enhanced-resolve: 5.21.0 - eslint: 10.4.0 - eslint-plugin-es-x: 7.8.0(eslint@10.4.0) - get-tsconfig: 4.14.0 - globals: 15.15.0 - globrex: 0.1.2 - ignore: 5.3.2 - semver: 7.7.4 - typescript: 6.0.3 - dev: true - /eslint-plugin-no-only-tests@3.4.0: + eslint-plugin-no-only-tests@3.4.0: resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} engines: {node: '>=5.0.0'} - dev: true - /eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8)(eslint@10.4.0)(prettier@3.8.3): - resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} + eslint-plugin-prettier@5.5.6: + resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2967,122 +1911,54 @@ packages: optional: true eslint-config-prettier: optional: true - dependencies: - eslint: 10.4.0 - eslint-config-prettier: 10.1.8(eslint@10.4.0) - prettier: 3.8.3 - prettier-linter-helpers: 1.0.1 - synckit: 0.11.12 - dev: true - /eslint-plugin-react-hooks@7.1.1(eslint@10.4.0): + eslint-plugin-react-hooks@7.1.1: resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - eslint: 10.4.0 - hermes-parser: 0.25.1 - zod: 4.3.6 - zod-validation-error: 4.0.2(zod@4.3.6) - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-react@7.37.5(eslint@10.4.0): + eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.3.2 - eslint: 10.4.0 - estraverse: 5.3.0 - hasown: 2.0.3 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.6 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - dev: true - /eslint-plugin-regexp@3.1.0(eslint@10.4.0): - resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} + eslint-plugin-regexp@3.1.1: + resolution: {integrity: sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.6 - eslint: 10.4.0 - jsdoc-type-pratt-parser: 7.2.0 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - scslre: 0.3.0 - dev: true - /eslint-plugin-simple-import-sort@13.0.0(eslint@10.4.0): + eslint-plugin-simple-import-sort@13.0.0: resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==} peerDependencies: eslint: '>=5.0.0' - dependencies: - eslint: 10.4.0 - dev: true - /eslint-plugin-testing-library@7.16.2(eslint@10.4.0)(typescript@6.0.3): + eslint-plugin-testing-library@7.16.2: resolution: {integrity: sha512-8gleGnQXK2ZA3hHwjCwpYTZvM+9VsrJ+/9kDI8CjqAQGAdMQOdn/rJNu7ZySENuiWlGKQWyZJ4ZjEg2zamaRHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - dependencies: - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/utils': 8.59.0(eslint@10.4.0)(typescript@6.0.3) - eslint: 10.4.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /eslint-scope@9.1.2: + eslint-scope@9.1.2: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@4.2.1: + eslint-visitor-keys@4.2.1: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /eslint-visitor-keys@5.0.1: + eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dev: true - /eslint@10.4.0: - resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==} + eslint@10.6.0: + resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -3090,152 +1966,73 @@ packages: peerDependenciesMeta: jiti: optional: true - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5 - '@eslint/config-helpers': 0.6.0 - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.15.0 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - dev: true - /espree@10.4.0: + espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 4.2.1 - dev: true - /espree@11.2.0: + espree@11.2.0: resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 5.0.1 - dev: true - /esquery@1.7.0: + esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - /estraverse@5.3.0: + estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true - /estree-walker@2.0.2: + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /estree-walker@3.0.3: + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.8 - dev: true - /esutils@2.0.3: + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true - /expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - dev: true - /exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - dev: true + exsolve@1.1.0: + resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} - /fast-deep-equal@3.1.3: + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - /fast-diff@1.3.0: + fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.3: + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: true - /fast-json-stable-stringify@2.1.0: + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - /fast-levenshtein@2.0.6: + fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - /fast-string-truncated-width@3.0.3: + fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} - dev: true - /fast-string-width@3.0.2: + fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - dependencies: - fast-string-truncated-width: 3.0.3 - dev: true - /fast-wrap-ansi@0.2.0: - resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} - dependencies: - fast-string-width: 3.0.2 - dev: true + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - /fastq@1.20.1: + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - dependencies: - reusify: 1.1.0 - dev: true - /fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3243,611 +2040,356 @@ packages: peerDependenciesMeta: picomatch: optional: true - dependencies: - picomatch: 4.0.4 - dev: true - /file-entry-cache@8.0.0: + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - dependencies: - flat-cache: 4.0.1 - dev: true - /fill-range@7.1.1: + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - /find-up@5.0.0: + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - /flat-cache@4.0.1: + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - dependencies: - flatted: 3.4.2 - keyv: 4.5.4 - dev: true - /flatted@3.4.2: + flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - dev: true - /for-each@0.3.5: + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - dev: true - /fs.realpath@1.0.0: + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - /fsevents@2.3.3: + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - dev: true - optional: true - /function-bind@1.1.2: + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true - /function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + function.prototype.name@1.2.0: + resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.3 - is-callable: 1.2.7 - dev: true - /functions-have-names@1.2.3: + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - /generator-function@2.0.1: + generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} - dev: true - /gensync@1.0.0-beta.2: + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-caller-file@2.0.5: + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true - /get-intrinsic@1.3.0: + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.3 - math-intrinsics: 1.1.0 - dev: true - /get-proto@1.0.1: + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - dev: true - /get-symbol-description@1.1.0: + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - dev: true - /get-tsconfig@4.14.0: + get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - /glob-parent@5.1.2: + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob-parent@6.0.2: + glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob@13.0.6: + glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - dependencies: - minimatch: 10.2.5 - minipass: 7.1.3 - path-scurry: 2.0.2 - dev: true - /glob@7.2.3: + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.5 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /globals@14.0.0: + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - dev: true - /globals@15.15.0: + globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - dev: true - /globalthis@1.0.4: + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - dev: true - /globby@16.2.0: - resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} + globby@16.2.1: + resolution: {integrity: sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==} engines: {node: '>=20'} - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - is-path-inside: 4.0.0 - slash: 5.1.0 - unicorn-magic: 0.4.0 - dev: true - /globrex@0.1.2: + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: true - /gopd@1.2.0: + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - dev: true - /graceful-fs@4.2.11: + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /graphql@16.13.2: - resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} + graphql@16.14.2: + resolution: {integrity: sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: true - /has-bigints@1.1.0: + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - dev: true - /has-flag@4.0.0: + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true - /has-property-descriptors@1.0.2: + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.1 - dev: true - /has-proto@1.2.0: + has-proto@1.2.0: resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - dev: true - /has-symbols@1.1.0: + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} - dev: true - /has-tostringtag@1.0.2: + has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.1.0 - dev: true - /hasown@2.0.3: - resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - /headers-polyfill@5.0.1: + headers-polyfill@5.0.1: resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} - dependencies: - '@types/set-cookie-parser': 2.4.10 - set-cookie-parser: 3.1.0 - dev: true - /hermes-estree@0.25.1: + hermes-estree@0.25.1: resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - dev: true - /hermes-parser@0.25.1: + hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - dependencies: - hermes-estree: 0.25.1 - dev: true - /html-encoding-sniffer@6.0.0: + html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - dependencies: - '@exodus/bytes': 1.15.0 - transitivePeerDependencies: - - '@noble/hashes' - dev: true - /html-escaper@2.0.2: + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - /ignore@5.3.2: + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - dev: true - /ignore@7.0.5: + ignore@7.0.5: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - dev: true - /import-fresh@3.3.1: + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - /imurmurhash@0.1.4: + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true - /indent-string@4.0.0: + indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: true - /inflight@1.0.6: + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - /inherits@2.0.4: + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - /internal-slot@1.1.0: + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.3 - side-channel: 1.1.0 - dev: true - /is-array-buffer@3.0.5: + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - dev: true - /is-async-function@2.1.1: + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - dev: true - /is-bigint@1.1.0: + is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} - dependencies: - has-bigints: 1.1.0 - dev: true - /is-boolean-object@1.2.2: + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: true - /is-callable@1.2.7: + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true - /is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.3 - dev: true - /is-data-view@1.0.2: + is-data-view@1.0.2: resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - dev: true - /is-date-object@1.1.0: + is-date-object@1.1.0: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: true - /is-extglob@2.1.1: + is-document.all@1.0.0: + resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true - /is-finalizationregistry@1.1.1: + is-finalizationregistry@1.1.1: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: true - /is-fullwidth-code-point@3.0.0: + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true - /is-generator-function@1.1.2: + is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - dev: true - /is-glob@4.0.3: + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - /is-map@2.0.3: + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - dev: true - /is-negative-zero@2.0.3: + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - dev: true - /is-node-process@1.2.0: + is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - dev: true - /is-number-object@1.1.1: + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true - /is-path-inside@4.0.0: + is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} - dev: true - /is-potential-custom-element-name@1.0.1: + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-regex@1.2.1: + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.3 - dev: true - /is-set@2.0.3: + is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - dev: true - /is-shared-array-buffer@1.0.4: + is-shared-array-buffer@1.0.4: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: true - /is-string@1.1.1: + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.1.1: + is-symbol@1.1.1: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - dev: true - /is-typed-array@1.1.15: + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.20 - dev: true - /is-weakmap@2.0.2: + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - dev: true - /is-weakref@1.1.1: + is-weakref@1.1.1: resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: true - /is-weakset@2.0.4: + is-weakset@2.0.4: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - dev: true - /isarray@0.0.1: + isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true - /isarray@1.0.0: + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - /isarray@2.0.5: + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isexe@2.0.0: + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - /istanbul-lib-coverage@3.2.2: + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - dev: true - /istanbul-lib-report@3.0.1: + istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true - /istanbul-reports@3.2.0: + istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - /iterator.prototype@1.1.5: + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - dev: true - /js-tokens@10.0.0: + js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} - dev: true - /js-tokens@4.0.0: + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - /jsdoc-type-pratt-parser@7.2.0: + jsdoc-type-pratt-parser@7.2.0: resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} engines: {node: '>=20.0.0'} - dev: true - /jsdom@29.1.1: + jsdom@29.1.1: resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: @@ -3855,404 +2397,234 @@ packages: peerDependenciesMeta: canvas: optional: true - dependencies: - '@asamuzakjp/css-color': 5.1.11 - '@asamuzakjp/dom-selector': 7.1.1 - '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) - '@exodus/bytes': 1.15.0 - css-tree: 3.2.1 - data-urls: 7.0.0 - decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0 - is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.5 - parse5: 8.0.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 6.0.1 - undici: 7.25.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.1 - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - '@noble/hashes' - dev: true - /jsesc@3.1.0: + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true - /json-buffer@3.0.1: + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - /json-schema-traverse@0.4.1: + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - /json5@1.0.2: + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - /json5@2.2.3: + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsx-ast-utils@3.3.5: + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - dev: true - /junk@4.0.1: + junk@4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} - dev: true - /keyv@4.5.4: + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - /kolorist@1.8.0: + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - dev: true - /language-subtag-registry@0.3.23: + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - dev: true - /language-tags@1.0.9: + language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - dependencies: - language-subtag-registry: 0.3.23 - dev: true - /levn@0.4.1: + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - /lightningcss-android-arm64@1.32.0: + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /lightningcss-darwin-arm64@1.32.0: + lightningcss-darwin-arm64@1.32.0: resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /lightningcss-darwin-x64@1.32.0: + lightningcss-darwin-x64@1.32.0: resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /lightningcss-freebsd-x64@1.32.0: + lightningcss-freebsd-x64@1.32.0: resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /lightningcss-linux-arm-gnueabihf@1.32.0: + lightningcss-linux-arm-gnueabihf@1.32.0: resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /lightningcss-linux-arm64-gnu@1.32.0: + lightningcss-linux-arm64-gnu@1.32.0: resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /lightningcss-linux-arm64-musl@1.32.0: + lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /lightningcss-linux-x64-gnu@1.32.0: + lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /lightningcss-linux-x64-musl@1.32.0: + lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /lightningcss-win32-arm64-msvc@1.32.0: + lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /lightningcss-win32-x64-msvc@1.32.0: + lightningcss-win32-x64-msvc@1.32.0: resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /lightningcss@1.32.0: + lightningcss@1.32.0: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - dev: true - /local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} engines: {node: '>=14'} - dependencies: - mlly: 1.8.2 - pkg-types: 2.3.0 - quansync: 0.2.11 - dev: true - /locate-path@6.0.0: + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - /loose-envify@1.4.0: + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: true - /lru-cache@11.3.5: - resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} engines: {node: 20 || >=22} - dev: true - /lru-cache@5.1.1: + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - /lz-string@1.5.0: + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - dev: true - /magic-string@0.30.21: + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - dev: true - /magicast@0.5.2: - resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - source-map-js: 1.2.1 - dev: true + magicast@0.5.3: + resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} - /make-dir@4.0.0: + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - dependencies: - semver: 7.7.4 - dev: true - /math-intrinsics@1.1.0: + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - dev: true - /mdn-data@2.27.1: + mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - dev: true - /meow@14.1.0: + meow@14.1.0: resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} engines: {node: '>=20'} - dev: true - /merge2@1.4.1: + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true - /micromatch@4.0.8: + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.2 - dev: true - /min-indent@1.0.1: + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - dev: true - /minimatch@10.2.5: + minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - dependencies: - brace-expansion: 5.0.5 - dev: true - /minimatch@3.1.5: + minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - dependencies: - brace-expansion: 1.1.14 - dev: true - /minimist@1.2.8: + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - /minipass@7.1.3: + minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - dev: true - /mkdirp@1.0.4: + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: true - /mlly@1.8.2: + mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - dependencies: - acorn: 8.16.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - dev: true - /ms@2.1.3: + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /msw@2.14.6(typescript@6.0.3): + msw@2.14.6: resolution: {integrity: sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==} engines: {node: '>=18'} hasBin: true - requiresBuild: true peerDependencies: typescript: '>= 4.8.x' peerDependenciesMeta: typescript: optional: true - dependencies: - '@inquirer/confirm': 6.0.12 - '@mswjs/interceptors': 0.41.6 - '@open-draft/deferred-promise': 3.0.0 - '@types/statuses': 2.0.6 - cookie: 1.1.1 - graphql: 16.13.2 - headers-polyfill: 5.0.1 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - rettime: 0.11.11 - statuses: 2.0.2 - strict-event-emitter: 0.5.1 - tough-cookie: 6.0.1 - type-fest: 5.6.0 - typescript: 6.0.3 - until-async: 3.0.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - dev: true - /mute-stream@3.0.0: + mute-stream@3.0.0: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} - dev: true - /nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.15: + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare@1.4.0: + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.6)(react@19.2.6): - resolution: {integrity: sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==} + next@16.2.10: + resolution: {integrity: sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -4271,379 +2643,212 @@ packages: optional: true sass: optional: true - dependencies: - '@next/env': 16.2.6 - '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.23 - caniuse-lite: 1.0.30001791 - postcss: 8.4.31 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.6) - optionalDependencies: - '@next/swc-darwin-arm64': 16.2.6 - '@next/swc-darwin-x64': 16.2.6 - '@next/swc-linux-arm64-gnu': 16.2.6 - '@next/swc-linux-arm64-musl': 16.2.6 - '@next/swc-linux-x64-gnu': 16.2.6 - '@next/swc-linux-x64-musl': 16.2.6 - '@next/swc-win32-arm64-msvc': 16.2.6 - '@next/swc-win32-x64-msvc': 16.2.6 - sharp: 0.34.5 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: false - /node-exports-info@1.6.0: - resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + node-exports-info@1.6.2: + resolution: {integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==} engines: {node: '>= 0.4'} - dependencies: - array.prototype.flatmap: 1.3.3 - es-errors: 1.3.0 - object.entries: 1.1.9 - semver: 6.3.1 - dev: true - /node-releases@2.0.38: - resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + node-releases@2.0.50: + resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} + engines: {node: '>=18'} - /noms@0.0.0: + noms@0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} - dependencies: - inherits: 2.0.4 - readable-stream: 1.0.34 - dev: true - /object-assign@4.1.1: + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true - /object-inspect@1.13.4: + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - dev: true - /object-keys@1.1.1: + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true - /object.assign@4.1.7: + object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - dev: true - /object.entries@1.1.9: + object.entries@1.1.9: resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: true - /object.fromentries@2.0.8: + object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.1 - dev: true - /object.groupby@1.0.3: + object.groupby@1.0.3: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - dev: true - /object.values@1.2.1: + object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: true - /obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - dev: true + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} - /once@1.4.0: + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - /optionator@0.9.4: + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - dev: true - /outvariant@1.4.3: + outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - dev: true - /own-keys@1.0.1: + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - dev: true - /p-event@6.0.1: + p-event@6.0.1: resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} engines: {node: '>=16.17'} - dependencies: - p-timeout: 6.1.4 - dev: true - /p-filter@4.1.0: + p-filter@4.1.0: resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} engines: {node: '>=18'} - dependencies: - p-map: 7.0.4 - dev: true - /p-limit@3.1.0: + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-locate@5.0.0: + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - /p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + p-map@7.0.5: + resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==} engines: {node: '>=18'} - dev: true - /p-timeout@6.1.4: + p-timeout@6.1.4: resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} engines: {node: '>=14.16'} - dev: true - /package-json-from-dist@1.0.1: + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - dev: true - /parent-module@1.0.1: + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - /parse5@8.0.1: + parse5@8.0.1: resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} - dependencies: - entities: 8.0.0 - dev: true - /path-browserify@1.0.1: + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true - /path-exists@4.0.0: + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true - /path-is-absolute@1.0.1: + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true - /path-key@3.1.1: + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true - /path-parse@1.0.7: + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - /path-scurry@2.0.2: + path-scurry@2.0.2: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - dependencies: - lru-cache: 11.3.5 - minipass: 7.1.3 - dev: true - /path-to-regexp@6.3.0: + path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - dev: true - /pathe@2.0.3: + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - dev: true - /picocolors@1.1.1: + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - /picomatch@2.3.2: + picomatch@2.3.2: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - dev: true - /picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} - dev: true - /pkg-types@1.3.1: + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - dependencies: - confbox: 0.1.8 - mlly: 1.8.2 - pathe: 2.0.3 - dev: true - /pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - dependencies: - confbox: 0.2.4 - exsolve: 1.0.8 - pathe: 2.0.3 - dev: true + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} - /possible-typed-array-names@1.1.0: + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - dev: true - /postcss@8.4.31: + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: false - /postcss@8.5.14: - resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + postcss@8.5.16: + resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: true - /prelude-ls@1.2.1: + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true - /prettier-linter-helpers@1.0.1: + prettier-linter-helpers@1.0.1: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - /prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + prettier@3.9.5: + resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} engines: {node: '>=14'} hasBin: true - dev: true - /pretty-format@27.5.1: + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - /process-nextick-args@2.0.1: + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - /prop-types@15.8.1: + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true - /punycode@2.3.1: + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - dev: true - /quansync@0.2.11: + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - dev: true - /queue-microtask@1.2.3: + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - /react-dom@19.2.6(react@19.2.6): - resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} + react-dom@19.2.7: + resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} peerDependencies: - react: ^19.2.6 - dependencies: - react: 19.2.6 - scheduler: 0.27.0 + react: ^19.2.7 - /react-is@16.13.1: + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true - /react-is@17.0.2: + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - /react-router-dom@7.15.1(react-dom@19.2.6)(react@19.2.6): - resolution: {integrity: sha512-AzF62gjY6U9rkMq4RfP/r2EVtQ7DMfNMjyOp/flLTCrtRylLiK4wT4pSq6O8rOXZ2eXdZYJPEYe+ifomiv+Igg==} + react-router-dom@7.18.1: + resolution: {integrity: sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - dependencies: - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - react-router: 7.15.1(react-dom@19.2.6)(react@19.2.6) - dev: false - /react-router@7.15.1(react-dom@19.2.6)(react@19.2.6): - resolution: {integrity: sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==} + react-router@7.18.1: + resolution: {integrity: sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4651,509 +2856,240 @@ packages: peerDependenciesMeta: react-dom: optional: true - dependencies: - cookie: 1.1.1 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - set-cookie-parser: 2.7.2 - dev: false - /react@19.2.6: - resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} + react@19.2.7: + resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} - /readable-stream@1.0.34: + readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.8: + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - /redent@3.0.0: + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - /refa@0.12.1: + refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dependencies: - '@eslint-community/regexpp': 4.12.2 - dev: true - /reflect.getprototypeof@1.0.10: + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - dev: true - /regexp-ast-analysis@0.7.1: + regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dependencies: - '@eslint-community/regexpp': 4.12.2 - refa: 0.12.1 - dev: true - /regexp.prototype.flags@1.5.4: + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - dev: true - /require-directory@2.1.1: + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true - /require-from-string@2.0.2: + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: true - /resolve-from@4.0.0: + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: true - /resolve-pkg-maps@1.0.0: + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - /resolve@2.0.0-next.6: - resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + resolve@2.0.0-next.7: + resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} engines: {node: '>= 0.4'} hasBin: true - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.1 - node-exports-info: 1.6.0 - object-keys: 1.1.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /rettime@0.11.11: + rettime@0.11.11: resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} - dev: true - /reusify@1.1.0: + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - /rimraf@6.1.3: + rimraf@6.1.3: resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==} engines: {node: 20 || >=22} hasBin: true - dependencies: - glob: 13.0.6 - package-json-from-dist: 1.0.1 - dev: true - /rolldown@1.0.1: + rolldown@1.0.1: resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - dependencies: - '@oxc-project/types': 0.130.0 - '@rolldown/pluginutils': 1.0.1 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.1 - '@rolldown/binding-darwin-arm64': 1.0.1 - '@rolldown/binding-darwin-x64': 1.0.1 - '@rolldown/binding-freebsd-x64': 1.0.1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 - '@rolldown/binding-linux-arm64-gnu': 1.0.1 - '@rolldown/binding-linux-arm64-musl': 1.0.1 - '@rolldown/binding-linux-ppc64-gnu': 1.0.1 - '@rolldown/binding-linux-s390x-gnu': 1.0.1 - '@rolldown/binding-linux-x64-gnu': 1.0.1 - '@rolldown/binding-linux-x64-musl': 1.0.1 - '@rolldown/binding-openharmony-arm64': 1.0.1 - '@rolldown/binding-wasm32-wasi': 1.0.1 - '@rolldown/binding-win32-arm64-msvc': 1.0.1 - '@rolldown/binding-win32-x64-msvc': 1.0.1 - dev: true - /run-parallel@1.2.0: + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - /safe-array-concat@1.1.4: + safe-array-concat@1.1.4: resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - /safe-push-apply@1.0.0: + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - dev: true - /safe-regex-test@1.1.0: + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - dev: true - /saxes@6.0.0: + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - dependencies: - xmlchars: 2.2.0 - dev: true - /scheduler@0.27.0: + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - /scslre@0.3.0: + scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} - dependencies: - '@eslint-community/regexpp': 4.12.2 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - dev: true - /semver@6.3.1: + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true - /set-cookie-parser@2.7.2: + set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} - dev: false - /set-cookie-parser@3.1.0: - resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} - dev: true + set-cookie-parser@3.1.1: + resolution: {integrity: sha512-vM9SUhjsUYs6UeJUmygc5Ofm5eQGe85riob5ju6XCgFGJI5PLV4nrDAQpQjd+LkFBpAkADn5BQQpZ9EUNkyLuA==} - /set-function-length@1.2.2: + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - dev: true - /set-function-name@2.0.2: + set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: true - /set-proto@1.0.0: + set-proto@1.0.0: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - dev: true - /sharp@0.34.5: + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.7.4 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 - dev: false - optional: true - /shebang-command@2.0.0: + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - /shebang-regex@3.0.0: + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true - /side-channel-list@1.0.1: + side-channel-list@1.0.1: resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - dev: true - /side-channel-map@1.0.1: + side-channel-map@1.0.1: resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - dev: true - /side-channel-weakmap@1.0.2: + side-channel-weakmap@1.0.2: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - dev: true - /side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.1 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - dev: true - /siginfo@2.0.0: + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - /signal-exit@4.1.0: + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - dev: true - /slash@5.1.0: + slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - dev: true - /source-map-js@1.2.1: + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - /stackback@0.0.2: + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - /statuses@2.0.2: + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - dev: true - /std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} - dev: true + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} - /stop-iteration-iterator@1.1.0: + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - dev: true - /strict-event-emitter@0.5.1: + strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - dev: true - /string-width@4.2.3: + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - /string.prototype.includes@2.0.1: + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - dev: true - /string.prototype.matchall@4.0.12: + string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - dev: true - /string.prototype.repeat@1.0.0: + string.prototype.repeat@1.0.0: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.2 - dev: true - /string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + string.prototype.trim@1.2.11: + resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - dev: true - /string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + string.prototype.trimend@1.0.10: + resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: true - /string.prototype.trimstart@1.0.8: + string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: true - /string_decoder@0.10.31: + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - /string_decoder@1.1.1: + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /strip-ansi@6.0.1: + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - /strip-bom@3.0.0: + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: true - /strip-indent@3.0.0: + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: true - /styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.6): + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5165,13 +3101,8 @@ packages: optional: true babel-plugin-macros: optional: true - dependencies: - '@babel/core': 7.29.0 - client-only: 0.0.1 - react: 19.2.6 - dev: false - /styled-jsx@5.1.7(@babel/core@7.29.0)(react@19.2.6): + styled-jsx@5.1.7: resolution: {integrity: sha512-HPLmEIYprxCeWDMLYiaaAhsV3yGfIlCqzuVOybE6fjF3SUJmH67nCoMDO+nAvHNHo46OfvpCNu4Rcue82dMNFg==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5183,230 +3114,137 @@ packages: optional: true babel-plugin-macros: optional: true - dependencies: - '@babel/core': 7.29.0 - client-only: 0.0.1 - react: 19.2.6 - dev: false - /supports-color@7.2.0: + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true - /symbol-tree@3.2.4: + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/core': 0.2.9 - dev: true - /tagged-tag@1.0.0: + tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - dev: true - /tapable@2.3.3: + tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - dev: true - /through2@2.0.5: + through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: true - /tinybench@2.9.0: + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - dev: true - /tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} - dev: true - /tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - dev: true - /tinyrainbow@3.1.0: + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - dev: true - /tldts-core@7.0.28: - resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} - dev: true + tldts-core@7.4.7: + resolution: {integrity: sha512-rNlAI8fKn/JckBMUSbNL/ES2kmDiurWaE49l+ikwEc9A6lFR7gMx9AhgQMQKBK4H5w4pKLH64JzZfB99uRsGNQ==} - /tldts@7.0.28: - resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} + tldts@7.4.7: + resolution: {integrity: sha512-56L0/9HELHSsG1bFCzay8UoLxzRL7kpFf7Wl5q/kSYwiSJGACvro61xnKzPNM+SadxllzdtXsKDSXE7HPeqIAw==} hasBin: true - dependencies: - tldts-core: 7.0.28 - dev: true - /to-regex-range@5.0.1: + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - /tough-cookie@6.0.1: - resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + tough-cookie@6.0.2: + resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} engines: {node: '>=16'} - dependencies: - tldts: 7.0.28 - dev: true - /tr46@6.0.0: + tr46@6.0.0: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} - dependencies: - punycode: 2.3.1 - dev: true - /ts-api-utils@2.5.0(typescript@6.0.3): + ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' - dependencies: - typescript: 6.0.3 - dev: true - /tsconfig-paths@3.15.0: + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - /tslib@2.8.1: + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - /tsx@4.22.0: - resolution: {integrity: sha512-8ccZMPD69s1AbKXx0C5ddTNZfNjwV04iIKgjZmKfKxMynEtSYcK0Lh7iQFh53fI5Yu4pb9usgAiqyPmEONaALg==} + tsx@4.23.0: + resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} engines: {node: '>=18.0.0'} hasBin: true - dependencies: - esbuild: 0.28.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /type-check@0.4.0: + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - /type-fest@5.6.0: - resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} engines: {node: '>=20'} - dependencies: - tagged-tag: 1.0.0 - dev: true - /typed-array-buffer@1.0.3: + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - dev: true - /typed-array-byte-length@1.0.3: + typed-array-byte-length@1.0.3: resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - dev: true - /typed-array-byte-offset@1.0.4: + typed-array-byte-offset@1.0.4: resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - dev: true - /typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + typed-array-length@1.0.8: + resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - dev: true - /typescript@6.0.3: + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - dev: true + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} - /unbox-primitive@1.1.0: + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - dev: true - /undici-types@7.24.6: + undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} - dev: true - /undici@7.25.0: - resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} - dev: true - /unicorn-magic@0.4.0: + unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} engines: {node: '>=20'} - dev: true - /unplugin-dts@1.0.0(typescript@6.0.3)(vite@8.0.13): + unplugin-dts@1.0.0: resolution: {integrity: sha512-qz+U1lCscwq+t8Mkaxy5Esa7IQ5wWV18b4mnioOXSdnPaNiJ0+qgE3I+KL6UkXYZWxxGo2qdGone8LEQ52Sfkw==} peerDependencies: '@microsoft/api-extractor': '>=7' @@ -5435,61 +3273,31 @@ packages: optional: true webpack: optional: true - dependencies: - '@rollup/pluginutils': 5.3.0 - '@volar/typescript': 2.4.28 - compare-versions: 6.1.1 - debug: 4.4.3 - kolorist: 1.8.0 - local-pkg: 1.1.2 - magic-string: 0.30.21 - typescript: 6.0.3 - unplugin: 2.3.11 - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - transitivePeerDependencies: - - supports-color - dev: true - /unplugin@2.3.11: + unplugin@2.3.11: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} - dependencies: - '@jridgewell/remapping': 2.3.5 - acorn: 8.16.0 - picomatch: 4.0.4 - webpack-virtual-modules: 0.6.2 - dev: true - /until-async@3.0.2: + until-async@3.0.2: resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} - dev: true - /untildify@4.0.0: + untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - dev: true - /update-browserslist-db@1.2.3(browserslist@4.28.2): + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.28.2 - escalade: 3.2.0 - picocolors: 1.1.1 - /uri-js@4.4.1: + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: true - /util-deprecate@1.0.2: + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - /vite-plugin-dts@5.0.0(typescript@6.0.3)(vite@8.0.13): + vite-plugin-dts@5.0.0: resolution: {integrity: sha512-VLNAUttBq7pLxxL/m/ztjd5zj5yiviiC7ijfPFVLK5c45FLcibvieBsdjSka3a4ag1qdrAF9K3OysH4/lW+rPQ==} peerDependencies: '@microsoft/api-extractor': '>=7' @@ -5502,20 +3310,8 @@ packages: optional: true vite: optional: true - dependencies: - unplugin-dts: 1.0.0(typescript@6.0.3)(vite@8.0.13) - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - transitivePeerDependencies: - - '@rspack/core' - - '@vue/language-core' - - esbuild - - rolldown - - supports-color - - typescript - - webpack - dev: true - /vite@8.0.13(@types/node@25.8.0)(tsx@4.22.0): + vite@8.0.13: resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -5557,32 +3353,21 @@ packages: optional: true yaml: optional: true - dependencies: - '@types/node': 25.8.0 - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.14 - rolldown: 1.0.1 - tinyglobby: 0.2.16 - tsx: 4.22.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vitest@4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(vite@8.0.13): - resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.6 - '@vitest/browser-preview': 4.1.6 - '@vitest/browser-webdriverio': 4.1.6 - '@vitest/coverage-istanbul': 4.1.6 - '@vitest/coverage-v8': 4.1.6 - '@vitest/ui': 4.1.6 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5609,34 +3394,8 @@ packages: optional: true jsdom: optional: true - dependencies: - '@types/node': 25.8.0 - '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) - '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) - '@vitest/pretty-format': 4.1.6 - '@vitest/runner': 4.1.6 - '@vitest/snapshot': 4.1.6 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.1.1 - tinyglobby: 0.2.16 - tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - why-is-node-running: 2.3.0 - transitivePeerDependencies: - - msw - dev: true - /vitest@4.1.6(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6)(vite@8.0.13): + vitest@4.1.6: resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true @@ -5676,156 +3435,3319 @@ packages: optional: true jsdom: optional: true - dependencies: - '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) - '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) - '@vitest/pretty-format': 4.1.6 - '@vitest/runner': 4.1.6 - '@vitest/snapshot': 4.1.6 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 - jsdom: 29.1.1 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.1.1 - tinyglobby: 0.2.16 - tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) - why-is-node-running: 2.3.0 - transitivePeerDependencies: - - msw - dev: true - /vitest@4.1.6(@vitest/coverage-v8@4.1.6)(vite@8.0.13): - resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.6 - '@vitest/browser-preview': 4.1.6 - '@vitest/browser-webdriverio': 4.1.6 - '@vitest/coverage-istanbul': 4.1.6 - '@vitest/coverage-v8': 4.1.6 - '@vitest/ui': 4.1.6 - happy-dom: '*' - jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/coverage-istanbul': - optional: true - '@vitest/coverage-v8': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + web-vitals@5.2.0: + resolution: {integrity: sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.22: + resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.2: + resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} + engines: {node: '>=10'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + +snapshots: + + '@adobe/css-tools@4.5.0': {} + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.1.1': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bcoe/v8-coverage@1.0.2': {} + + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.1.0': {} + + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.1.0 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.6(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0)': + dependencies: + eslint: 10.6.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/compat@2.1.0(eslint@10.6.0)': + dependencies: + '@eslint/core': 1.2.1 + optionalDependencies: + eslint: 10.6.0 + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.6.0': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.0 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@10.0.1(eslint@10.6.0)': + optionalDependencies: + eslint: 10.6.0 + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@exodus/bytes@1.15.1': {} + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.11.2 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@inquirer/ansi@2.0.7': {} + + '@inquirer/confirm@6.1.1(@types/node@25.8.0)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@25.8.0) + '@inquirer/type': 4.0.7(@types/node@25.8.0) + optionalDependencies: + '@types/node': 25.8.0 + + '@inquirer/core@11.2.1(@types/node@25.8.0)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@25.8.0) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.2 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: + '@types/node': 25.8.0 + + '@inquirer/figures@2.0.7': {} + + '@inquirer/type@4.0.7(@types/node@25.8.0)': + optionalDependencies: + '@types/node': 25.8.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mswjs/interceptors@0.41.9': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@next/env@16.2.10': {} + + '@next/swc-darwin-arm64@16.2.10': + optional: true + + '@next/swc-darwin-x64@16.2.10': + optional: true + + '@next/swc-linux-arm64-gnu@16.2.10': + optional: true + + '@next/swc-linux-arm64-musl@16.2.10': + optional: true + + '@next/swc-linux-x64-gnu@16.2.10': + optional: true + + '@next/swc-linux-x64-musl@16.2.10': + optional: true + + '@next/swc-win32-arm64-msvc@16.2.10': + optional: true + + '@next/swc-win32-x64-msvc@16.2.10': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/deferred-promise@3.0.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@oxc-project/types@0.130.0': {} + + '@pkgr/core@0.3.6': {} + + '@popperjs/core@2.11.8': {} + + '@rolldown/binding-android-arm64@1.0.1': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.1': + optional: true + + '@rolldown/binding-darwin-x64@1.0.1': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.1': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.1': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.1': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.1': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.1': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.1': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.1': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/pluginutils@5.4.0': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.5 + + '@rtsao/scc@1.1.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@standard-schema/spec@1.1.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/runtime': 7.29.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.5.0 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@babel/runtime': 7.29.7 + '@testing-library/dom': 10.4.1 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.14 + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': + dependencies: + '@testing-library/dom': 10.4.1 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/node@25.8.0': + dependencies: + undici-types: 7.24.6 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/set-cookie-parser@2.4.10': + dependencies: + '@types/node': 25.8.0 + + '@types/statuses@2.0.6': {} + + '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0)(typescript@7.0.2)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/visitor-keys': 8.63.0 + eslint: 10.6.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) + '@typescript-eslint/visitor-keys': 8.63.0 + debug: 4.4.3 + eslint: 10.6.0 + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.63.0(typescript@7.0.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@7.0.2) + '@typescript-eslint/types': 8.63.0 + debug: 4.4.3 + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.63.0': + dependencies: + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 + + '@typescript-eslint/tsconfig-utils@8.63.0(typescript@7.0.2)': + dependencies: + typescript: 7.0.2 + + '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + dependencies: + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + debug: 4.4.3 + eslint: 10.6.0 + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.63.0': {} + + '@typescript-eslint/typescript-estree@8.63.0(typescript@7.0.2)': + dependencies: + '@typescript-eslint/project-service': 8.63.0(typescript@7.0.2) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@7.0.2) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) + eslint: 10.6.0 + typescript: 7.0.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.63.0': + dependencies: + '@typescript-eslint/types': 8.63.0 + eslint-visitor-keys: 5.0.1 + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@vitejs/plugin-react@6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + + '@vitest/coverage-v8@4.1.6(vitest@4.1.6)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.1.6 + ast-v8-to-istanbul: 1.0.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + magicast: 0.5.3 + obug: 2.1.3 + std-env: 4.2.0 + tinyrainbow: 3.1.0 + vitest: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + + '@vitest/expect@4.1.10': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/expect@4.1.6': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.14.6(@types/node@25.8.0)(typescript@7.0.2) + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + + '@vitest/mocker@4.1.6(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': + dependencies: + '@vitest/spy': 4.1.6 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + + '@vitest/pretty-format@4.1.10': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/pretty-format@4.1.6': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.10': + dependencies: + '@vitest/utils': 4.1.10 + pathe: 2.0.3 + + '@vitest/runner@4.1.6': + dependencies: + '@vitest/utils': 4.1.6 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.6': + dependencies: + '@vitest/pretty-format': 4.1.6 + '@vitest/utils': 4.1.6 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.10': {} + + '@vitest/spy@4.1.6': {} + + '@vitest/utils@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@vitest/utils@4.1.6': + dependencies: + '@vitest/pretty-format': 4.1.6 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + argparse@2.0.1: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + assertion-error@2.0.1: {} + + ast-types-flow@0.0.8: {} + + ast-v8-to-istanbul@1.0.4: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 10.0.0 + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.12.1: {} + + axobject-query@4.1.0: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.10.42: {} + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + bootstrap@5.3.8(@popperjs/core@2.11.8): + dependencies: + '@popperjs/core': 2.11.8 + + brace-expansion@1.1.16: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.7: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.5: + dependencies: + baseline-browser-mapping: 2.10.42 + caniuse-lite: 1.0.30001803 + electron-to-chromium: 1.5.389 + node-releases: 2.0.50 + update-browserslist-db: 1.2.3(browserslist@4.28.5) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001803: {} + + chai@6.2.2: {} + + cli-width@4.1.0: {} + + client-only@0.0.1: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comment-parser@1.4.7: {} + + compare-versions@6.1.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + convert-source-map@2.0.0: {} + + cookie@1.1.1: {} + + copy-file@11.1.0: + dependencies: + graceful-fs: 4.2.11 + p-event: 6.0.1 + + copyfiles@2.4.1: + dependencies: + glob: 7.2.3 + minimatch: 3.1.5 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.2 + + core-util-is@1.0.3: {} + + cpy-cli@7.0.0: + dependencies: + cpy: 13.2.2 + globby: 16.2.1 + meow: 14.1.0 + + cpy@13.2.2: + dependencies: + copy-file: 11.1.0 + globby: 16.2.1 + junk: 4.0.1 + micromatch: 4.0.8 + p-filter: 4.1.0 + p-map: 7.0.5 + + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css.escape@1.5.1: {} + + csstype@3.2.3: {} + + damerau-levenshtein@1.0.8: {} + + data-urls@7.0.0: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.389: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.24.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@8.0.0: {} + + es-abstract-get@1.0.0: + dependencies: + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + is-callable: 1.2.7 + object-inspect: 1.13.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.4 + function.prototype.name: 1.2.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.11 + string.prototype.trimend: 1.0.10 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.8 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.22 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.3.3: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + + es-module-lexer@2.3.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.4 + + es-to-primitive@1.3.4: + dependencies: + es-abstract-get: 1.0.0 + es-define-property: 1.0.1 + es-errors: 1.3.0 + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-compat-utils@0.5.1(eslint@10.6.0): + dependencies: + eslint: 10.6.0 + semver: 7.8.5 + + eslint-config-prettier@10.1.8(eslint@10.6.0): + dependencies: + eslint: 10.6.0 + + eslint-import-resolver-node@0.3.10: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.2 + resolve: 2.0.0-next.7 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + eslint: 10.6.0 + eslint-import-resolver-node: 0.3.10 + transitivePeerDependencies: + - supports-color + + eslint-plugin-es-x@7.8.0(eslint@10.6.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/regexpp': 4.12.2 + eslint: 10.6.0 + eslint-compat-utils: 0.5.1(eslint@10.6.0) + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 10.6.0 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0) + hasown: 2.0.4 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.10 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.12.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 10.6.0 + hasown: 2.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-n@18.2.1(eslint@10.6.0)(typescript@7.0.2): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + enhanced-resolve: 5.24.2 + eslint: 10.6.0 + eslint-plugin-es-x: 7.8.0(eslint@10.6.0) + get-tsconfig: 4.14.0 + globals: 15.15.0 + globrex: 0.1.2 + ignore: 5.3.2 + semver: 7.8.5 + optionalDependencies: + typescript: 7.0.2 + + eslint-plugin-no-only-tests@3.4.0: {} + + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5): + dependencies: + eslint: 10.6.0 + prettier: 3.9.5 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 + optionalDependencies: + eslint-config-prettier: 10.1.8(eslint@10.6.0) + + eslint-plugin-react-hooks@7.1.1(eslint@10.6.0): + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + eslint: 10.6.0 + hermes-parser: 0.25.1 + zod: 4.4.3 + zod-validation-error: 4.0.2(zod@4.4.3) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@10.6.0): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.3 + eslint: 10.6.0 + estraverse: 5.3.0 + hasown: 2.0.4 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.7 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-regexp@3.1.1(eslint@10.6.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/regexpp': 4.12.2 + comment-parser: 1.4.7 + eslint: 10.6.0 + jsdoc-type-pratt-parser: 7.2.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-simple-import-sort@13.0.0(eslint@10.6.0): + dependencies: + eslint: 10.6.0 + + eslint-plugin-testing-library@7.16.2(eslint@10.6.0)(typescript@7.0.2): + dependencies: + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + eslint: 10.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.6.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.6.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + expect-type@1.4.0: {} + + exsolve@1.1.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.2.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + es-define-property: 1.0.1 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + hasown: 2.0.4 + is-callable: 1.2.7 + is-document.all: 1.0.0 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@14.0.0: {} + + globals@15.15.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@16.2.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + globrex@0.1.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphql@16.14.2: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + headers-polyfill@5.0.1: + dependencies: + '@types/set-cookie-parser': 2.4.10 + set-cookie-parser: 3.1.1 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.1 + transitivePeerDependencies: + - '@noble/hashes' + + html-escaper@2.0.2: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.4 + side-channel: 1.1.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-document.all@1.0.0: + dependencies: + call-bound: 1.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-node-process@1.2.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-inside@4.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.22 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + js-tokens@10.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@7.2.0: {} + + jsdom@29.1.1: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.6(css-tree@3.2.1) + '@exodus/bytes': 1.15.1 + css-tree: 3.2.1 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.2 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.2 + undici: 7.28.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + junk@4.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kolorist@1.8.0: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + local-pkg@1.2.1: + dependencies: + mlly: 1.8.2 + pkg-types: 2.3.1 + quansync: 0.2.11 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@11.5.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.3: + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + source-map-js: 1.2.1 + + make-dir@4.0.0: + dependencies: + semver: 7.8.5 + + math-intrinsics@1.1.0: {} + + mdn-data@2.27.1: {} + + meow@14.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + min-indent@1.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.7 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.16 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + mkdirp@1.0.4: {} + + mlly@1.8.2: + dependencies: + acorn: 8.17.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + ms@2.1.3: {} + + msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3): + dependencies: + '@inquirer/confirm': 6.1.1(@types/node@25.8.0) + '@mswjs/interceptors': 0.41.9 + '@open-draft/deferred-promise': 3.0.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.14.2 + headers-polyfill: 5.0.1 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.11.11 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.2 + type-fest: 5.8.0 + until-async: 3.0.2 + yargs: 17.7.3 + optionalDependencies: + typescript: 6.0.3 + transitivePeerDependencies: + - '@types/node' + + msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2): + dependencies: + '@inquirer/confirm': 6.1.1(@types/node@25.8.0) + '@mswjs/interceptors': 0.41.9 + '@open-draft/deferred-promise': 3.0.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.14.2 + headers-polyfill: 5.0.1 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.11.11 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.2 + type-fest: 5.8.0 + until-async: 3.0.2 + yargs: 17.7.3 + optionalDependencies: + typescript: 7.0.2 + transitivePeerDependencies: + - '@types/node' + optional: true + + mute-stream@3.0.0: {} + + nanoid@3.3.15: {} + + natural-compare@1.4.0: {} + + next@16.2.10(@babel/core@7.29.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + dependencies: + '@next/env': 16.2.10 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.10.42 + caniuse-lite: 1.0.30001803 + postcss: 8.4.31 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7) + optionalDependencies: + '@next/swc-darwin-arm64': 16.2.10 + '@next/swc-darwin-x64': 16.2.10 + '@next/swc-linux-arm64-gnu': 16.2.10 + '@next/swc-linux-arm64-musl': 16.2.10 + '@next/swc-linux-x64-gnu': 16.2.10 + '@next/swc-linux-x64-musl': 16.2.10 + '@next/swc-win32-arm64-msvc': 16.2.10 + '@next/swc-win32-x64-msvc': 16.2.10 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-exports-info@1.6.2: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + + node-releases@2.0.50: {} + + noms@0.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + obug@2.1.3: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + outvariant@1.4.3: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-event@6.0.1: + dependencies: + p-timeout: 6.1.4 + + p-filter@4.1.0: + dependencies: + p-map: 7.0.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@7.0.5: {} + + p-timeout@6.1.4: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.2 + minipass: 7.1.3 + + path-to-regexp@6.3.0: {} + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + pkg-types@2.3.1: + dependencies: + confbox: 0.2.4 + exsolve: 1.1.0 + pathe: 2.0.3 + + possible-typed-array-names@1.1.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.15 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.16: + dependencies: + nanoid: 3.3.15 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + + prettier@3.9.5: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process-nextick-args@2.0.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + punycode@2.3.1: {} + + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + react-dom@19.2.7(react@19.2.7): + dependencies: + react: 19.2.7 + scheduler: 0.27.0 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-router-dom@7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + dependencies: + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + react-router: 7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + + react-router@7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + dependencies: + cookie: 1.1.1 + react: 19.2.7 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.2.7(react@19.2.7) + + react@19.2.7: {} + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.2 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@2.0.0-next.7: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.2 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rettime@0.11.11: {} + + reusify@1.1.0: {} + + rimraf@6.1.3: + dependencies: + glob: 13.0.6 + package-json-from-dist: 1.0.1 + + rolldown@1.0.1: + dependencies: + '@oxc-project/types': 0.130.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.1 + '@rolldown/binding-darwin-arm64': 1.0.1 + '@rolldown/binding-darwin-x64': 1.0.1 + '@rolldown/binding-freebsd-x64': 1.0.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 + '@rolldown/binding-linux-arm64-gnu': 1.0.1 + '@rolldown/binding-linux-arm64-musl': 1.0.1 + '@rolldown/binding-linux-ppc64-gnu': 1.0.1 + '@rolldown/binding-linux-s390x-gnu': 1.0.1 + '@rolldown/binding-linux-x64-gnu': 1.0.1 + '@rolldown/binding-linux-x64-musl': 1.0.1 + '@rolldown/binding-openharmony-arm64': 1.0.1 + '@rolldown/binding-wasm32-wasi': 1.0.1 + '@rolldown/binding-win32-arm64-msvc': 1.0.1 + '@rolldown/binding-win32-x64-msvc': 1.0.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + semver@6.3.1: {} + + semver@7.8.5: {} + + set-cookie-parser@2.7.2: {} + + set-cookie-parser@3.1.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@5.1.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + statuses@2.0.2: {} + + std-env@4.2.0: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + strict-event-emitter@0.5.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.1 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.trim@1.2.11: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + has-property-descriptors: 1.0.2 + safe-regex-test: 1.1.0 + + string.prototype.trimend@1.0.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.7): + dependencies: + client-only: 0.0.1 + react: 19.2.7 + optionalDependencies: + '@babel/core': 7.29.7 + + styled-jsx@5.1.7(@babel/core@7.29.7)(react@19.2.7): + dependencies: + client-only: 0.0.1 + react: 19.2.7 + optionalDependencies: + '@babel/core': 7.29.7 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + + tagged-tag@1.0.0: {} + + tapable@2.3.3: {} + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + tinybench@2.9.0: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tinyrainbow@3.1.0: {} + + tldts-core@7.4.7: {} + + tldts@7.4.7: + dependencies: + tldts-core: 7.4.7 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tough-cookie@6.0.2: + dependencies: + tldts: 7.4.7 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + ts-api-utils@2.5.0(typescript@7.0.2): + dependencies: + typescript: 7.0.2 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tsx@4.23.0: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@5.8.0: + dependencies: + tagged-tag: 1.0.0 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.8: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@6.0.3: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + ufo@1.6.4: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@7.24.6: {} + + undici@7.28.0: {} + + unicorn-magic@0.4.0: {} + + unplugin-dts@1.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + dependencies: + '@rollup/pluginutils': 5.4.0 + '@volar/typescript': 2.4.28 + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.2.1 + magic-string: 0.30.21 + typescript: 6.0.3 + unplugin: 2.3.11 + optionalDependencies: + esbuild: 0.28.1 + rolldown: 1.0.1 + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + transitivePeerDependencies: + - supports-color + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.17.0 + picomatch: 4.0.5 + webpack-virtual-modules: 0.6.2 + + until-async@3.0.2: {} + + untildify@4.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.5): + dependencies: + browserslist: 4.28.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + vite-plugin-dts@5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + dependencies: + unplugin-dts: 1.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + optionalDependencies: + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + transitivePeerDependencies: + - '@rspack/core' + - '@vue/language-core' + - esbuild + - rolldown + - supports-color + - typescript + - webpack + + vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.5 + postcss: 8.5.16 + rolldown: 1.0.1 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 25.8.0 + esbuild: 0.28.1 + fsevents: 2.3.3 + tsx: 4.23.0 + + vitest@4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.0 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.8.0 + jsdom: 29.1.1 + transitivePeerDependencies: + - msw + + vitest@4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): dependencies: - '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(msw@2.14.6)(vite@8.0.13) + '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) '@vitest/pretty-format': 4.1.6 '@vitest/runner': 4.1.6 '@vitest/snapshot': 4.1.6 '@vitest/spy': 4.1.6 '@vitest/utils': 4.1.6 - es-module-lexer: 2.1.0 - expect-type: 1.3.0 + es-module-lexer: 2.3.0 + expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.1 + obug: 2.1.3 pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.1.0 + picomatch: 4.0.5 + std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.1.1 - tinyglobby: 0.2.16 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(tsx@4.22.0) + vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.8.0 + '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) + jsdom: 29.1.1 transitivePeerDependencies: - msw - dev: true - /vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - dev: true + vscode-uri@3.1.0: {} - /w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - dev: true - /web-vitals@5.2.0: - resolution: {integrity: sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==} - dev: false + web-vitals@5.2.0: {} - /webidl-conversions@8.0.1: - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} - engines: {node: '>=20'} - dev: true + webidl-conversions@8.0.1: {} - /webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - dev: true + webpack-virtual-modules@0.6.2: {} - /whatwg-mimetype@5.0.0: - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} - engines: {node: '>=20'} - dev: true + whatwg-mimetype@5.0.0: {} - /whatwg-url@16.0.1: - resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + whatwg-url@16.0.1: dependencies: - '@exodus/bytes': 1.15.0 + '@exodus/bytes': 1.15.1 tr46: 6.0.0 webidl-conversions: 8.0.1 transitivePeerDependencies: - '@noble/hashes' - dev: true - /which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 - dev: true - /which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} + which-builtin-type@1.2.1: dependencies: call-bound: 1.0.4 - function.prototype.name: 1.1.8 + function.prototype.name: 1.2.0 has-tostringtag: 1.0.2 is-async-function: 2.1.1 is-date-object: 1.1.0 @@ -5836,22 +6758,16 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.20 - dev: true + which-typed-array: 1.1.22 - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.4 - dev: true - /which-typed-array@1.1.20: - resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.22: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.9 @@ -5860,78 +6776,41 @@ packages: get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.5: {} - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + wrappy@1.0.2: {} - /xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - dev: true + xml-name-validator@5.0.0: {} - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true + xmlchars@2.2.0: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true + xtend@4.0.2: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true + yargs-parser@20.2.9: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@21.1.1: {} - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs@16.2.2: dependencies: cliui: 7.0.4 escalade: 3.2.0 @@ -5940,11 +6819,8 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.3: dependencies: cliui: 8.0.1 escalade: 3.2.0 @@ -5953,22 +6829,11 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /zod-validation-error@4.0.2(zod@4.3.6): - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod-validation-error@4.0.2(zod@4.4.3): dependencies: - zod: 4.3.6 - dev: true + zod: 4.4.3 - /zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - dev: true + zod@4.4.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 15989339b..64fd273d4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,9 @@ packages: - 'packages/*' - 'examples/*' +allowBuilds: + esbuild: true + msw: true + sharp: true +minimumReleaseAgeExclude: + - prettier@3.9.5 From e0d3c7bcdf324583868aa2c6d6ebca452c30ea09 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Jul 2026 22:37:36 +0200 Subject: [PATCH 515/565] fix: bump Node.js to v22 and pin TypeScript to 6.0.3 to unblock CI linter (#1708) * Initial plan * fix: update Node.js to v22 and downgrade TypeScript to 6.0.3 for CI compatibility * ci: use Node 22 in npm publish workflow --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/npm-publish.yml | 2 +- package.json | 4 +- pnpm-lock.yaml | 334 +++++------------------------- 5 files changed, 55 insertions(+), 289 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21ba60c52..f5eba74b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: # branches: [ main ] env: - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: tests: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fa49718df..dc5979f25 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,7 @@ on: # - main env: - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: run-linters: diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index ffe48f228..7ffd71e21 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -10,7 +10,7 @@ on: branches: [ main ] env: - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: skip_ci: runs-on: ubuntu-latest diff --git a/package.json b/package.json index fd2c39f5d..507652427 100644 --- a/package.json +++ b/package.json @@ -48,11 +48,11 @@ "prettier": "^3.9.5", "tslib": "^2.8.1", "tsx": "4.23.0", - "typescript": "7.0.2", + "typescript": "6.0.3", "vitest": "4.1.10" }, "engines": { - "node": ">= 20.19.0" + "node": ">= 22.13.0" }, "packageManager": "pnpm@11.10.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afee32051..4a37c9e47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 10.0.1(eslint@10.6.0) '@typescript-eslint/eslint-plugin': specifier: ^8.63.0 - version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0)(typescript@7.0.2) + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.63.0 - version: 8.63.0(eslint@10.6.0)(typescript@7.0.2) + version: 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: specifier: ^10.6.0 version: 10.6.0 @@ -31,13 +31,13 @@ importers: version: 10.1.8(eslint@10.6.0) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0) + version: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@10.6.0) eslint-plugin-n: specifier: ^18.2.1 - version: 18.2.1(eslint@10.6.0)(typescript@7.0.2) + version: 18.2.1(eslint@10.6.0)(typescript@6.0.3) eslint-plugin-no-only-tests: specifier: ^3.4.0 version: 3.4.0 @@ -58,7 +58,7 @@ importers: version: 13.0.0(eslint@10.6.0) eslint-plugin-testing-library: specifier: ^7.16.2 - version: 7.16.2(eslint@10.6.0)(typescript@7.0.2) + version: 7.16.2(eslint@10.6.0)(typescript@6.0.3) prettier: specifier: ^3.9.5 version: 3.9.5 @@ -69,11 +69,11 @@ importers: specifier: 4.23.0 version: 4.23.0 typescript: - specifier: 7.0.2 - version: 7.0.2 + specifier: 6.0.3 + version: 6.0.3 vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + version: 4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) examples/nextjs-demo: dependencies: @@ -1238,126 +1238,6 @@ packages: resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/typescript-aix-ppc64@7.0.2': - resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} - engines: {node: '>=16.20.0'} - cpu: [ppc64] - os: [aix] - - '@typescript/typescript-darwin-arm64@7.0.2': - resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [darwin] - - '@typescript/typescript-darwin-x64@7.0.2': - resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [darwin] - - '@typescript/typescript-freebsd-arm64@7.0.2': - resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [freebsd] - - '@typescript/typescript-freebsd-x64@7.0.2': - resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [freebsd] - - '@typescript/typescript-linux-arm64@7.0.2': - resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [linux] - - '@typescript/typescript-linux-arm@7.0.2': - resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} - engines: {node: '>=16.20.0'} - cpu: [arm] - os: [linux] - - '@typescript/typescript-linux-loong64@7.0.2': - resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} - engines: {node: '>=16.20.0'} - cpu: [loong64] - os: [linux] - - '@typescript/typescript-linux-mips64el@7.0.2': - resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} - engines: {node: '>=16.20.0'} - cpu: [mips64el] - os: [linux] - - '@typescript/typescript-linux-ppc64@7.0.2': - resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} - engines: {node: '>=16.20.0'} - cpu: [ppc64] - os: [linux] - - '@typescript/typescript-linux-riscv64@7.0.2': - resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} - engines: {node: '>=16.20.0'} - cpu: [riscv64] - os: [linux] - - '@typescript/typescript-linux-s390x@7.0.2': - resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} - engines: {node: '>=16.20.0'} - cpu: [s390x] - os: [linux] - - '@typescript/typescript-linux-x64@7.0.2': - resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [linux] - - '@typescript/typescript-netbsd-arm64@7.0.2': - resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [netbsd] - - '@typescript/typescript-netbsd-x64@7.0.2': - resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [netbsd] - - '@typescript/typescript-openbsd-arm64@7.0.2': - resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [openbsd] - - '@typescript/typescript-openbsd-x64@7.0.2': - resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [openbsd] - - '@typescript/typescript-sunos-x64@7.0.2': - resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [sunos] - - '@typescript/typescript-win32-arm64@7.0.2': - resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [win32] - - '@typescript/typescript-win32-x64@7.0.2': - resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [win32] - '@vitejs/plugin-react@6.0.2': resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3221,11 +3101,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@7.0.2: - resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} - engines: {node: '>=16.20.0'} - hasBin: true - ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -4224,40 +4099,40 @@ snapshots: '@types/statuses@2.0.6': {} - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0)(typescript@7.0.2)': + '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.63.0 eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@7.0.2) - typescript: 7.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.63.0 '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3 eslint: 10.6.0 - typescript: 7.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.63.0(typescript@7.0.2)': + '@typescript-eslint/project-service@8.63.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@7.0.2) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) '@typescript-eslint/types': 8.63.0 debug: 4.4.3 - typescript: 7.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4266,47 +4141,47 @@ snapshots: '@typescript-eslint/types': 8.63.0 '@typescript-eslint/visitor-keys': 8.63.0 - '@typescript-eslint/tsconfig-utils@8.63.0(typescript@7.0.2)': + '@typescript-eslint/tsconfig-utils@8.63.0(typescript@6.0.3)': dependencies: - typescript: 7.0.2 + typescript: 6.0.3 - '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) debug: 4.4.3 eslint: 10.6.0 - ts-api-utils: 2.5.0(typescript@7.0.2) - typescript: 7.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.63.0': {} - '@typescript-eslint/typescript-estree@8.63.0(typescript@7.0.2)': + '@typescript-eslint/typescript-estree@8.63.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.63.0(typescript@7.0.2) - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@7.0.2) + '@typescript-eslint/project-service': 8.63.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) '@typescript-eslint/types': 8.63.0 '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3 minimatch: 10.2.5 semver: 7.8.5 tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@7.0.2) - typescript: 7.0.2 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@7.0.2)': + '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@typescript-eslint/scope-manager': 8.63.0 '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@7.0.2) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) eslint: 10.6.0 - typescript: 7.0.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4315,66 +4190,6 @@ snapshots: '@typescript-eslint/types': 8.63.0 eslint-visitor-keys: 5.0.1 - '@typescript/typescript-aix-ppc64@7.0.2': - optional: true - - '@typescript/typescript-darwin-arm64@7.0.2': - optional: true - - '@typescript/typescript-darwin-x64@7.0.2': - optional: true - - '@typescript/typescript-freebsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-freebsd-x64@7.0.2': - optional: true - - '@typescript/typescript-linux-arm64@7.0.2': - optional: true - - '@typescript/typescript-linux-arm@7.0.2': - optional: true - - '@typescript/typescript-linux-loong64@7.0.2': - optional: true - - '@typescript/typescript-linux-mips64el@7.0.2': - optional: true - - '@typescript/typescript-linux-ppc64@7.0.2': - optional: true - - '@typescript/typescript-linux-riscv64@7.0.2': - optional: true - - '@typescript/typescript-linux-s390x@7.0.2': - optional: true - - '@typescript/typescript-linux-x64@7.0.2': - optional: true - - '@typescript/typescript-netbsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-netbsd-x64@7.0.2': - optional: true - - '@typescript/typescript-openbsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-openbsd-x64@7.0.2': - optional: true - - '@typescript/typescript-sunos-x64@7.0.2': - optional: true - - '@typescript/typescript-win32-arm64@7.0.2': - optional: true - - '@typescript/typescript-win32-x64@7.0.2': - optional: true - '@vitejs/plugin-react@6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': dependencies: '@rolldown/pluginutils': 1.0.1 @@ -4412,13 +4227,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.6(@types/node@25.8.0)(typescript@7.0.2) + msw: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) '@vitest/mocker@4.1.6(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': @@ -4997,11 +4812,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: @@ -5014,7 +4829,7 @@ snapshots: eslint: 10.6.0 eslint-compat-utils: 0.5.1(eslint@10.6.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint@10.6.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -5025,7 +4840,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@7.0.2))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -5037,7 +4852,7 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5062,7 +4877,7 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-n@18.2.1(eslint@10.6.0)(typescript@7.0.2): + eslint-plugin-n@18.2.1(eslint@10.6.0)(typescript@6.0.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) enhanced-resolve: 5.24.2 @@ -5074,7 +4889,7 @@ snapshots: ignore: 5.3.2 semver: 7.8.5 optionalDependencies: - typescript: 7.0.2 + typescript: 6.0.3 eslint-plugin-no-only-tests@3.4.0: {} @@ -5135,10 +4950,10 @@ snapshots: dependencies: eslint: 10.6.0 - eslint-plugin-testing-library@7.16.2(eslint@10.6.0)(typescript@7.0.2): + eslint-plugin-testing-library@7.16.2(eslint@10.6.0)(typescript@6.0.3): dependencies: '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@7.0.2) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 transitivePeerDependencies: - supports-color @@ -5829,32 +5644,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2): - dependencies: - '@inquirer/confirm': 6.1.1(@types/node@25.8.0) - '@mswjs/interceptors': 0.41.9 - '@open-draft/deferred-promise': 3.0.0 - '@types/statuses': 2.0.6 - cookie: 1.1.1 - graphql: 16.14.2 - headers-polyfill: 5.0.1 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - rettime: 0.11.11 - statuses: 2.0.2 - strict-event-emitter: 0.5.1 - tough-cookie: 6.0.2 - type-fest: 5.8.0 - until-async: 3.0.2 - yargs: 17.7.3 - optionalDependencies: - typescript: 7.0.2 - transitivePeerDependencies: - - '@types/node' - optional: true - mute-stream@3.0.0: {} nanoid@3.3.15: {} @@ -6489,9 +6278,9 @@ snapshots: dependencies: punycode: 2.3.1 - ts-api-utils@2.5.0(typescript@7.0.2): + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: - typescript: 7.0.2 + typescript: 6.0.3 tsconfig-paths@3.15.0: dependencies: @@ -6551,29 +6340,6 @@ snapshots: typescript@6.0.3: {} - typescript@7.0.2: - optionalDependencies: - '@typescript/typescript-aix-ppc64': 7.0.2 - '@typescript/typescript-darwin-arm64': 7.0.2 - '@typescript/typescript-darwin-x64': 7.0.2 - '@typescript/typescript-freebsd-arm64': 7.0.2 - '@typescript/typescript-freebsd-x64': 7.0.2 - '@typescript/typescript-linux-arm': 7.0.2 - '@typescript/typescript-linux-arm64': 7.0.2 - '@typescript/typescript-linux-loong64': 7.0.2 - '@typescript/typescript-linux-mips64el': 7.0.2 - '@typescript/typescript-linux-ppc64': 7.0.2 - '@typescript/typescript-linux-riscv64': 7.0.2 - '@typescript/typescript-linux-s390x': 7.0.2 - '@typescript/typescript-linux-x64': 7.0.2 - '@typescript/typescript-netbsd-arm64': 7.0.2 - '@typescript/typescript-netbsd-x64': 7.0.2 - '@typescript/typescript-openbsd-arm64': 7.0.2 - '@typescript/typescript-openbsd-x64': 7.0.2 - '@typescript/typescript-sunos-x64': 7.0.2 - '@typescript/typescript-win32-arm64': 7.0.2 - '@typescript/typescript-win32-x64': 7.0.2 - ufo@1.6.4: {} unbox-primitive@1.1.0: @@ -6657,10 +6423,10 @@ snapshots: fsevents: 2.3.3 tsx: 4.23.0 - vitest@4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + vitest@4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@7.0.2))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 From 832173ffa24f7c8b65e2246fe07ac0bd13b641b2 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 11 Jul 2026 07:54:10 +0200 Subject: [PATCH 516/565] fix running linters (release) (#1711) * Initial plan * fix: update Node.js to v22 and downgrade TypeScript to 6.0.3 for CI compatibility * ci: use Node 22 in npm publish workflow * Use Node 22 in static web app workflows (#1709) (release) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> * ci: use Node 22 in demo Azure Static Web Apps workflows (#1710) (release) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .../workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml | 2 +- .../workflows/azure-static-web-apps-icy-glacier-004ab4303.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml index 77c3c50a0..a425f39d8 100644 --- a/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml +++ b/.github/workflows/azure-static-web-apps-black-rock-0dc6b0d03.yml @@ -10,7 +10,7 @@ on: - main env: - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: skip_ci: runs-on: ubuntu-latest diff --git a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml index eaceda79e..7c50e77d9 100644 --- a/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml +++ b/.github/workflows/azure-static-web-apps-icy-glacier-004ab4303.yml @@ -10,7 +10,7 @@ on: - main env: - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: skip_ci: runs-on: ubuntu-latest From 80e720f7773fd3f2bf98755cda433ec3bcbdd25a Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 09:04:50 +0200 Subject: [PATCH 517/565] Fix publish workflow failure caused by missing git identity during versioning (#1713) (release) * ci: configure git identity before publish versioning * ci: use global git identity in publish workflow * ci: use GitHub Actions bot identity in publish workflow * ci: clarify publish git identity step --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/npm-publish.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 7ffd71e21..12a0173af 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -64,6 +64,11 @@ jobs: with: token: ${{ secrets.GIT_TOKEN }} fetch-depth: 0 + + - name: Configure git identity for versioning and release commits + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - name: Determine Alpha, Beta or Release id: which_tag @@ -252,8 +257,6 @@ jobs: - name: Commit and push if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' run: | - git config --global user.name "GitHub" - git config --global user.email "github-action@bot.com" git add . git commit -m "[skip ci] Update to version ${{ steps.tag.outputs.new_version }} in package.json" git tag ${{ steps.tag.outputs.new_version }} From c2d1602ce489fad13c0cc0187692f6a90cbd1a72 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 09:30:31 +0200 Subject: [PATCH 518/565] fix: replace expired GIT_TOKEN with GITHUB_TOKEN in build job checkout (#1714) (release) * Initial plan * fix: use GITHUB_TOKEN instead of GIT_TOKEN for checkout in build job --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/npm-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 12a0173af..3f31320da 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -62,7 +62,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - token: ${{ secrets.GIT_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 - name: Configure git identity for versioning and release commits From ad4036a3de0626eccb8ecfc6f6c2e3ad1b79211b Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 15 Jul 2026 11:40:14 +0200 Subject: [PATCH 519/565] Update npm-publish.yml (release) --- .github/workflows/npm-publish.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 3f31320da..8a97ffe58 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -62,7 +62,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GIT_TOKEN }} fetch-depth: 0 - name: Configure git identity for versioning and release commits @@ -95,13 +95,13 @@ jobs: if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' uses: mathieudutour/github-tag-action@v6.0 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ secrets.GIT_TOKEN }} - name: Bump version and push tag id: tag_version if: steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' uses: mathieudutour/github-tag-action@v6.0 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ secrets.GIT_TOKEN }} dry_run: true - name: Compute new version number to publish id: tag @@ -272,7 +272,7 @@ jobs: # uses: sonarsource/sonarcloud-github-action@master # if: github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.head.repo.fork # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # with: # args: > From 87081bbcd041a85ae8f0161b0dd241fe4a8c0279 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:40:31 +0000 Subject: [PATCH 520/565] 7.27.23 --- packages/oidc-client-service-worker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 456b6d8f9..0c19ee81f 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.19", + "version": "7.27.23", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", From b2cf323be58da2c7e66d73fb7040dfddb0ab683f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:41:26 +0000 Subject: [PATCH 521/565] [skip ci] Update to version 7.27.23 in package.json --- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 518e4067d..73273c0c3 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.19'; +export default '7.27.23'; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 518e4067d..73273c0c3 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.19'; +export default '7.27.23'; From f90927c21f9bd0f94dc537391186937978a21b3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:41:28 +0000 Subject: [PATCH 522/565] [skip ci] Generate changelog to version 7.27.23 --- CHANGELOG.md | 59 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c9fbc255..97254e82c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,35 @@ # Changelog -## 7.27.19 +## 7.27.23 + +- [b2cf323](https://github.com/AxaFrance/oidc-client/commit/b2cf323be58da2c7e66d73fb7040dfddb0ab683f) - [skip ci] Update to version 7.27.23 in package.json, 2026-07-15 by *github-actions[bot]* + + +## v7.27.23 + +- [87081bb](https://github.com/AxaFrance/oidc-client/commit/87081bbcd041a85ae8f0161b0dd241fe4a8c0279) - 7.27.23, 2026-07-15 by *github-actions[bot]* +- [ad4036a](https://github.com/AxaFrance/oidc-client/commit/ad4036a3de0626eccb8ecfc6f6c2e3ad1b79211b) - Update npm-publish.yml (release), 2026-07-15 by *Guillaume Chervet* + + +## v7.27.22 + +- [c2d1602](https://github.com/AxaFrance/oidc-client/commit/c2d1602ce489fad13c0cc0187692f6a90cbd1a72) - fix: replace expired GIT_TOKEN with GITHUB_TOKEN in build job checkout (#1714) (release), 2026-07-14 by *Copilot* +- [80e720f](https://github.com/AxaFrance/oidc-client/commit/80e720f7773fd3f2bf98755cda433ec3bcbdd25a) - Fix publish workflow failure caused by missing git identity during versioning (#1713) (release), 2026-07-14 by *Copilot* + + +## v7.27.21 + +- [832173f](https://github.com/AxaFrance/oidc-client/commit/832173ffa24f7c8b65e2246fe07ac0bd13b641b2) - fix running linters (release) (#1711), 2026-07-11 by *Guillaume Chervet* +- [e0d3c7b](https://github.com/AxaFrance/oidc-client/commit/e0d3c7bcdf324583868aa2c6d6ebca452c30ea09) - fix: bump Node.js to v22 and pin TypeScript to 6.0.3 to unblock CI linter (#1708), 2026-07-10 by *Copilot* + + +## v7.27.20 + +- [a8ce57d](https://github.com/AxaFrance/oidc-client/commit/a8ce57dd6ff970c6608c3f99a0fafc0264e654b7) - fix: fixes vulnarabilities by updating dependencies (#1706) (release), 2026-07-10 by *Pavan Kumar Jadda* +- [afad266](https://github.com/AxaFrance/oidc-client/commit/afad2667d38f700a839fe6cfbff2a7ce9a02b792) - fix: remove hardcoded pnpm version from GitHub Actions workflows (#1707), 2026-07-10 by *Copilot* + + +## v7.27.19 - [de47006](https://github.com/AxaFrance/oidc-client/commit/de470065418f3c98099f5df0a039bc33392cb74d) - Handle service worker AbortError on tab shutdown to avoid uncaught rejections (#1702) (release), 2026-06-24 by *Guillaume Chervet* @@ -276,31 +305,3 @@ - [e297a7b](https://github.com/AxaFrance/oidc-client/commit/e297a7b5bd9d3eebb7cea443185039a7cb74d2f4) - fix(oidc): navigator locks null (#1466) (release), 2024-09-29 by *Guillaume Chervet* -## v7.22.28 - -- [346bdce](https://github.com/AxaFrance/oidc-client/commit/346bdce138a6b43ab4b31b56447161f9a6cdadeb) - fix(oidc): fetchWithTokens was using a snapshot of tokens (#1465) (release), 2024-09-29 by *Guillaume Chervet* - - -## v7.22.27 - -- [6354370](https://github.com/AxaFrance/oidc-client/commit/63543705c9b9a8182d47564bfc24a811c1f50e84) - fix(oidc): user reload time before expiration (release) (#1464), 2024-09-28 by *Guillaume Chervet* - - -## v7.22.26 - -- [10e7257](https://github.com/AxaFrance/oidc-client/commit/10e7257a0d2257bd8905b3b00ca1fe7ad757e74c) - fix(oidc): lock unexpected behavior (#1459) (release), 2024-09-27 by *Guillaume Chervet* - - -## v7.22.25 - -- [3a0d48e](https://github.com/AxaFrance/oidc-client/commit/3a0d48ea0d3609d31de0f45d6aebfb1a23b25e73) - fix(oidc): number timer increase (#1457) (release), 2024-09-26 by *Guillaume Chervet* - - -## v7.22.24 - -- [b34eabf](https://github.com/AxaFrance/oidc-client/commit/b34eabf39ce108f8de93a49f1a4d9ec6e46d642c) - refactor(all): update dependencies (#1446) (release), 2024-09-02 by *Guillaume Chervet* -- [35081e1](https://github.com/AxaFrance/oidc-client/commit/35081e16b947ebd490b83a1f6d6b9dc101363736) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client into HEAD, 2024-08-25 by *Guillaume Chervet* -- [70dd233](https://github.com/AxaFrance/oidc-client/commit/70dd233f69f2b2a9c5da4a2514e2cc657cf435a2) - Merge branch 'main' of https://github.com/AxaFrance/oidc-client, 2024-08-25 by *Guillaume Chervet* -- [47f9de1](https://github.com/AxaFrance/oidc-client/commit/47f9de1f648838ae085c45a5dcd55687f80829c5) - fix(oidc): remove no-existing property add typings (release), 2024-08-25 by *Guillaume Chervet* - - From 638eee8ab1bbfecfadfb05d64217c2ecec9749be Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 28 Jul 2026 10:05:42 +0200 Subject: [PATCH 523/565] feat(oidc-client): PAR (#1718) (release) * feat(oidc-client): PAR * update demo --- README.md | 1 + examples/nextjs-demo/README.md | 1 + examples/nextjs-demo/components/layout.js | 1 + examples/oidc-client-demo/src/index.tsx | 1 + examples/react-oidc-demo/README.md | 7 + .../react-oidc-demo/src/configurations.ts | 6 + packages/oidc-client/README.md | 65 +++++ packages/oidc-client/src/index.ts | 13 +- packages/oidc-client/src/login.ts | 32 ++- packages/oidc-client/src/oidc.ts | 14 ++ packages/oidc-client/src/par.spec.ts | 232 +++++++++++++++++ .../pushedAuthorizationRequestError.spec.ts | 39 +++ .../src/pushedAuthorizationRequestError.ts | 46 ++++ packages/oidc-client/src/requests.spec.ts | 235 +++++++++++++++++- packages/oidc-client/src/requests.ts | 129 +++++++++- packages/oidc-client/src/types.ts | 6 + packages/react-oidc/README.md | 30 +++ packages/react-oidc/src/index.ts | 4 + 18 files changed, 853 insertions(+), 9 deletions(-) create mode 100644 packages/oidc-client/src/par.spec.ts create mode 100644 packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts create mode 100644 packages/oidc-client/src/pushedAuthorizationRequestError.ts diff --git a/README.md b/README.md index 7ace62838..72a01f0fc 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Demos: - **Secure** : - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) + - With optional [Pushed Authorization Requests (PAR)](./packages/oidc-client/README.md#pushed-authorization-requests-par), authorization parameters can be sent directly to the authorization server instead of through the browser URL - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - OIDC using client side Code Credential Grant with pkce only - **Lightweight** : Unpacked Size on npm is **274 kB**, Minified `61.1kB`, Minified+GZIPPED `16.8kB` [Pkg stats via Bundlephobia.com](https://bundlephobia.com/package/@axa-fr/react-oidc) diff --git a/examples/nextjs-demo/README.md b/examples/nextjs-demo/README.md index 763bd368f..c832eaadf 100644 --- a/examples/nextjs-demo/README.md +++ b/examples/nextjs-demo/README.md @@ -23,6 +23,7 @@ const configuration = { silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', }; const onEvent = (configurationName, eventName, data) => { diff --git a/examples/nextjs-demo/components/layout.js b/examples/nextjs-demo/components/layout.js index fa8a54e09..c9363367d 100644 --- a/examples/nextjs-demo/components/layout.js +++ b/examples/nextjs-demo/components/layout.js @@ -8,6 +8,7 @@ const configuration = { silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', preload_user_info: 'true', }; diff --git a/examples/oidc-client-demo/src/index.tsx b/examples/oidc-client-demo/src/index.tsx index e23e1c11a..8b0da2d93 100644 --- a/examples/oidc-client-demo/src/index.tsx +++ b/examples/oidc-client-demo/src/index.tsx @@ -120,6 +120,7 @@ export const execute = () => { silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto' as const, refresh_time_before_tokens_expiration_in_second: 40, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: true, diff --git a/examples/react-oidc-demo/README.md b/examples/react-oidc-demo/README.md index a38130902..62f490004 100644 --- a/examples/react-oidc-demo/README.md +++ b/examples/react-oidc-demo/README.md @@ -119,6 +119,7 @@ const configuration = { silent_redirect_uri: window.location.origin + '/authentication/silent-callback', scope: 'openid profile email api offline_access', // offline_access scope allow your client to retrieve the refresh_token authority: 'https://demo.duendesoftware.com', + par: 'auto', service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, }; @@ -160,6 +161,8 @@ const propTypes = { userinfo_endpoint: PropTypes.string, end_session_endpoint: PropTypes.string, revocation_endpoint: PropTypes.string, + pushed_authorization_request_endpoint: PropTypes.string, + require_pushed_authorization_requests: PropTypes.bool, check_session_iframe: PropTypes.string, issuer: PropTypes.string, }), @@ -172,6 +175,8 @@ const propTypes = { withCustomHistory: PropTypes.function, // Override history modification, return instance with replaceState(url, stateHistory) implemented (like History.replaceState()) authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in second of openid wellknowurl, default is 1 hour authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in millisecond of openid wellknowurl, default is 10 seconds, then error is throwed + par: PropTypes.oneOf(['disabled', 'auto', 'required']), // Pushed Authorization Requests mode, default is 'disabled' + par_request_timeout: PropTypes.number, // PAR endpoint timeout in milliseconds, default is 10000 monitor_session: PropTypes.boolean, // Add OpenId monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user with the same subject is logged out from another tab when session_monitor is active onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user is logged out from same tab when session_monitor is active @@ -554,6 +559,7 @@ const configuration = { silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-login that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', }; const onEvent = (configurationName, eventName, data) => { @@ -603,6 +609,7 @@ export const configurationIdentityServerWithHash = { silent_redirect_uri: window.location.origin + '#authentication-silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', refresh_time_before_tokens_expiration_in_second: 70, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, diff --git a/examples/react-oidc-demo/src/configurations.ts b/examples/react-oidc-demo/src/configurations.ts index fed9140a9..213908d60 100644 --- a/examples/react-oidc-demo/src/configurations.ts +++ b/examples/react-oidc-demo/src/configurations.ts @@ -6,6 +6,7 @@ export const configurationIdentityServer = { silent_redirect_uri: window.location.origin + '/authentication/silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto' as const, refresh_time_before_tokens_expiration_in_second: 40, token_renew_mode: TokenRenewMode.access_token_invalid, token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticBeforeTokenExpiration, @@ -22,6 +23,7 @@ export const configurationIdentityServerWithHash = { window.location.origin + '/multi-auth/authentification#authentication-silent-login', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto' as const, refresh_time_before_tokens_expiration_in_second: 10, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, @@ -33,13 +35,16 @@ export const configurationIdentityServerWithoutDiscovery = { silent_redirect_uri: window.location.origin + '/authentication/silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto' as const, authority_configuration: { authorization_endpoint: 'https://demo.duendesoftware.com/connect/authorize', + pushed_authorization_request_endpoint: 'https://demo.duendesoftware.com/connect/par', token_endpoint: 'https://demo.duendesoftware.com/connect/token', userinfo_endpoint: 'https://demo.duendesoftware.com/connect/userinfo', end_session_endpoint: 'https://demo.duendesoftware.com/connect/endsession', revocation_endpoint: 'https://demo.duendesoftware.com/connect/revocation', check_session_iframe: 'https://demo.duendesoftware.com/connect/checksession', + issuer: 'https://demo.duendesoftware.com', }, refresh_time_before_tokens_expiration_in_second: 10, service_worker_relative_url: '/OidcServiceWorker.js', @@ -52,6 +57,7 @@ export const configurationGoogle = { silent_redirect_uri: window.location.origin + '/multi-auth/silent-callback-google', scope: 'openid profile email', authority: 'https://accounts.google.com/', + par: 'auto' as const, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, token_request_extras: { diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 4bbab9268..194bc7763 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -147,6 +147,7 @@ export const configuration = { silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode service_worker_only: false, demonstrating_proof_of_possession: false, @@ -219,6 +220,8 @@ const configuration = { userinfo_endpoint: String, end_session_endpoint: String, revocation_endpoint: String, + pushed_authorization_request_endpoint: String, + require_pushed_authorization_requests: Boolean, check_session_iframe: String, issuer: String, }, @@ -232,6 +235,8 @@ const configuration = { token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown + par: 'disabled' | 'auto' | 'required', // Pushed Authorization Requests mode, default is 'disabled' + par_request_timeout: Number, // PAR endpoint timeout in milliseconds, default is 10000 monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, // Optional, default is TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration @@ -272,6 +277,65 @@ const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPo ``` +## Pushed Authorization Requests (PAR) + +The client supports [OAuth 2.0 Pushed Authorization Requests (RFC 9126)](https://www.rfc-editor.org/rfc/rfc9126.html). +Enable it with the `par` configuration option: + +- `'disabled'` (default) preserves the existing front-channel authorization + request. PAR metadata is ignored in this mode. +- `'auto'` uses PAR when discovery (or `authority_configuration`) provides a + `pushed_authorization_request_endpoint`. It keeps the existing front-channel + flow when the endpoint is absent, unless the server metadata says + `require_pushed_authorization_requests: true`. +- `'required'` always requires PAR and fails before browser navigation when no + PAR endpoint is available. + +```ts +import { + isPushedAuthorizationRequestError, + OidcClient, + PushedAuthorizationRequestErrorCode, +} from '@axa-fr/oidc-client'; + +const oidcClient = OidcClient.getOrCreate()({ + client_id: 'spa-client', + redirect_uri: `${window.location.origin}/authentication/callback`, + scope: 'openid profile', + authority: 'https://issuer.example.com', + par: 'auto', + par_request_timeout: 10000, +}); + +try { + await oidcClient.loginAsync('/'); +} catch (error) { + if ( + isPushedAuthorizationRequestError(error) && + error.code === PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE + ) { + // PAR was required locally or by server metadata, but no endpoint was provided. + } +} +``` + +When PAR is selected, all authorization parameters, including `state`, `nonce`, +PKCE and login `extras`, are sent as +`application/x-www-form-urlencoded` data to the PAR endpoint. The browser is +then redirected with only `client_id` and the returned `request_uri`. + +If the PAR endpoint returns an error or an invalid response, the login rejects +with `PushedAuthorizationRequestError`; the client does not silently downgrade +to a front-channel request. The error exposes a stable `code` and, when +available, `status`, `oauthError`, and `oauthErrorDescription`. + +For a browser-based client, the authorization server must allow CORS requests +from the application origin to its PAR endpoint. Public SPA clients must also +be allowed to call PAR without a client secret; never embed a client secret in +browser code. If discovery is not available, set +`pushed_authorization_request_endpoint` (and optionally +`require_pushed_authorization_requests`) in `authority_configuration`. + ## API ```javascript @@ -534,6 +598,7 @@ export const configurationIdentityServerWithHash = { silent_redirect_uri: window.location.origin + '#authentication-silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', refresh_time_before_tokens_expiration_in_second: 70, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 063139591..2f5529c15 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -26,6 +26,17 @@ export { SW_CONTROLLER_CHANGE_RELOAD_COUNT_KEY, TOKEN_PLACEHOLDERS, } from './protocol.js'; +export { + isPushedAuthorizationRequestError, + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, +} from './pushedAuthorizationRequestError.js'; export { getParseQueryStringFromLocation, getPath } from './route-utils'; -export type { AuthorityConfiguration, Fetch, OidcConfiguration, StringMap } from './types.js'; +export type { + AuthorityConfiguration, + Fetch, + OidcConfiguration, + PushedAuthorizationRequestMode, + StringMap, +} from './types.js'; export { TokenAutomaticRenewMode } from './types.js'; diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index 76598931d..a74c66ea5 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -7,9 +7,13 @@ import { ILOidcLocation } from './location'; import Oidc from './oidc'; import { OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; import { isTokensOidcValid } from './parseTokens.js'; +import { + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, +} from './pushedAuthorizationRequestError.js'; import { performAuthorizationRequestAsync, performFirstTokenRequestAsync } from './requests.js'; import { getParseQueryStringFromLocation } from './route-utils.js'; -import { OidcConfiguration, StringMap } from './types.js'; +import { Fetch, OidcConfiguration, StringMap } from './types.js'; export type InitAsyncFunction = (authority: string, authorityConfiguration: any) => Promise; @@ -20,6 +24,7 @@ export const defaultLoginAsync = publishEvent: (string, any) => void, initAsync: InitAsyncFunction, oidcLocation: ILOidcLocation, + getFetch: () => Fetch = () => window.fetch, ) => ( callbackPath: string = undefined, @@ -88,9 +93,34 @@ export const defaultLoginAsync = response_type: 'code', ...extraFinal, }; + + const parMode = configuration.par ?? 'disabled'; + const pushedAuthorizationRequestEndpoint = + oidcServerConfiguration.pushedAuthorizationRequestEndpoint; + const serverRequiresPar = oidcServerConfiguration.requirePushedAuthorizationRequests; + if ( + !pushedAuthorizationRequestEndpoint && + (parMode === 'required' || (parMode === 'auto' && serverRequiresPar)) + ) { + throw new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE, + 'Pushed Authorization Requests are required, but the authorization server metadata does not provide a pushed_authorization_request_endpoint.', + ); + } + + const pushedAuthorizationRequest = + parMode !== 'disabled' && pushedAuthorizationRequestEndpoint + ? { + endpoint: pushedAuthorizationRequestEndpoint, + fetch: getFetch(), + timeoutMs: configuration.par_request_timeout, + } + : undefined; + await performAuthorizationRequestAsync(storage, oidcLocation)( oidcServerConfiguration.authorizationEndpoint, extraInternal, + pushedAuthorizationRequest, ); } catch (exception) { publishEvent(eventNames.loginAsync_error, exception); diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index 3f3cef4e8..eb6979f2c 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -35,6 +35,8 @@ export const getFetchDefault = () => { export interface OidcAuthorizationServiceConfigurationJson { check_session_iframe?: string; issuer: string; + pushed_authorization_request_endpoint?: string; + require_pushed_authorization_requests?: boolean; } export class OidcAuthorizationServiceConfiguration { @@ -45,6 +47,8 @@ export class OidcAuthorizationServiceConfiguration { private revocationEndpoint: string; private userInfoEndpoint: string; private endSessionEndpoint: string; + private pushedAuthorizationRequestEndpoint: string; + private requirePushedAuthorizationRequests: boolean; constructor(request: any) { this.authorizationEndpoint = request.authorization_endpoint; @@ -54,6 +58,9 @@ export class OidcAuthorizationServiceConfiguration { this.checkSessionIframe = request.check_session_iframe; this.issuer = request.issuer; this.endSessionEndpoint = request.end_session_endpoint; + this.pushedAuthorizationRequestEndpoint = request.pushed_authorization_request_endpoint; + this.requirePushedAuthorizationRequests = + request.require_pushed_authorization_requests ?? false; } } @@ -148,6 +155,8 @@ export class Oidc { configuration.demonstrating_proof_of_possession_configuration ?? defaultDemonstratingProofOfPossessionConfiguration, preload_user_info: configuration.preload_user_info ?? false, + par: configuration.par ?? 'disabled', + par_request_timeout: configuration.par_request_timeout ?? 10000, }; this.getFetch = getFetch ?? getFetchDefault; @@ -281,6 +290,10 @@ Please checkout that you are using OIDC hook inside a { diff --git a/packages/oidc-client/src/par.spec.ts b/packages/oidc-client/src/par.spec.ts new file mode 100644 index 000000000..63debefd4 --- /dev/null +++ b/packages/oidc-client/src/par.spec.ts @@ -0,0 +1,232 @@ +import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; + +import { ILOidcLocation } from './location'; +import { defaultLoginAsync } from './login'; +import { OidcAuthorizationServiceConfiguration } from './oidc'; +import { PushedAuthorizationRequestErrorCode } from './pushedAuthorizationRequestError'; +import { Fetch, OidcConfiguration } from './types'; + +const makeStorage = (): Storage => { + const store: Record = {}; + return { + getItem: (key: string) => store[key] ?? null, + setItem: (key: string, value: string) => { + store[key] = value; + }, + removeItem: (key: string) => { + delete store[key]; + }, + clear: () => { + for (const key of Object.keys(store)) { + delete store[key]; + } + }, + get length() { + return Object.keys(store).length; + }, + key: (index: number) => Object.keys(store)[index] ?? null, + [Symbol.iterator]: function* () { + yield* Object.entries(store); + }, + } as unknown as Storage; +}; + +class FakeLocation implements ILOidcLocation { + openedUrl: string = null; + + open(url: string): void { + this.openedUrl = url; + } + + reload(): void {} + + getCurrentHref(): string { + return ''; + } + + getPath(): string { + return '/current'; + } + + getOrigin(): string { + return 'https://client.example.com'; + } +} + +const createConfiguration = (overrides: Partial = {}): OidcConfiguration => { + const storage = makeStorage(); + return { + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid profile', + authority: 'https://issuer.example.com', + storage, + login_state_storage: storage, + ...overrides, + }; +}; + +const createMetadata = (overrides: Record = {}) => ({ + authorizationEndpoint: 'https://issuer.example.com/authorize', + issuer: 'https://issuer.example.com', + pushedAuthorizationRequestEndpoint: 'https://issuer.example.com/par', + requirePushedAuthorizationRequests: false, + ...overrides, +}); + +const asFetch = (mock: ReturnType): Fetch => mock as unknown as Fetch; + +const runLogin = async ({ + configuration, + metadata, + fetchMock = vi.fn(), +}: { + configuration: OidcConfiguration; + metadata: Record; + fetchMock?: ReturnType; +}) => { + const location = new FakeLocation(); + const publishEvent = vi.fn(); + const initAsync = vi.fn(async () => metadata); + + const promise = defaultLoginAsync( + 'default', + configuration, + publishEvent, + initAsync, + location, + () => asFetch(fetchMock), + )('/return'); + + return { promise, location, publishEvent, fetchMock }; +}; + +describe('PAR mode selection', () => { + const originalWindow = Object.getOwnPropertyDescriptor(globalThis, 'window'); + + beforeAll(() => { + Object.defineProperty(globalThis, 'window', { + configurable: true, + value: { crypto: globalThis.crypto }, + }); + }); + + afterAll(() => { + if (originalWindow) { + Object.defineProperty(globalThis, 'window', originalWindow); + } else { + delete (globalThis as { window?: unknown }).window; + } + }); + + it('maps PAR discovery metadata to the authorization service configuration', () => { + const metadata = new OidcAuthorizationServiceConfiguration({ + authorization_endpoint: 'https://issuer.example.com/authorize', + pushed_authorization_request_endpoint: 'https://issuer.example.com/par', + require_pushed_authorization_requests: true, + issuer: 'https://issuer.example.com', + }) as any; + + expect(metadata.pushedAuthorizationRequestEndpoint).toBe('https://issuer.example.com/par'); + expect(metadata.requirePushedAuthorizationRequests).toBe(true); + }); + + it('keeps PAR disabled by default even when the server advertises it', async () => { + const { promise, location, fetchMock } = await runLogin({ + configuration: createConfiguration(), + metadata: createMetadata(), + }); + + await promise; + + expect(fetchMock).not.toHaveBeenCalled(); + const redirect = new URL(location.openedUrl); + expect(redirect.searchParams.get('request_uri')).toBeNull(); + expect(redirect.searchParams.get('redirect_uri')).toBe('https://client.example.com/callback'); + }); + + it('uses PAR in auto mode when the endpoint is advertised', async () => { + const fetchMock = vi.fn(async () => ({ + status: 201, + json: async () => ({ + request_uri: 'urn:ietf:params:oauth:request_uri:auto', + expires_in: 60, + }), + })); + const { promise, location } = await runLogin({ + configuration: createConfiguration({ par: 'auto' }), + metadata: createMetadata(), + fetchMock, + }); + + await promise; + + expect(fetchMock).toHaveBeenCalledOnce(); + expect(Object.fromEntries(new URL(location.openedUrl).searchParams)).toEqual({ + client_id: 'client', + request_uri: 'urn:ietf:params:oauth:request_uri:auto', + }); + }); + + it('uses the existing front-channel flow in auto mode when PAR is not advertised', async () => { + const { promise, location, fetchMock } = await runLogin({ + configuration: createConfiguration({ par: 'auto' }), + metadata: createMetadata({ pushedAuthorizationRequestEndpoint: undefined }), + }); + + await promise; + + expect(fetchMock).not.toHaveBeenCalled(); + expect(new URL(location.openedUrl).searchParams.get('redirect_uri')).toBe( + 'https://client.example.com/callback', + ); + }); + + it.each([ + ['required', false], + ['auto', true], + ] as const)( + 'fails before navigation in %s mode when no PAR endpoint is available', + async (par, requirePushedAuthorizationRequests) => { + const { promise, location, publishEvent } = await runLogin({ + configuration: createConfiguration({ par }), + metadata: createMetadata({ + pushedAuthorizationRequestEndpoint: undefined, + requirePushedAuthorizationRequests, + }), + }); + + await expect(promise).rejects.toMatchObject({ + code: PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE, + }); + expect(location.openedUrl).toBeNull(); + expect(publishEvent).toHaveBeenLastCalledWith( + 'loginAsync_error', + expect.objectContaining({ + code: PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE, + }), + ); + }, + ); + + it('does not silently downgrade to a front-channel request after a PAR error', async () => { + const fetchMock = vi.fn(async () => ({ + status: 400, + json: async () => ({ + error: 'invalid_request', + error_description: 'Invalid authorization request', + }), + })); + const { promise, location } = await runLogin({ + configuration: createConfiguration({ par: 'auto' }), + metadata: createMetadata(), + fetchMock, + }); + + await expect(promise).rejects.toMatchObject({ + code: PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + status: 400, + }); + expect(location.openedUrl).toBeNull(); + }); +}); diff --git a/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts b/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts new file mode 100644 index 000000000..851bf101a --- /dev/null +++ b/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts @@ -0,0 +1,39 @@ +import { describe, expect, it } from 'vitest'; + +import { + isPushedAuthorizationRequestError, + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, +} from './pushedAuthorizationRequestError'; + +describe('PushedAuthorizationRequestError', () => { + it('exposes stable error codes', () => { + expect(PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE).toBe('ENDPOINT_UNAVAILABLE'); + expect(PushedAuthorizationRequestErrorCode.REQUEST_FAILED).toBe('REQUEST_FAILED'); + expect(PushedAuthorizationRequestErrorCode.INVALID_RESPONSE).toBe('INVALID_RESPONSE'); + }); + + it('preserves PAR and OAuth error details', () => { + const cause = new Error('network failure'); + const error = new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + 'PAR failed', + { + status: 400, + oauthError: 'invalid_request', + oauthErrorDescription: 'Invalid redirect URI', + cause, + }, + ); + + expect(error).toBeInstanceOf(Error); + expect(error.name).toBe('PushedAuthorizationRequestError'); + expect(error.code).toBe('REQUEST_FAILED'); + expect(error.status).toBe(400); + expect(error.oauthError).toBe('invalid_request'); + expect(error.oauthErrorDescription).toBe('Invalid redirect URI'); + expect(error.cause).toBe(cause); + expect(isPushedAuthorizationRequestError(error)).toBe(true); + expect(isPushedAuthorizationRequestError(new Error('other'))).toBe(false); + }); +}); diff --git a/packages/oidc-client/src/pushedAuthorizationRequestError.ts b/packages/oidc-client/src/pushedAuthorizationRequestError.ts new file mode 100644 index 000000000..7e8d77eef --- /dev/null +++ b/packages/oidc-client/src/pushedAuthorizationRequestError.ts @@ -0,0 +1,46 @@ +export const PushedAuthorizationRequestErrorCode = { + ENDPOINT_UNAVAILABLE: 'ENDPOINT_UNAVAILABLE', + REQUEST_FAILED: 'REQUEST_FAILED', + INVALID_RESPONSE: 'INVALID_RESPONSE', +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type PushedAuthorizationRequestErrorCode = + (typeof PushedAuthorizationRequestErrorCode)[keyof typeof PushedAuthorizationRequestErrorCode]; + +type PushedAuthorizationRequestErrorOptions = { + status?: number; + oauthError?: string; + oauthErrorDescription?: string; + cause?: unknown; +}; + +export class PushedAuthorizationRequestError extends Error { + readonly code: PushedAuthorizationRequestErrorCode; + readonly status?: number; + readonly oauthError?: string; + readonly oauthErrorDescription?: string; + readonly cause?: unknown; + + constructor( + code: PushedAuthorizationRequestErrorCode, + message: string, + options: PushedAuthorizationRequestErrorOptions = {}, + ) { + super(message); + this.name = 'PushedAuthorizationRequestError'; + this.code = code; + this.status = options.status; + this.oauthError = options.oauthError; + this.oauthErrorDescription = options.oauthErrorDescription; + this.cause = options.cause; + + Object.setPrototypeOf(this, PushedAuthorizationRequestError.prototype); + } +} + +export const isPushedAuthorizationRequestError = ( + value: unknown, +): value is PushedAuthorizationRequestError => { + return value instanceof PushedAuthorizationRequestError; +}; diff --git a/packages/oidc-client/src/requests.spec.ts b/packages/oidc-client/src/requests.spec.ts index 32c7f879d..b4f17699e 100644 --- a/packages/oidc-client/src/requests.spec.ts +++ b/packages/oidc-client/src/requests.spec.ts @@ -1,7 +1,234 @@ -import { describe, expect, it } from 'vitest'; +import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; -describe('Requests test Suite', () => { - it('performAuthorizationRequestAsync', async () => { - expect(true).toBe(true); +import { ILOidcLocation } from './location'; +import { + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, +} from './pushedAuthorizationRequestError'; +import { + performAuthorizationRequestAsync, + performPushedAuthorizationRequestAsync, +} from './requests'; +import { Fetch } from './types'; + +class FakeLocation implements ILOidcLocation { + openedUrl: string = null; + + open(url: string): void { + this.openedUrl = url; + } + + reload(): void {} + + getCurrentHref(): string { + return ''; + } + + getPath(): string { + return '/'; + } + + getOrigin(): string { + return 'https://client.example.com'; + } +} + +const createResponse = (status: number, data: unknown): Response => + ({ + status, + json: vi.fn(async () => data), + }) as unknown as Response; + +const asFetch = (mock: ReturnType): Fetch => mock as unknown as Fetch; + +describe('Pushed Authorization Requests', () => { + it('posts the authorization parameters as form data and accepts a RFC 9126 response', async () => { + const fetchMock = vi.fn(async (_url: string, _request: RequestInit) => + createResponse(201, { + request_uri: 'urn:ietf:params:oauth:request_uri:abc', + expires_in: 90, + }), + ); + + const result = await performPushedAuthorizationRequestAsync(asFetch(fetchMock))( + 'https://issuer.example.com/par', + { + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid profile', + state: 'state-value', + }, + ); + + expect(result).toEqual({ + request_uri: 'urn:ietf:params:oauth:request_uri:abc', + expires_in: 90, + }); + expect(fetchMock).toHaveBeenCalledOnce(); + const [url, request] = fetchMock.mock.calls[0]; + expect(url).toBe('https://issuer.example.com/par'); + expect(request.method).toBe('POST'); + expect(request.headers).toEqual({ + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + }); + expect(Object.fromEntries(new URLSearchParams(request.body as string))).toEqual({ + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid profile', + state: 'state-value', + }); + }); + + it('surfaces OAuth error details returned by the PAR endpoint', async () => { + const fetchMock = vi.fn(async () => + createResponse(400, { + error: 'invalid_request', + error_description: 'redirect_uri is invalid', + }), + ); + + await expect( + performPushedAuthorizationRequestAsync(asFetch(fetchMock))('https://issuer.example.com/par', { + client_id: 'client', + }), + ).rejects.toMatchObject({ + name: 'PushedAuthorizationRequestError', + code: PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + status: 400, + oauthError: 'invalid_request', + oauthErrorDescription: 'redirect_uri is invalid', + }); + }); + + it.each([ + [{ expires_in: 90 }, 'missing request_uri'], + [{ request_uri: 'urn:request:abc' }, 'missing expires_in'], + [{ request_uri: '', expires_in: 90 }, 'empty request_uri'], + [{ request_uri: 'urn:request:abc', expires_in: 0 }, 'invalid expires_in'], + ])('rejects an invalid successful response (%s: %s)', async (data: any, _description) => { + const fetchMock = vi.fn(async () => createResponse(201, data)); + + await expect( + performPushedAuthorizationRequestAsync(asFetch(fetchMock))('https://issuer.example.com/par', { + client_id: 'client', + }), + ).rejects.toMatchObject({ + code: PushedAuthorizationRequestErrorCode.INVALID_RESPONSE, + status: 201, + }); + }); + + it('rejects request_uri in the pushed parameters before sending a request', async () => { + const fetchMock = vi.fn(); + + await expect( + performPushedAuthorizationRequestAsync(asFetch(fetchMock))('https://issuer.example.com/par', { + client_id: 'client', + request_uri: 'urn:request:not-allowed', + }), + ).rejects.toBeInstanceOf(PushedAuthorizationRequestError); + expect(fetchMock).not.toHaveBeenCalled(); + }); +}); + +describe('performAuthorizationRequestAsync', () => { + const originalWindow = Object.getOwnPropertyDescriptor(globalThis, 'window'); + + beforeAll(() => { + Object.defineProperty(globalThis, 'window', { + configurable: true, + value: { crypto: globalThis.crypto }, + }); + }); + + afterAll(() => { + if (originalWindow) { + Object.defineProperty(globalThis, 'window', originalWindow); + } else { + delete (globalThis as { window?: unknown }).window; + } + }); + + it('keeps the existing front-channel authorization request when PAR is not selected', async () => { + const storage = { + setCodeVerifierAsync: vi.fn(async () => undefined), + setStateAsync: vi.fn(async () => undefined), + }; + const location = new FakeLocation(); + + await performAuthorizationRequestAsync(storage, location)( + 'https://issuer.example.com/authorize', + { + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + response_type: 'code', + scope: 'openid', + state: 'state-value', + }, + ); + + const url = new URL(location.openedUrl); + expect(url.origin + url.pathname).toBe('https://issuer.example.com/authorize'); + expect(Object.fromEntries(url.searchParams)).toMatchObject({ + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + response_type: 'code', + scope: 'openid', + state: 'state-value', + code_challenge_method: 'S256', + }); + expect(url.searchParams.get('code_challenge')).toBeTruthy(); + expect(storage.setCodeVerifierAsync).toHaveBeenCalledWith(expect.any(String)); + expect(storage.setStateAsync).toHaveBeenCalledWith('state-value'); + }); + + it('pushes the complete PKCE request and redirects with only client_id and request_uri', async () => { + const storage = { + setCodeVerifierAsync: vi.fn(async () => undefined), + setStateAsync: vi.fn(async () => undefined), + }; + const location = new FakeLocation(); + const fetchMock = vi.fn(async (_url: string, _request: RequestInit) => + createResponse(201, { + request_uri: 'urn:ietf:params:oauth:request_uri:abc/123', + expires_in: 60, + }), + ); + + await performAuthorizationRequestAsync(storage, location)( + 'https://issuer.example.com/authorize', + { + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + response_type: 'code', + scope: 'openid profile', + state: 'state-value', + nonce: 'nonce-value', + }, + { + endpoint: 'https://issuer.example.com/par', + fetch: asFetch(fetchMock), + timeoutMs: 5000, + }, + ); + + const [, request] = fetchMock.mock.calls[0]; + const pushedParameters = Object.fromEntries(new URLSearchParams(request.body as string)); + expect(pushedParameters).toMatchObject({ + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + response_type: 'code', + scope: 'openid profile', + state: 'state-value', + nonce: 'nonce-value', + code_challenge_method: 'S256', + }); + expect(pushedParameters.code_challenge).toBeTruthy(); + + const redirect = new URL(location.openedUrl); + expect(Object.fromEntries(redirect.searchParams)).toEqual({ + client_id: 'client', + request_uri: 'urn:ietf:params:oauth:request_uri:abc/123', + }); }); }); diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 8c61f47cb..ded508bc6 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -3,6 +3,10 @@ import { deriveChallengeAsync, generateRandom } from './crypto.js'; import { ILOidcLocation } from './location'; import { OidcAuthorizationServiceConfiguration } from './oidc.js'; import { parseOriginalTokens } from './parseTokens.js'; +import { + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, +} from './pushedAuthorizationRequestError.js'; import { Fetch, StringMap } from './types.js'; const oneHourSecond = 60 * 60; @@ -39,8 +43,12 @@ const internalFetch = let response; try { const controller = new AbortController(); - setTimeout(() => controller.abort(), timeoutMs); - response = await fetch(url, { ...headers, signal: controller.signal }); + const timeoutId = setTimeout(() => controller.abort(), timeoutMs); + try { + response = await fetch(url, { ...headers, signal: controller.signal }); + } finally { + clearTimeout(timeoutId); + } } catch (e: any) { if (e.name === 'AbortError' || e.message === 'Network request failed') { if (numberRetry <= 1) { @@ -116,6 +124,99 @@ type PerformTokenRequestResponse = { demonstratingProofOfPossessionNonce?: string; }; +export type PushedAuthorizationRequestResponse = { + request_uri: string; + expires_in: number; +}; + +const getResponseJsonAsync = async (response: Response): Promise => { + try { + return await response.json(); + } catch { + return null; + } +}; + +export const performPushedAuthorizationRequestAsync = + (fetch: Fetch) => + async ( + url: string, + details: StringMap, + timeoutMs = 10000, + ): Promise => { + if (details.request_uri !== undefined) { + throw new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + 'The request_uri parameter must not be included in a pushed authorization request.', + ); + } + + const formBody = []; + for (const property in details) { + const encodedKey = encodeURIComponent(property); + const encodedValue = encodeURIComponent(details[property]); + formBody.push(`${encodedKey}=${encodedValue}`); + } + + let response: Response; + try { + response = await internalFetch(fetch)( + url, + { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + }, + body: formBody.join('&'), + }, + timeoutMs, + ); + } catch (cause) { + throw new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + 'The pushed authorization request could not be sent.', + { cause }, + ); + } + + const data = await getResponseJsonAsync(response); + if (response.status !== 201) { + const oauthError = typeof data?.error === 'string' ? data.error : undefined; + const oauthErrorDescription = + typeof data?.error_description === 'string' ? data.error_description : undefined; + const serverError = [oauthError, oauthErrorDescription].filter(Boolean).join(': '); + throw new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.REQUEST_FAILED, + `The pushed authorization request failed with HTTP status ${response.status}${ + serverError ? ` (${serverError})` : '' + }.`, + { + status: response.status, + oauthError, + oauthErrorDescription, + }, + ); + } + + if ( + typeof data?.request_uri !== 'string' || + data.request_uri.length === 0 || + !Number.isInteger(data?.expires_in) || + data.expires_in <= 0 + ) { + throw new PushedAuthorizationRequestError( + PushedAuthorizationRequestErrorCode.INVALID_RESPONSE, + 'The pushed authorization response must contain a non-empty request_uri and a positive integer expires_in.', + { status: response.status }, + ); + } + + return { + request_uri: data.request_uri, + expires_in: data.expires_in, + }; + }; + export const performTokenRequestAsync = (fetch: Fetch) => async ( @@ -177,7 +278,16 @@ export const performTokenRequestAsync = }; export const performAuthorizationRequestAsync = - (storage: any, oidcLocation: ILOidcLocation) => async (url, extras: StringMap) => { + (storage: any, oidcLocation: ILOidcLocation) => + async ( + url, + extras: StringMap, + pushedAuthorizationRequest?: { + endpoint: string; + fetch: Fetch; + timeoutMs?: number; + }, + ) => { extras = extras ? { ...extras } : {}; const codeVerifier = generateRandom(128); const codeChallenge = await deriveChallengeAsync(codeVerifier); @@ -185,6 +295,19 @@ export const performAuthorizationRequestAsync = await storage.setStateAsync(extras.state); extras.code_challenge = codeChallenge; extras.code_challenge_method = 'S256'; + + if (pushedAuthorizationRequest) { + const response = await performPushedAuthorizationRequestAsync( + pushedAuthorizationRequest.fetch, + )(pushedAuthorizationRequest.endpoint, extras, pushedAuthorizationRequest.timeoutMs); + oidcLocation.open( + `${url}?client_id=${encodeURIComponent(extras.client_id)}&request_uri=${encodeURIComponent( + response.request_uri, + )}`, + ); + return; + } + let queryString = ''; if (extras) { for (const [key, value] of Object.entries(extras)) { diff --git a/packages/oidc-client/src/types.ts b/packages/oidc-client/src/types.ts index ac579ea62..ddf7a88d4 100644 --- a/packages/oidc-client/src/types.ts +++ b/packages/oidc-client/src/types.ts @@ -2,6 +2,8 @@ export type Fetch = typeof window.fetch; export type LogoutToken = 'access_token' | 'refresh_token'; +export type PushedAuthorizationRequestMode = 'disabled' | 'auto' | 'required'; + export type ServiceWorkerUpdateRequireCallback = ( registration: any, stopKeepAlive: () => void, @@ -30,6 +32,8 @@ export type OidcConfiguration = { refresh_time_before_tokens_expiration_in_second?: number; token_automatic_renew_mode?: TokenAutomaticRenewMode; token_request_timeout?: number; + par?: PushedAuthorizationRequestMode; + par_request_timeout?: number; service_worker_relative_url?: string; service_worker_register?: ServiceWorkerRegister; service_worker_keep_alive_path?: string; @@ -70,6 +74,8 @@ export interface AuthorityConfiguration { authorization_endpoint: string; token_endpoint: string; revocation_endpoint: string; + pushed_authorization_request_endpoint?: string; + require_pushed_authorization_requests?: boolean; end_session_endpoint?: string; userinfo_endpoint?: string; check_session_iframe?: string; diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index bd9963042..f9adf5f19 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -173,6 +173,7 @@ const configuration = { silent_redirect_uri: window.location.origin + '/authentication/silent-callback', scope: 'openid profile email api offline_access', // offline_access scope allow your client to retrieve the refresh_token authority: 'https://demo.duendesoftware.com', + par: 'auto', service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode service_worker_only: false, demonstrating_proof_of_possession: false, @@ -219,6 +220,8 @@ const configuration = { userinfo_endpoint: String, end_session_endpoint: String, revocation_endpoint: String, + pushed_authorization_request_endpoint: String, + require_pushed_authorization_requests: Boolean, check_session_iframe: String, issuer: String, }, @@ -233,6 +236,8 @@ const configuration = { withCustomHistory: Function, // Override history modification, return an instance with replaceState(url, stateHistory) implemented (like History.replaceState()) authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown + par: 'disabled' | 'auto' | 'required', // Pushed Authorization Requests mode, default is 'disabled' + par_request_timeout: Number, // PAR endpoint timeout in milliseconds, default is 10000 monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user with the same subject is logged out from another tab when session_monitor is active onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active @@ -279,6 +284,29 @@ const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPo ``` +### Pushed Authorization Requests (PAR) + +PAR is configured on the nested OIDC `configuration` object: + +```tsx +const configuration = { + client_id: 'spa-client', + redirect_uri: `${window.location.origin}/authentication/callback`, + scope: 'openid profile', + authority: 'https://issuer.example.com', + par: 'auto', // 'disabled' (default), 'auto', or 'required' +}; +``` + +`auto` uses the discovered `pushed_authorization_request_endpoint` when it is +available. `required` fails before navigation if no endpoint is available. +Once PAR is selected, a PAR endpoint error is surfaced and never silently +downgraded. Browser deployments require the issuer's PAR endpoint to allow +CORS from the application origin. See the +[`@axa-fr/oidc-client` PAR documentation](../oidc-client/README.md#pushed-authorization-requests-par) +for complete mode semantics, custom authority metadata, error handling, and +security guidance. + ## How to consume > **Note (issue #1679):** `useOidc`, `useOidcUser`, `useOidcAccessToken` and @@ -663,6 +691,7 @@ const configuration = { silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-login that use cookies between OIDC server and client javascript to restore the session scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', }; const onEvent = (configurationName, eventName, data) => { @@ -712,6 +741,7 @@ export const configurationIdentityServerWithHash = { silent_redirect_uri: window.location.origin + '#authentication-silent-callback', scope: 'openid profile email api offline_access', authority: 'https://demo.duendesoftware.com', + par: 'auto', refresh_time_before_tokens_expiration_in_second: 70, service_worker_relative_url: '/OidcServiceWorker.js', service_worker_only: false, diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index 861a698ca..f874611c0 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -9,15 +9,19 @@ export type { Fetch, ILOidcLocation, OidcConfiguration, + PushedAuthorizationRequestMode, StringMap, } from '@axa-fr/oidc-client'; export type { OidcUserInfo } from '@axa-fr/oidc-client'; export { isOidcStateError, + isPushedAuthorizationRequestError, OidcClient, OidcLocation, OidcStateError, OidcStateErrorCode, + PushedAuthorizationRequestError, + PushedAuthorizationRequestErrorCode, TokenAutomaticRenewMode, TokenRenewMode, } from '@axa-fr/oidc-client'; From 69aa8f1e50709aa11067429acfc178f5e5dce23f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:06:00 +0000 Subject: [PATCH 524/565] 7.28.0 --- packages/oidc-client-service-worker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0c19ee81f..78c219a78 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.27.23", + "version": "7.28.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", From 87ed38bb864af0d2db246e2c225facd7be7e4e8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:06:50 +0000 Subject: [PATCH 525/565] [skip ci] Update to version 7.28.0 in package.json --- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 73273c0c3..ae6357e3e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.27.23'; +export default '7.28.0'; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 73273c0c3..ae6357e3e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.27.23'; +export default '7.28.0'; From c1235d2ab53c11faa3275112e345130252ae87aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:06:52 +0000 Subject: [PATCH 526/565] [skip ci] Generate changelog to version 7.28.0 --- CHANGELOG.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97254e82c..2f71c06db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,21 @@ # Changelog -## 7.27.23 +## 7.28.0 +- [87ed38b](https://github.com/AxaFrance/oidc-client/commit/87ed38bb864af0d2db246e2c225facd7be7e4e8d) - [skip ci] Update to version 7.28.0 in package.json, 2026-07-28 by *github-actions[bot]* + + +## v7.28.0 + +- [69aa8f1](https://github.com/AxaFrance/oidc-client/commit/69aa8f1e50709aa11067429acfc178f5e5dce23f) - 7.28.0, 2026-07-28 by *github-actions[bot]* +- [638eee8](https://github.com/AxaFrance/oidc-client/commit/638eee8ab1bbfecfadfb05d64217c2ecec9749be) - feat(oidc-client): PAR (#1718) (release), 2026-07-28 by *Guillaume Chervet* +- [f90927c](https://github.com/AxaFrance/oidc-client/commit/f90927c21f9bd0f94dc537391186937978a21b3d) - [skip ci] Generate changelog to version 7.27.23, 2026-07-15 by *github-actions[bot]* - [b2cf323](https://github.com/AxaFrance/oidc-client/commit/b2cf323be58da2c7e66d73fb7040dfddb0ab683f) - [skip ci] Update to version 7.27.23 in package.json, 2026-07-15 by *github-actions[bot]* +- [87081bb](https://github.com/AxaFrance/oidc-client/commit/87081bbcd041a85ae8f0161b0dd241fe4a8c0279) - 7.27.23, 2026-07-15 by *github-actions[bot]* ## v7.27.23 -- [87081bb](https://github.com/AxaFrance/oidc-client/commit/87081bbcd041a85ae8f0161b0dd241fe4a8c0279) - 7.27.23, 2026-07-15 by *github-actions[bot]* - [ad4036a](https://github.com/AxaFrance/oidc-client/commit/ad4036a3de0626eccb8ecfc6f6c2e3ad1b79211b) - Update npm-publish.yml (release), 2026-07-15 by *Guillaume Chervet* @@ -300,8 +308,3 @@ - [8c98b27](https://github.com/AxaFrance/oidc-client/commit/8c98b2701e1118538455816ca458062cfc07d716) - fix(oidc): remove missing console.log (#1472) (release), 2024-10-01 by *Guillaume Chervet* -## v7.22.29 - -- [e297a7b](https://github.com/AxaFrance/oidc-client/commit/e297a7b5bd9d3eebb7cea443185039a7cb74d2f4) - fix(oidc): navigator locks null (#1466) (release), 2024-09-29 by *Guillaume Chervet* - - From 8de7e316cc14d3f420808e36fb390c4e99b3cc65 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 28 Jul 2026 10:21:51 +0200 Subject: [PATCH 527/565] fix(all): remove Math.random (release) (#1719) --- .../src/__tests__/jwt.spec.ts | 33 +++++++++++++ .../oidc-client-service-worker/src/jwt.ts | 48 +------------------ packages/oidc-client/src/crypto.spec.ts | 40 ++++++++++++++++ packages/oidc-client/src/crypto.ts | 19 ++++---- packages/oidc-client/src/jwt.spec.ts | 33 +++++++++++++ packages/oidc-client/src/jwt.ts | 48 +------------------ packages/oidc-client/src/oidc.ts | 8 +--- 7 files changed, 119 insertions(+), 110 deletions(-) create mode 100644 packages/oidc-client-service-worker/src/__tests__/jwt.spec.ts create mode 100644 packages/oidc-client/src/crypto.spec.ts create mode 100644 packages/oidc-client/src/jwt.spec.ts diff --git a/packages/oidc-client-service-worker/src/__tests__/jwt.spec.ts b/packages/oidc-client-service-worker/src/__tests__/jwt.spec.ts new file mode 100644 index 000000000..6a8af5cd5 --- /dev/null +++ b/packages/oidc-client-service-worker/src/__tests__/jwt.spec.ts @@ -0,0 +1,33 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { + defaultDemonstratingProofOfPossessionConfiguration, + generateJwkAsync, + generateJwtDemonstratingProofOfPossessionAsync, +} from '../jwt'; + +const decodePayload = (jwt: string) => { + const payload = jwt.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'); + return JSON.parse(atob(payload)); +}; + +describe('generateJwtDemonstratingProofOfPossessionAsync', () => { + it('uses a cryptographically secure UUID for the DPoP jti in the service worker', async () => { + const uuid = '123e4567-e89b-42d3-a456-426614174000'; + const randomUUID = vi.fn(() => uuid); + const webCrypto = { + subtle: globalThis.crypto.subtle, + randomUUID, + }; + const jwk = await generateJwkAsync(globalThis)( + defaultDemonstratingProofOfPossessionConfiguration.generateKeyAlgorithm, + ); + + const jwt = await generateJwtDemonstratingProofOfPossessionAsync({ crypto: webCrypto })( + defaultDemonstratingProofOfPossessionConfiguration, + )(jwk, 'GET', 'https://api.example.com/resource'); + + expect(randomUUID).toHaveBeenCalledOnce(); + expect(decodePayload(jwt).jti).toBe(btoa(uuid)); + }); +}); diff --git a/packages/oidc-client-service-worker/src/jwt.ts b/packages/oidc-client-service-worker/src/jwt.ts index a0c7068b1..2672477bb 100644 --- a/packages/oidc-client-service-worker/src/jwt.ts +++ b/packages/oidc-client-service-worker/src/jwt.ts @@ -210,7 +210,7 @@ export const generateJwtDemonstratingProofOfPossessionAsync = async (jwk: any, method = 'POST', url: string, extrasClaims = {}) => { const claims = { // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept - jti: btoa(guid()), + jti: btoa(w.crypto.randomUUID()), htm: method, htu: url, iat: Math.round(Date.now() / 1000), @@ -231,49 +231,3 @@ export const generateJwtDemonstratingProofOfPossessionAsync = // console.info('JWT:', jwt); return jwt; }; - -const guid = () => { - // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or - // pseudo-random numbers. - // The algorithm is as follows: - // Set the two most significant bits (bits 6 and 7) of the - // clock_seq_hi_and_reserved to zero and one, respectively. - // Set the four most significant bits (bits 12 through 15) of the - // time_hi_and_version field to the 4-bit version number from - // Section 4.1.3. Version4 - // Set all the other bits to randomly (or pseudo-randomly) chosen - // values. - // UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node - // time-low = 4hexOctet - // time-mid = 2hexOctet - // time-high-and-version = 2hexOctet - // clock-seq-and-reserved = hexOctet: - // clock-seq-low = hexOctet - // node = 6hexOctet - // Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx - // y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 - // y values are 8, 9, A, B - const guidHolder = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; - const hex = '0123456789abcdef'; - let r = 0; - let guidResponse = ''; - for (let i = 0; i < 36; i++) { - if (guidHolder[i] !== '-' && guidHolder[i] !== '4') { - // each x and y needs to be random - r = (Math.random() * 16) | 0; - } - - if (guidHolder[i] === 'x') { - guidResponse += hex[r]; - } else if (guidHolder[i] === 'y') { - // clock-seq-and-reserved first hex is filtered and remaining hex values are random - r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? - r |= 0x8; // set pos 3 to 1 as 1??? - guidResponse += hex[r]; - } else { - guidResponse += guidHolder[i]; - } - } - - return guidResponse; -}; diff --git a/packages/oidc-client/src/crypto.spec.ts b/packages/oidc-client/src/crypto.spec.ts new file mode 100644 index 000000000..ad5e4f927 --- /dev/null +++ b/packages/oidc-client/src/crypto.spec.ts @@ -0,0 +1,40 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { generateRandom } from './crypto'; + +describe('generateRandom', () => { + const originalCrypto = Object.getOwnPropertyDescriptor(globalThis, 'crypto'); + + afterEach(() => { + if (originalCrypto) { + Object.defineProperty(globalThis, 'crypto', originalCrypto); + } else { + delete (globalThis as { crypto?: Crypto }).crypto; + } + }); + + it('uses Web Crypto to generate authentication-related random values', () => { + const getRandomValues = vi.fn((buffer: Uint8Array) => { + buffer.fill(1); + return buffer; + }); + Object.defineProperty(globalThis, 'crypto', { + configurable: true, + value: { getRandomValues }, + }); + + expect(generateRandom(4)).toBe('BBBB'); + expect(getRandomValues).toHaveBeenCalledOnce(); + }); + + it('does not fall back to a non-cryptographic random source', () => { + Object.defineProperty(globalThis, 'crypto', { + configurable: true, + value: undefined, + }); + + expect(() => generateRandom(16)).toThrow( + 'Web Crypto API is unavailable; secure random values cannot be generated.', + ); + }); +}); diff --git a/packages/oidc-client/src/crypto.ts b/packages/oidc-client/src/crypto.ts index 17ea8e45d..a7e7b057d 100644 --- a/packages/oidc-client/src/crypto.ts +++ b/packages/oidc-client/src/crypto.ts @@ -1,8 +1,11 @@ import { uint8ToUrlBase64 } from './jwt'; +const getWebCrypto = () => (typeof globalThis !== 'undefined' ? globalThis.crypto : undefined); + const cryptoInfo = () => { - const hasCrypto = typeof window !== 'undefined' && !!(window.crypto as any); - const hasSubtleCrypto = hasCrypto && !!(window.crypto.subtle as any); + const webCrypto = getWebCrypto(); + const hasCrypto = !!webCrypto; + const hasSubtleCrypto = !!webCrypto?.subtle; return { hasCrypto, hasSubtleCrypto }; }; const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; @@ -18,15 +21,11 @@ const bufferToString = (buffer: Uint8Array) => { export const generateRandom = (size: number) => { const buffer = new Uint8Array(size); - const { hasCrypto } = cryptoInfo(); - if (hasCrypto) { - window.crypto.getRandomValues(buffer); - } else { - // fall back to Math.random() if nothing else is available - for (let i = 0; i < size; i += 1) { - buffer[i] = (Math.random() * charset.length) | 0; - } + const webCrypto = getWebCrypto(); + if (!webCrypto?.getRandomValues) { + throw new Error('Web Crypto API is unavailable; secure random values cannot be generated.'); } + webCrypto.getRandomValues(buffer); return bufferToString(buffer); }; diff --git a/packages/oidc-client/src/jwt.spec.ts b/packages/oidc-client/src/jwt.spec.ts new file mode 100644 index 000000000..f6b6761e8 --- /dev/null +++ b/packages/oidc-client/src/jwt.spec.ts @@ -0,0 +1,33 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { + defaultDemonstratingProofOfPossessionConfiguration, + generateJwkAsync, + generateJwtDemonstratingProofOfPossessionAsync, +} from './jwt'; + +const decodePayload = (jwt: string) => { + const payload = jwt.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'); + return JSON.parse(atob(payload)); +}; + +describe('generateJwtDemonstratingProofOfPossessionAsync', () => { + it('uses a cryptographically secure UUID for the DPoP jti', async () => { + const uuid = '123e4567-e89b-42d3-a456-426614174000'; + const randomUUID = vi.fn(() => uuid); + const webCrypto = { + subtle: globalThis.crypto.subtle, + randomUUID, + }; + const jwk = await generateJwkAsync(globalThis)( + defaultDemonstratingProofOfPossessionConfiguration.generateKeyAlgorithm, + ); + + const jwt = await generateJwtDemonstratingProofOfPossessionAsync({ crypto: webCrypto })( + defaultDemonstratingProofOfPossessionConfiguration, + )(jwk, 'GET', 'https://api.example.com/resource'); + + expect(randomUUID).toHaveBeenCalledOnce(); + expect(decodePayload(jwt).jti).toBe(btoa(uuid)); + }); +}); diff --git a/packages/oidc-client/src/jwt.ts b/packages/oidc-client/src/jwt.ts index 11c233989..a74b0fffc 100644 --- a/packages/oidc-client/src/jwt.ts +++ b/packages/oidc-client/src/jwt.ts @@ -209,7 +209,7 @@ export const generateJwtDemonstratingProofOfPossessionAsync = async (jwk, method = 'POST', url: string, extrasClaims = {}) => { const claims = { // https://www.rfc-editor.org/rfc/rfc9449.html#name-concept - jti: btoa(guid()), + jti: btoa(w.crypto.randomUUID()), htm: method, htu: url, iat: Math.round(Date.now() / 1000), @@ -230,49 +230,3 @@ export const generateJwtDemonstratingProofOfPossessionAsync = // console.info('JWT:', jwt); return jwt; }; - -const guid = () => { - // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or - // pseudo-random numbers. - // The algorithm is as follows: - // Set the two most significant bits (bits 6 and 7) of the - // clock_seq_hi_and_reserved to zero and one, respectively. - // Set the four most significant bits (bits 12 through 15) of the - // time_hi_and_version field to the 4-bit version number from - // Section 4.1.3. Version4 - // Set all the other bits to randomly (or pseudo-randomly) chosen - // values. - // UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node - // time-low = 4hexOctet - // time-mid = 2hexOctet - // time-high-and-version = 2hexOctet - // clock-seq-and-reserved = hexOctet: - // clock-seq-low = hexOctet - // node = 6hexOctet - // Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx - // y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 - // y values are 8, 9, A, B - const guidHolder = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; - const hex = '0123456789abcdef'; - let r = 0; - let guidResponse = ''; - for (let i = 0; i < 36; i++) { - if (guidHolder[i] !== '-' && guidHolder[i] !== '4') { - // each x and y needs to be random - r = (Math.random() * 16) | 0; - } - - if (guidHolder[i] === 'x') { - guidResponse += hex[r]; - } else if (guidHolder[i] === 'y') { - // clock-seq-and-reserved first hex is filtered and remaining hex values are random - r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? - r |= 0x8; // set pos 3 to 1 as 1??? - guidResponse += hex[r]; - } else { - guidResponse += guidHolder[i]; - } - } - - return guidResponse; -}; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index eb6979f2c..c962959e3 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -1,6 +1,6 @@ import { startCheckSessionAsync as defaultStartCheckSessionAsync } from './checkSession.js'; import { CheckSessionIFrame } from './checkSessionIFrame.js'; -import { base64urlOfHashOfASCIIEncodingAsync } from './crypto'; +import { base64urlOfHashOfASCIIEncodingAsync, generateRandom } from './crypto'; import { eventNames } from './events.js'; import { initSession } from './initSession.js'; import { getTabId, initWorkerAsync } from './initWorker.js'; @@ -92,10 +92,6 @@ const loginCallbackWithAutoTokensRenewAsync = async (oidc): Promise { - return Math.floor(Math.random() * max); -}; - export class Oidc { public configuration: OidcConfiguration; public userInfo: null; @@ -178,7 +174,7 @@ export class Oidc { } subscribeEvents(func): string { - const id = getRandomInt(9999999999999).toString(); + const id = generateRandom(16); this.events.push({ id, func }); return id; } From c14417787846f0bf6079c54c2baf61900353aeff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:22:08 +0000 Subject: [PATCH 528/565] 7.28.1 --- packages/oidc-client-service-worker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 78c219a78..c04ab3e7c 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.28.0", + "version": "7.28.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", From 84bbd033197363e00aecfd92e78f3dd8f2806d22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:23:14 +0000 Subject: [PATCH 529/565] [skip ci] Update to version 7.28.1 in package.json --- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index ae6357e3e..bbdbe9fc0 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.28.0'; +export default '7.28.1'; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index ae6357e3e..bbdbe9fc0 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.28.0'; +export default '7.28.1'; From 01bd60a962271ad9ba9b84a450bd5c9c3dbf3b92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:23:16 +0000 Subject: [PATCH 530/565] [skip ci] Generate changelog to version 7.28.1 --- CHANGELOG.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f71c06db..8824f3d1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,21 @@ # Changelog -## 7.28.0 +## 7.28.1 +- [84bbd03](https://github.com/AxaFrance/oidc-client/commit/84bbd033197363e00aecfd92e78f3dd8f2806d22) - [skip ci] Update to version 7.28.1 in package.json, 2026-07-28 by *github-actions[bot]* + + +## v7.28.1 + +- [c144177](https://github.com/AxaFrance/oidc-client/commit/c14417787846f0bf6079c54c2baf61900353aeff) - 7.28.1, 2026-07-28 by *github-actions[bot]* +- [8de7e31](https://github.com/AxaFrance/oidc-client/commit/8de7e316cc14d3f420808e36fb390c4e99b3cc65) - fix(all): remove Math.random (release) (#1719), 2026-07-28 by *Guillaume Chervet* +- [c1235d2](https://github.com/AxaFrance/oidc-client/commit/c1235d2ab53c11faa3275112e345130252ae87aa) - [skip ci] Generate changelog to version 7.28.0, 2026-07-28 by *github-actions[bot]* - [87ed38b](https://github.com/AxaFrance/oidc-client/commit/87ed38bb864af0d2db246e2c225facd7be7e4e8d) - [skip ci] Update to version 7.28.0 in package.json, 2026-07-28 by *github-actions[bot]* +- [69aa8f1](https://github.com/AxaFrance/oidc-client/commit/69aa8f1e50709aa11067429acfc178f5e5dce23f) - 7.28.0, 2026-07-28 by *github-actions[bot]* ## v7.28.0 -- [69aa8f1](https://github.com/AxaFrance/oidc-client/commit/69aa8f1e50709aa11067429acfc178f5e5dce23f) - 7.28.0, 2026-07-28 by *github-actions[bot]* - [638eee8](https://github.com/AxaFrance/oidc-client/commit/638eee8ab1bbfecfadfb05d64217c2ecec9749be) - feat(oidc-client): PAR (#1718) (release), 2026-07-28 by *Guillaume Chervet* - [f90927c](https://github.com/AxaFrance/oidc-client/commit/f90927c21f9bd0f94dc537391186937978a21b3d) - [skip ci] Generate changelog to version 7.27.23, 2026-07-15 by *github-actions[bot]* - [b2cf323](https://github.com/AxaFrance/oidc-client/commit/b2cf323be58da2c7e66d73fb7040dfddb0ab683f) - [skip ci] Update to version 7.27.23 in package.json, 2026-07-15 by *github-actions[bot]* @@ -303,8 +311,3 @@ - [cc731c1](https://github.com/AxaFrance/oidc-client/commit/cc731c15f1d72ce4d21a7958ca15128ae1dcdd89) - fix(oidc): force sw update when new registration appears (release) (#1449), 2024-10-02 by *wermanoid* -## v7.22.30 - -- [8c98b27](https://github.com/AxaFrance/oidc-client/commit/8c98b2701e1118538455816ca458062cfc07d716) - fix(oidc): remove missing console.log (#1472) (release), 2024-10-01 by *Guillaume Chervet* - - From bd1f087747d5342fa68dd84d3e4fb8ba38171768 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 30 Jul 2026 09:46:46 +0200 Subject: [PATCH 531/565] fix(oidc-react): Side effect on anonymous routes when reaching watchdog timeout (release) (#1722) --- packages/react-oidc/src/OidcProvider.spec.tsx | 56 ++++++++++++++++++- packages/react-oidc/src/OidcProvider.tsx | 45 ++++++--------- 2 files changed, 73 insertions(+), 28 deletions(-) diff --git a/packages/react-oidc/src/OidcProvider.spec.tsx b/packages/react-oidc/src/OidcProvider.spec.tsx index d37ea61eb..2aecef6a9 100644 --- a/packages/react-oidc/src/OidcProvider.spec.tsx +++ b/packages/react-oidc/src/OidcProvider.spec.tsx @@ -288,7 +288,7 @@ describe('OidcProvider loading timeout', () => { expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); }); - it('should still fire loadingTimeout_error when silent session restore reports no existing session', async () => { + it('should NOT fire loadingTimeout_error on an anonymous route when no session exists', async () => { render( { vi.advanceTimersByTime(300); }); + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + + it('should fire loadingTimeout_error when a protected route starts login after no session was found', async () => { + render( + +
App
+
, + ); + + act(() => { + mockEventSubscribers.forEach(sub => + sub.func('tryKeepExistingSessionAsync_end', { success: false }), + ); + }); + + act(() => { + mockEventSubscribers.forEach(sub => sub.func('loginAsync_begin', {})); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(300); + }); + expect(mockPublishEvent).toHaveBeenCalledWith('loadingTimeout_error', { timeoutMs: 300 }); }); + it('should NOT fire loadingTimeout_error on an anonymous route when session restore fails', async () => { + render( + +
App
+
, + ); + + act(() => { + mockEventSubscribers.forEach(sub => + sub.func('tryKeepExistingSessionAsync_error', { message: 'session restore failed' }), + ); + }); + + mockPublishEvent.mockClear(); + + act(() => { + vi.advanceTimersByTime(300); + }); + + expect(mockPublishEvent).not.toHaveBeenCalledWith('loadingTimeout_error', expect.anything()); + }); + it('should NOT fire loadingTimeout_error when token_acquired fires before the deadline', async () => { render( const DEFAULT_LOADING_TIMEOUT_MS = 30_000; /** - * Returns true when an event signals that the OIDC client has reached an - * authenticated, idle state and the loading watchdog should be disarmed. - * - * The default `event.name === ''` state in {@link OidcProvider} is overloaded: - * it represents both "not started yet" and "done and idle". A silent session - * restore via `tryKeepExistingSessionAsync` does not emit - * `loginCallbackAsync_end`, so without these explicit ready signals the - * watchdog would fire against a fully authenticated app. + * Returns true when an event signals that the OIDC client is no longer + * loading. Restoring the existing session is complete even when no session was + * found: an OidcSecure child will emit `loginAsync_begin` if the current route + * actually requires authentication. */ -const isReadySignal = (name: string, data: unknown): boolean => { - if ( - name === OidcClient.eventNames.token_acquired || - name === OidcClient.eventNames.token_renewed || - name === OidcClient.eventNames.loginCallbackAsync_end - ) { - return true; - } - if (name === OidcClient.eventNames.tryKeepExistingSessionAsync_end) { - return (data as { success?: boolean } | null)?.success === true; - } - return false; -}; +const isLoadingEndSignal = (name: string): boolean => + name === OidcClient.eventNames.token_acquired || + name === OidcClient.eventNames.token_renewed || + name === OidcClient.eventNames.loginCallbackAsync_end || + name === OidcClient.eventNames.tryKeepExistingSessionAsync_end || + name === OidcClient.eventNames.tryKeepExistingSessionAsync_error; export const OidcProvider: FC> = ({ children, @@ -148,7 +137,7 @@ export const OidcProvider: FC> = ({ const loading = false; const [event, setEvent] = useState(defaultEventState); - const [isAuthenticatedAndIdle, setIsAuthenticatedAndIdle] = useState(false); + const [isLoadingWatchdogActive, setIsLoadingWatchdogActive] = useState(true); const [currentConfigurationName, setConfigurationName] = useState(configurationName); useEffect(() => { @@ -167,8 +156,10 @@ export const OidcProvider: FC> = ({ useEffect(() => { const oidc = getOidc(configurationName); const newSubscriptionId = oidc.subscribeEvents((name, data) => { - if (isReadySignal(name, data)) { - setIsAuthenticatedAndIdle(true); + if (name === OidcClient.eventNames.loginAsync_begin) { + setIsLoadingWatchdogActive(true); + } else if (isLoadingEndSignal(name)) { + setIsLoadingWatchdogActive(false); } if ( name === OidcClient.eventNames.refreshTokensAsync_error || @@ -215,7 +206,7 @@ export const OidcProvider: FC> = ({ const previousOidc = getOidc(configurationName); previousOidc.removeEventSubscription(newSubscriptionId); setEvent(defaultEventState); - setIsAuthenticatedAndIdle(false); + setIsLoadingWatchdogActive(true); }; }, [configuration, configurationName]); @@ -224,7 +215,7 @@ export const OidcProvider: FC> = ({ if (timeoutMs <= 0) { return; } - if (isAuthenticatedAndIdle) { + if (!isLoadingWatchdogActive) { return; } const oidcInstance = getOidc(configurationName); @@ -241,7 +232,7 @@ export const OidcProvider: FC> = ({ }); }, timeoutMs); return () => clearTimeout(timeoutId); - }, [event.name, isAuthenticatedAndIdle, configurationName, configuration]); + }, [event.name, isLoadingWatchdogActive, configurationName, configuration]); const SessionLostComponent = sessionLostComponent; const AuthenticatingComponent = authenticatingComponent; From 79502145c05480ae9e69dc1b46f38c97ab7d0680 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2026 07:47:05 +0000 Subject: [PATCH 532/565] 7.28.2 --- packages/oidc-client-service-worker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index c04ab3e7c..4d7a62f5e 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.28.1", + "version": "7.28.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", From cdf423ef7bbeccc3127055d1b9c401a5bfb5fa81 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2026 07:48:04 +0000 Subject: [PATCH 533/565] [skip ci] Update to version 7.28.2 in package.json --- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index bbdbe9fc0..e25a1e12e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.28.1'; +export default '7.28.2'; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index bbdbe9fc0..e25a1e12e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.28.1'; +export default '7.28.2'; From ad25121d7164052890296eea064baaf267433c4d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2026 07:48:06 +0000 Subject: [PATCH 534/565] [skip ci] Generate changelog to version 7.28.2 --- CHANGELOG.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8824f3d1f..715c2574a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,21 @@ # Changelog -## 7.28.1 +## 7.28.2 +- [cdf423e](https://github.com/AxaFrance/oidc-client/commit/cdf423ef7bbeccc3127055d1b9c401a5bfb5fa81) - [skip ci] Update to version 7.28.2 in package.json, 2026-07-30 by *github-actions[bot]* + + +## v7.28.2 + +- [7950214](https://github.com/AxaFrance/oidc-client/commit/79502145c05480ae9e69dc1b46f38c97ab7d0680) - 7.28.2, 2026-07-30 by *github-actions[bot]* +- [bd1f087](https://github.com/AxaFrance/oidc-client/commit/bd1f087747d5342fa68dd84d3e4fb8ba38171768) - fix(oidc-react): Side effect on anonymous routes when reaching watchdog timeout (release) (#1722), 2026-07-30 by *Guillaume Chervet* +- [01bd60a](https://github.com/AxaFrance/oidc-client/commit/01bd60a962271ad9ba9b84a450bd5c9c3dbf3b92) - [skip ci] Generate changelog to version 7.28.1, 2026-07-28 by *github-actions[bot]* - [84bbd03](https://github.com/AxaFrance/oidc-client/commit/84bbd033197363e00aecfd92e78f3dd8f2806d22) - [skip ci] Update to version 7.28.1 in package.json, 2026-07-28 by *github-actions[bot]* +- [c144177](https://github.com/AxaFrance/oidc-client/commit/c14417787846f0bf6079c54c2baf61900353aeff) - 7.28.1, 2026-07-28 by *github-actions[bot]* ## v7.28.1 -- [c144177](https://github.com/AxaFrance/oidc-client/commit/c14417787846f0bf6079c54c2baf61900353aeff) - 7.28.1, 2026-07-28 by *github-actions[bot]* - [8de7e31](https://github.com/AxaFrance/oidc-client/commit/8de7e316cc14d3f420808e36fb390c4e99b3cc65) - fix(all): remove Math.random (release) (#1719), 2026-07-28 by *Guillaume Chervet* - [c1235d2](https://github.com/AxaFrance/oidc-client/commit/c1235d2ab53c11faa3275112e345130252ae87aa) - [skip ci] Generate changelog to version 7.28.0, 2026-07-28 by *github-actions[bot]* - [87ed38b](https://github.com/AxaFrance/oidc-client/commit/87ed38bb864af0d2db246e2c225facd7be7e4e8d) - [skip ci] Update to version 7.28.0 in package.json, 2026-07-28 by *github-actions[bot]* @@ -306,8 +314,3 @@ - [3f885fc](https://github.com/AxaFrance/oidc-client/commit/3f885fc158ded05ea37b9d7925bd801b63321231) - fix(oidc): remove console.log (release), 2024-10-04 by *Guillaume Chervet* -## v7.22.31 - -- [cc731c1](https://github.com/AxaFrance/oidc-client/commit/cc731c15f1d72ce4d21a7958ca15128ae1dcdd89) - fix(oidc): force sw update when new registration appears (release) (#1449), 2024-10-02 by *wermanoid* - - From 2d671ac95a13a0effc1472e3fac0d4a32250fc2e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Fri, 31 Jul 2026 23:32:35 +0200 Subject: [PATCH 535/565] feat(oidc-client): add typed-error (#1720) (release) * feat(oidc-client): add typed-error * fix: resolve lint formatting failure * fix(oidc-client): preserve state-error handling in silent renew * Fix type safety issues from code review feedback * fix: tighten renewTokensAsync return type to Tokens | null * revert: restore renewTokensAsync return type to Tokens | null | undefined --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- packages/oidc-client/README.md | 61 +++++- packages/oidc-client/src/events.ts | 3 + packages/oidc-client/src/fetch.spec.ts | 105 ++++++++++ packages/oidc-client/src/fetch.ts | 42 +++- packages/oidc-client/src/index.ts | 2 + packages/oidc-client/src/login.spec.ts | 34 +++ packages/oidc-client/src/login.ts | 101 +++++++-- packages/oidc-client/src/logout.spec.ts | 58 ++++++ packages/oidc-client/src/logout.ts | 53 ++++- packages/oidc-client/src/oidc.ts | 72 ++++++- packages/oidc-client/src/oidcClient.ts | 9 +- packages/oidc-client/src/oidcError.spec.ts | 105 ++++++++++ packages/oidc-client/src/oidcError.ts | 197 ++++++++++++++++++ .../oidc-client/src/oidcStateError.spec.ts | 18 ++ packages/oidc-client/src/oidcStateError.ts | 37 +++- packages/oidc-client/src/parseTokens.spec.ts | 3 +- packages/oidc-client/src/parseTokens.ts | 2 +- .../pushedAuthorizationRequestError.spec.ts | 4 + .../src/pushedAuthorizationRequestError.ts | 28 +-- packages/oidc-client/src/renewTokens.ts | 196 ++++++++++++++--- .../oidc-client/src/renewTokensError.spec.ts | 116 +++++++++++ packages/oidc-client/src/requests.spec.ts | 62 ++++++ packages/oidc-client/src/requests.ts | 53 ++++- packages/oidc-client/src/silentLogin.spec.ts | 158 ++++++++++++++ packages/oidc-client/src/silentLogin.ts | 45 +++- packages/oidc-client/src/user.ts | 102 ++++++--- packages/react-oidc/src/index.ts | 5 + 27 files changed, 1537 insertions(+), 134 deletions(-) create mode 100644 packages/oidc-client/src/fetch.spec.ts create mode 100644 packages/oidc-client/src/oidcError.spec.ts create mode 100644 packages/oidc-client/src/oidcError.ts create mode 100644 packages/oidc-client/src/renewTokensError.spec.ts create mode 100644 packages/oidc-client/src/silentLogin.spec.ts diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 194bc7763..7f464fe38 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -510,6 +510,57 @@ pnpm start ``` +## Strongly typed OIDC errors + +Known authentication, callback, refresh and network failures are exposed as +`OidcError`. Its stable `code` and `phase` fields can be inspected without +matching the human-readable `message`; existing messages remain unchanged. + +```ts +import { OidcError, OidcErrorCode } from '@axa-fr/oidc-client'; + +try { + await oidcClient.loginCallbackAsync(); +} catch (error) { + if (error instanceof OidcError && error.code === OidcErrorCode.LOGIN_REQUIRED) { + await oidcClient.loginAsync(); + } +} +``` + +Automatic renewal and the existing `renewTokensAsync` method remain +non-throwing for terminal OIDC failures. Use the strict variant when the caller +needs a rejected promise: + +```ts +try { + const tokens = await oidcClient.renewTokensOrThrowAsync(); +} catch (error) { + if (error instanceof OidcError) { + console.error(error.code, error.phase, error.retryable); + } +} +``` + +Failures from intentionally non-throwing flows are also provided to event +subscribers. Existing event payload fields are preserved; refresh payloads add +an `error` field, while user-info, logout and protected API failures use their +dedicated error events. + +```ts +oidcClient.subscribeEvents((name, data) => { + const error = data instanceof OidcError ? data : data?.error; + if (error instanceof OidcError) { + console.error(name, error.code, error.status); + } +}); +``` + +`retryable` means that retrying automatically, without user interaction, may +succeed. For example, network failures, HTTP 408/429/5xx responses and DPoP +nonce challenges are retryable; `login_required` requires an interactive +login and is therefore not. + ## Handling missing or corrupted login state When the OIDC state or nonce is missing from storage at callback time (for @@ -540,10 +591,12 @@ try { } ``` -`OidcStateError` is an `Error` subclass, exposes a stable `code` field, and -is also re-exported from `@axa-fr/react-oidc`. For silent renewal, a missing -nonce no longer throws a `TypeError` — it is reported through the existing -`SESSION_LOST` status so consumers can recover via the normal re-login flow. +`OidcStateError` is an `Error` subclass, exposes a stable `code` field, and is +also re-exported from `@axa-fr/react-oidc`. When errors cross the silent-renew +iframe boundary, prefer `isOidcStateError(error)` plus `error.code` over a +plain `instanceof` check. For silent renewal, a missing nonce no longer throws +a `TypeError` — it is reported through the existing `SESSION_LOST` status so +consumers can recover via the normal re-login flow. ## Service worker protocol diff --git a/packages/oidc-client/src/events.ts b/packages/oidc-client/src/events.ts index c66d4b4a1..bd93e3d17 100644 --- a/packages/oidc-client/src/events.ts +++ b/packages/oidc-client/src/events.ts @@ -12,6 +12,7 @@ export const eventNames = { loginCallbackAsync_error: 'loginCallbackAsync_error', loginCallbackAsync_navigated: 'loginCallbackAsync_navigated', loginCallbackAsync_navigation_error: 'loginCallbackAsync_navigation_error', + logoutAsync_error: 'logoutAsync_error', refreshTokensAsync_begin: 'refreshTokensAsync_begin', refreshTokensAsync: 'refreshTokensAsync', refreshTokensAsync_end: 'refreshTokensAsync_end', @@ -24,6 +25,8 @@ export const eventNames = { silentLoginAsync: 'silentLoginAsync', silentLoginAsync_end: 'silentLoginAsync_end', silentLoginAsync_error: 'silentLoginAsync_error', + userInfoAsync_error: 'userInfoAsync_error', + apiRequest_error: 'apiRequest_error', syncTokensAsync_begin: 'syncTokensAsync_begin', syncTokensAsync_lock_not_available: 'syncTokensAsync_lock_not_available', syncTokensAsync_end: 'syncTokensAsync_end', diff --git a/packages/oidc-client/src/fetch.spec.ts b/packages/oidc-client/src/fetch.spec.ts new file mode 100644 index 000000000..dd6c9c68b --- /dev/null +++ b/packages/oidc-client/src/fetch.spec.ts @@ -0,0 +1,105 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { fetchWithTokens } from './fetch'; +import { OidcError, OidcErrorCode } from './oidcError'; +import { Tokens } from './parseTokens'; +import { userInfoAsync } from './user'; + +const buildOidc = () => { + const tokens = { + accessToken: 'access-token', + expiresAt: Date.now() / 1000 + 3600, + issuedAt: Date.now() / 1000, + } as Tokens; + const storage = { + 'oidc.default': JSON.stringify({ tokens }), + } as unknown as Storage; + const events: Array<{ name: string; data: unknown }> = []; + const oidc: any = { + configuration: { + authority: 'https://issuer.example.com', + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid', + storage, + token_automatic_renew_mode: 'AutomaticBeforeTokenExpiration', + refresh_time_before_tokens_expiration_in_second: 30, + }, + configurationName: 'default', + initAsync: vi.fn(async () => ({ + userInfoEndpoint: 'https://issuer.example.com/userinfo', + })), + publishEvent: (name: string, data: unknown) => events.push({ name, data }), + renewTokensAsync: vi.fn(), + tokens, + userInfo: null, + }; + return { events, oidc }; +}; + +afterEach(() => { + vi.unstubAllGlobals(); +}); + +describe('fetchWithTokens typed errors', () => { + it('returns a DPoP challenge response unchanged and publishes an api_request error', async () => { + const { events, oidc } = buildOidc(); + const response = new Response('', { + status: 401, + headers: { + 'DPoP-Nonce': 'nonce', + 'WWW-Authenticate': 'DPoP error="use_dpop_nonce"', + }, + }); + const fetchMock = vi.fn(async () => response); + + const result = await fetchWithTokens( + fetchMock as any, + oidc, + )('https://api.example.com/resource'); + + expect(result).toBe(response); + expect(events.find(event => event.name === 'apiRequest_error')?.data).toMatchObject({ + code: OidcErrorCode.DPOP_NONCE_REQUIRED, + phase: 'api_request', + retryable: true, + status: 401, + }); + }); + + it('wraps a rejected fetch as NETWORK_ERROR', async () => { + const { events, oidc } = buildOidc(); + const cause = new TypeError('Failed to fetch'); + const fetchMock = vi.fn(async () => { + throw cause; + }); + + await expect( + fetchWithTokens(fetchMock as any, oidc)('https://api.example.com/resource'), + ).rejects.toMatchObject({ + code: OidcErrorCode.NETWORK_ERROR, + phase: 'api_request', + retryable: true, + cause, + }); + expect(events.find(event => event.name === 'apiRequest_error')?.data).toBeInstanceOf(OidcError); + }); +}); + +describe('userInfoAsync typed errors', () => { + it('keeps returning null on HTTP failure and publishes a userinfo error', async () => { + const { events, oidc } = buildOidc(); + vi.stubGlobal( + 'fetch', + vi.fn(async () => new Response('', { status: 503 })), + ); + + await expect(userInfoAsync(oidc)(true)).resolves.toBeNull(); + expect(events.find(event => event.name === 'userInfoAsync_error')?.data).toMatchObject({ + code: OidcErrorCode.REQUEST_FAILED, + phase: 'userinfo', + retryable: true, + status: 503, + }); + }); +}); diff --git a/packages/oidc-client/src/fetch.ts b/packages/oidc-client/src/fetch.ts index 5edd196fd..b8007e0b4 100644 --- a/packages/oidc-client/src/fetch.ts +++ b/packages/oidc-client/src/fetch.ts @@ -1,11 +1,18 @@ -import Oidc from './oidc'; +import { eventNames } from './events'; +import Oidc from './oidc'; +import { createNetworkError, OidcError, OidcErrorCode, OidcErrorPhase } from './oidcError'; import { getValidTokenAsync, OidcToken } from './parseTokens'; import { syncTokensInfoAsync } from './renewTokens'; import { Fetch } from './types'; // @ts-ignore export const fetchWithTokens = - (fetch: Fetch, oidc: Oidc | null, demonstrating_proof_of_possession: boolean = false): Fetch => + ( + fetch: Fetch, + oidc: Oidc, + demonstrating_proof_of_possession: boolean = false, + phase: OidcErrorPhase = 'api_request', + ): Fetch => async (...params: Parameters): Promise => { const [url, options, ...rest] = params; const optionTmp = options ? { ...options } : { method: 'GET' }; @@ -62,5 +69,34 @@ export const fetchWithTokens = } } const newOptions = { ...optionTmp, headers }; - return await fetch(url, newOptions, ...rest); + let response: Response; + try { + response = await fetch(url, newOptions, ...rest); + } catch (cause) { + const error = createNetworkError(cause, phase); + if (phase === 'api_request') { + oidc.publishEvent(eventNames.apiRequest_error, error); + } + throw error; + } + + if ( + !response.ok && + response.headers?.has('DPoP-Nonce') && + (response.status === 400 || + response.status === 401 || + response.headers.get('WWW-Authenticate')?.includes('use_dpop_nonce')) + ) { + const error = new OidcError(OidcErrorCode.DPOP_NONCE_REQUIRED, 'DPoP nonce required', { + phase, + retryable: true, + status: response.status, + oauthError: 'use_dpop_nonce', + }); + if (phase === 'api_request') { + oidc.publishEvent(eventNames.apiRequest_error, error); + } + } + + return response; }; diff --git a/packages/oidc-client/src/index.ts b/packages/oidc-client/src/index.ts index 2f5529c15..3ed93e966 100644 --- a/packages/oidc-client/src/index.ts +++ b/packages/oidc-client/src/index.ts @@ -5,6 +5,8 @@ export { OidcLocation } from './location.js'; export { getFetchDefault } from './oidc.js'; export type { OidcUserInfo } from './oidcClient.js'; export { OidcClient } from './oidcClient.js'; +export type { OidcErrorOptions, OidcErrorPhase } from './oidcError.js'; +export { isOidcError, OidcError, OidcErrorCode } from './oidcError.js'; export { isOidcStateError, OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; export type { Tokens } from './parseTokens.js'; export { TokenRenewMode } from './parseTokens.js'; diff --git a/packages/oidc-client/src/login.spec.ts b/packages/oidc-client/src/login.spec.ts index 3d60c6542..804243e56 100644 --- a/packages/oidc-client/src/login.spec.ts +++ b/packages/oidc-client/src/login.spec.ts @@ -5,6 +5,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import { ILOidcLocation } from './location'; import { loginCallbackAsync } from './login'; +import { OidcError, OidcErrorCode } from './oidcError'; import { OidcStateError, OidcStateErrorCode } from './oidcStateError'; const makeStorage = (): Storage => { @@ -149,3 +150,36 @@ describe('loginCallbackAsync — state/nonce guards (issue #1678)', () => { expect(caught).not.toBeInstanceOf(TypeError); }); }); + +describe('loginCallbackAsync — OAuth errors', () => { + it.each([ + ['login_required', OidcErrorCode.LOGIN_REQUIRED], + ['consent_required', OidcErrorCode.CONSENT_REQUIRED], + ['interaction_required', OidcErrorCode.INTERACTION_REQUIRED], + ['access_denied', OidcErrorCode.OAUTH_ERROR], + ] as const)('throws a typed %s callback error', async (oauthError, code) => { + const storage = makeStorage(); + const description = 'Authentication is required'; + const href = `http://localhost:4200/authentication/callback?error=${oauthError}&error_description=${encodeURIComponent(description)}`; + const { oidc, publishedEvents } = buildOidc({ href, storage }); + + let caught: unknown; + try { + await loginCallbackAsync(oidc)(); + } catch (error) { + caught = error; + } + + expect(caught).toBeInstanceOf(OidcError); + expect(caught).toMatchObject({ + code, + phase: 'callback', + oauthError, + oauthErrorDescription: description, + message: `Error from OIDC server: ${oauthError} - ${description}`, + }); + expect(publishedEvents.find(event => event.name === 'loginCallbackAsync_error')?.data).toBe( + caught, + ); + }); +}); diff --git a/packages/oidc-client/src/login.ts b/packages/oidc-client/src/login.ts index a74c66ea5..df43516d3 100644 --- a/packages/oidc-client/src/login.ts +++ b/packages/oidc-client/src/login.ts @@ -5,6 +5,15 @@ import { initWorkerAsync } from './initWorker.js'; import { generateJwkAsync, generateJwtDemonstratingProofOfPossessionAsync } from './jwt'; import { ILOidcLocation } from './location'; import Oidc from './oidc'; +import { + createNetworkError, + createOAuthError, + isNetworkErrorCause, + isOidcError, + isRetryableHttpStatus, + OidcError, + OidcErrorCode, +} from './oidcError.js'; import { OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; import { isTokensOidcValid } from './parseTokens.js'; import { @@ -123,8 +132,11 @@ export const defaultLoginAsync = pushedAuthorizationRequest, ); } catch (exception) { - publishEvent(eventNames.loginAsync_error, exception); - throw exception; + const error = isNetworkErrorCause(exception) + ? createNetworkError(exception, 'login') + : exception; + publishEvent(eventNames.loginAsync_error, error); + throw error; } }; return loginLocalAsync(); @@ -176,8 +188,11 @@ export const loginCallbackAsync = } if (queryParams.error || queryParams.error_description) { - throw new Error( + throw createOAuthError( + queryParams.error, + queryParams.error_description, `Error from OIDC server: ${queryParams.error} - ${queryParams.error_description}`, + isSilentSignin ? 'refresh' : 'callback', ); } @@ -195,12 +210,14 @@ export const loginCallbackAsync = throw new OidcStateError( OidcStateErrorCode.STATE_MISSING, 'OIDC state is missing from storage. The login state may have been cleared between the authorization redirect and the callback (e.g., private browsing, storage cleared, or browser eviction).', + isSilentSignin ? 'refresh' : 'callback', ); } if (queryParams.state !== state) { throw new OidcStateError( OidcStateErrorCode.STATE_MISMATCH, `OIDC state does not match the stored one (expected: ${state}, received: ${queryParams.state}).`, + isSilentSignin ? 'refresh' : 'callback', ); } } @@ -208,6 +225,7 @@ export const loginCallbackAsync = throw new OidcStateError( OidcStateErrorCode.NONCE_MISSING, 'OIDC nonce is missing from storage. The login state may have been cleared between the authorization redirect and the callback (e.g., private browsing, storage cleared, or browser eviction).', + isSilentSignin ? 'refresh' : 'callback', ); } @@ -235,11 +253,12 @@ export const loginCallbackAsync = const url = oidcServerConfiguration.tokenEndpoint; const headersExtras = {}; + let demonstratingProofOfPossessionJwk; if (configuration.demonstrating_proof_of_possession) { if (serviceWorker) { headersExtras['DPoP'] = `DPOP_SECURED_BY_OIDC_SERVICE_WORKER_${oidc.configurationName}`; } else { - const jwk = await generateJwkAsync(window)( + demonstratingProofOfPossessionJwk = await generateJwkAsync(window)( configuration.demonstrating_proof_of_possession_configuration.generateKeyAlgorithm, ); const session = initSession( @@ -247,23 +266,65 @@ export const loginCallbackAsync = configuration.storage, configuration.login_state_storage ?? configuration.storage, ); - await session.setDemonstratingProofOfPossessionJwkAsync(jwk); + await session.setDemonstratingProofOfPossessionJwkAsync( + demonstratingProofOfPossessionJwk, + ); headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(window)( configuration.demonstrating_proof_of_possession_configuration, - )(jwk, 'POST', url); + )(demonstratingProofOfPossessionJwk, 'POST', url); } } - const tokenResponse = await performFirstTokenRequestAsync(storage)( + let tokenResponse = await performFirstTokenRequestAsync(storage)( url, { ...data, ...extras }, headersExtras, oidc.configuration.token_renew_mode, tokenRequestTimeout, + configuration.demonstrating_proof_of_possession, ); + if ( + !tokenResponse.success && + tokenResponse.oauthError === 'use_dpop_nonce' && + tokenResponse.demonstratingProofOfPossessionNonce && + configuration.demonstrating_proof_of_possession + ) { + await storage.setDemonstratingProofOfPossessionNonce( + tokenResponse.demonstratingProofOfPossessionNonce, + ); + if (!serviceWorker) { + headersExtras['DPoP'] = await generateJwtDemonstratingProofOfPossessionAsync(window)( + configuration.demonstrating_proof_of_possession_configuration, + )(demonstratingProofOfPossessionJwk, 'POST', url, { + nonce: tokenResponse.demonstratingProofOfPossessionNonce, + }); + } + tokenResponse = await performFirstTokenRequestAsync(storage)( + url, + { ...data, ...extras }, + headersExtras, + oidc.configuration.token_renew_mode, + tokenRequestTimeout, + ); + } else if (!tokenResponse.success && configuration.demonstrating_proof_of_possession) { + await Promise.all([storage.setCodeVerifierAsync(null), storage.setStateAsync(null)]); + } + if (!tokenResponse.success) { - throw new Error('Token request failed'); + const code = + tokenResponse.oauthError === 'use_dpop_nonce' + ? OidcErrorCode.DPOP_NONCE_REQUIRED + : OidcErrorCode.TOKEN_REQUEST_FAILED; + throw new OidcError(code, 'Token request failed', { + phase: isSilentSignin ? 'refresh' : 'callback', + retryable: + code === OidcErrorCode.DPOP_NONCE_REQUIRED || + isRetryableHttpStatus(tokenResponse.status), + status: tokenResponse.status, + oauthError: tokenResponse.oauthError, + oauthErrorDescription: tokenResponse.oauthErrorDescription, + }); } let loginParams; @@ -273,7 +334,10 @@ export const loginCallbackAsync = // @ts-ignore if (tokenResponse.data.state !== extras.state) { - throw new Error('state is not valid'); + throw new OidcError(OidcErrorCode.INVALID_STATE, 'state is not valid', { + phase: isSilentSignin ? 'refresh' : 'callback', + retryable: false, + }); } const { isValid, reason } = isTokensOidcValid( formattedTokens, @@ -281,7 +345,14 @@ export const loginCallbackAsync = oidcServerConfiguration, ); if (!isValid) { - throw new Error(`Tokens are not OpenID valid, reason: ${reason}`); + const message = `Tokens are not OpenID valid, reason: ${reason}`; + if (reason.startsWith('Nonce does not match')) { + throw new OidcError(OidcErrorCode.INVALID_NONCE, message, { + phase: isSilentSignin ? 'refresh' : 'callback', + retryable: false, + }); + } + throw new Error(message); } if (serviceWorker) { @@ -337,8 +408,12 @@ export const loginCallbackAsync = extras: loginParams.extras, }; } catch (exception) { - console.error(exception); - oidc.publishEvent(eventNames.loginCallbackAsync_error, exception); - throw exception; + const error = + !isOidcError(exception) && isNetworkErrorCause(exception) + ? createNetworkError(exception, isSilentSignin ? 'refresh' : 'callback') + : exception; + console.error(error); + oidc.publishEvent(eventNames.loginCallbackAsync_error, error); + throw error; } }; diff --git a/packages/oidc-client/src/logout.spec.ts b/packages/oidc-client/src/logout.spec.ts index c12ce0ee1..b7fbcfa90 100644 --- a/packages/oidc-client/src/logout.spec.ts +++ b/packages/oidc-client/src/logout.spec.ts @@ -5,6 +5,7 @@ import { describe, expect, it, vi } from 'vitest'; import { eventNames } from './events'; import { ILOidcLocation } from './location'; import { clearSessionAsync, logoutAsync } from './logout'; +import { OidcErrorCode } from './oidcError'; describe('Logout test suite', () => { const expectedFinalUrl = @@ -296,6 +297,63 @@ describe('Logout test suite', () => { expect(oidc.isLoggingOut).toBe(false); }); + it('keeps revocation best-effort and publishes a typed logout error', async () => { + const events: Array<{ name: string; data: any }> = []; + const oidc: any = { + configuration: { + authority: 'http://api', + client_id: 'client', + logout_tokens_to_invalidate: ['access_token'], + }, + tokens: { + accessToken: 'access-token', + idToken: 'id-token', + idTokenPayload: { sub: 'subject' }, + }, + isLoggingOut: false, + initAsync: vi.fn(async () => ({ + revocationEndpoint: 'http://api/revoke', + })), + destroyAsync: vi.fn(async () => { + oidc.tokens = null; + }), + logoutSameTabAsync: vi.fn(), + publishEvent: (name: string, data: unknown) => events.push({ name, data }), + }; + const location: ILOidcLocation = { + getCurrentHref: () => '', + getOrigin: () => 'http://client', + getPath: () => '/', + open: vi.fn(), + reload: vi.fn(), + }; + const fetchMock = vi.fn(async () => { + return new Response(JSON.stringify({ error: 'temporarily_unavailable' }), { + status: 503, + headers: { 'Content-Type': 'application/json' }, + }); + }); + + await logoutAsync( + oidc, + { default: oidc }, + fetchMock, + console, + location, + )(null, { + 'no_reload:oidc': 'true', + }); + + expect(events.find(event => event.name === eventNames.logoutAsync_error)?.data).toMatchObject({ + code: OidcErrorCode.REQUEST_FAILED, + phase: 'logout', + retryable: true, + status: 503, + oauthError: 'temporarily_unavailable', + }); + expect(oidc.isLoggingOut).toBe(false); + }); + describe('clearSessionAsync', () => { it('clears the local session and emits logout_from_same_tab without contacting the IdP', async () => { const events: { name: string; data: unknown }[] = []; diff --git a/packages/oidc-client/src/logout.ts b/packages/oidc-client/src/logout.ts index 3f5764d24..8c9cf64ab 100644 --- a/packages/oidc-client/src/logout.ts +++ b/packages/oidc-client/src/logout.ts @@ -2,6 +2,14 @@ import { eventNames } from './events'; import { initSession } from './initSession.js'; import { initWorkerAsync } from './initWorker.js'; import { ILOidcLocation } from './location'; +import { + createNetworkError, + isNetworkErrorCause, + isOidcError, + isRetryableHttpStatus, + OidcError, + OidcErrorCode, +} from './oidcError.js'; import { performRevocationRequestAsync, TOKEN_TYPE } from './requests.js'; import timer from './timer.js'; import { StringMap } from './types.js'; @@ -115,10 +123,17 @@ export const logoutAsync = (oidc, oidcDatabase, fetch, console, oicLocation: ILOidcLocation) => async (callbackPathOrUrl: string | null | undefined = undefined, extras: StringMap = null) => { const configuration = oidc.configuration; - const oidcServerConfiguration = await oidc.initAsync( - configuration.authority, - configuration.authority_configuration, - ); + let oidcServerConfiguration; + try { + oidcServerConfiguration = await oidc.initAsync( + configuration.authority, + configuration.authority_configuration, + ); + } catch (cause) { + const error = isNetworkErrorCause(cause) ? createNetworkError(cause, 'logout') : cause; + oidc.publishEvent(eventNames.logoutAsync_error, error); + throw error; + } if (callbackPathOrUrl && typeof callbackPathOrUrl !== 'string') { callbackPathOrUrl = undefined; console.warn('callbackPathOrUrl path is not a string'); @@ -187,14 +202,33 @@ export const logoutAsync = // Revocation must be awaited *before* navigation, so a cancelled // navigation can never leave valid tokens behind both in storage // and on the authorization server. - await Promise.all(promises); + const results = await Promise.all(promises); + for (const result of results) { + if (!result.success) { + oidc.publishEvent( + eventNames.logoutAsync_error, + new OidcError(OidcErrorCode.REQUEST_FAILED, 'Token revocation request failed', { + phase: 'logout', + retryable: isRetryableHttpStatus(result.status), + status: result.status, + oauthError: result.oauthError, + oauthErrorDescription: result.oauthErrorDescription, + }), + ); + } + } } } } catch (exception) { + const error = + !isOidcError(exception) && isNetworkErrorCause(exception) + ? createNetworkError(exception, 'logout') + : exception; + oidc.publishEvent(eventNames.logoutAsync_error, error); console.warn( 'logoutAsync: error when revoking tokens, if the error persist, you ay configure property logout_tokens_to_invalidate from configuration to avoid this error', ); - console.warn(exception); + console.warn(error); } const oidcExtras = extractExtras(extras, ':oidc'); @@ -236,6 +270,11 @@ export const logoutAsync = // If anything went wrong, reset the flag so the app is not stuck in a // "logging out forever" state. oidc.isLoggingOut = false; - throw exception; + const error = + !isOidcError(exception) && isNetworkErrorCause(exception) + ? createNetworkError(exception, 'logout') + : exception; + oidc.publishEvent(eventNames.logoutAsync_error, error); + throw error; } }; diff --git a/packages/oidc-client/src/oidc.ts b/packages/oidc-client/src/oidc.ts index c962959e3..f1658731c 100644 --- a/packages/oidc-client/src/oidc.ts +++ b/packages/oidc-client/src/oidc.ts @@ -13,8 +13,19 @@ import { tryKeepSessionAsync } from './keepSession'; import { ILOidcLocation, OidcLocation } from './location'; import { defaultLoginAsync, loginCallbackAsync } from './login.js'; import { clearSessionAsync, destroyAsync, logoutAsync } from './logout.js'; +import { + createOAuthError, + isOidcError, + OidcError, + OidcErrorCode, + serializeOidcError, +} from './oidcError.js'; import { TokenRenewMode, Tokens } from './parseTokens.js'; -import { autoRenewTokens, renewTokensAndStartTimerAsync } from './renewTokens.js'; +import { + autoRenewTokens, + renewTokensAndStartTimerResultAsync, + RenewTokensResult, +} from './renewTokens.js'; import { fetchFromIssuer } from './requests.js'; import { getParseQueryStringFromLocation } from './route-utils.js'; import defaultSilentLoginAsync from './silentLogin.js'; @@ -170,6 +181,7 @@ export class Oidc { this.destroyAsync.bind(this); this.logoutAsync.bind(this); this.renewTokensAsync.bind(this); + this.renewTokensOrThrowAsync.bind(this); this.initAsync(this.configuration.authority, this.configuration.authority_configuration); } @@ -248,13 +260,26 @@ Please checkout that you are using OIDC hook inside a = null; + renewTokensPromise: Promise = null; - async renewTokensAsync(extras: StringMap = null, scope: string = null) { + private async renewTokensResultAsync( + extras: StringMap = null, + scope: string = null, + ): Promise { if (this.renewTokensPromise !== null) { return this.renewTokensPromise; } if (!this.timeoutId) { - return; + return null; } timer.clearTimeout(this.timeoutId); - // @ts-ignore - this.renewTokensPromise = renewTokensAndStartTimerAsync(this, true, extras, scope); - return this.renewTokensPromise.finally(() => { - this.renewTokensPromise = null; + const promise = renewTokensAndStartTimerResultAsync(this, true, extras, scope); + this.renewTokensPromise = promise; + return promise.finally(() => { + if (this.renewTokensPromise === promise) { + this.renewTokensPromise = null; + } }); } + async renewTokensAsync( + extras: StringMap = null, + scope: string = null, + ): Promise { + const result = await this.renewTokensResultAsync(extras, scope); + return result?.tokens; + } + + async renewTokensOrThrowAsync(extras: StringMap = null, scope: string = null): Promise { + const result = await this.renewTokensResultAsync(extras, scope); + if (result?.error) { + throw result.error; + } + if (!result?.tokens) { + throw new OidcError(OidcErrorCode.TOKEN_REQUEST_FAILED, 'Token renewal failed', { + phase: 'refresh', + retryable: false, + }); + } + return result.tokens; + } + async destroyAsync(status) { return await destroyAsync(this)(status); } diff --git a/packages/oidc-client/src/oidcClient.ts b/packages/oidc-client/src/oidcClient.ts index fce1fa264..4f0bc306a 100644 --- a/packages/oidc-client/src/oidcClient.ts +++ b/packages/oidc-client/src/oidcClient.ts @@ -114,10 +114,17 @@ export class OidcClient { return this._oidc.silentLoginCallbackAsync(); } - renewTokensAsync(extras: StringMap = null, scope: string = null): Promise { + renewTokensAsync( + extras: StringMap = null, + scope: string = null, + ): Promise { return this._oidc.renewTokensAsync(extras, scope); } + renewTokensOrThrowAsync(extras: StringMap = null, scope: string = null): Promise { + return this._oidc.renewTokensOrThrowAsync(extras, scope); + } + loginCallbackAsync(): Promise { return this._oidc.loginCallbackWithAutoTokensRenewAsync(); } diff --git a/packages/oidc-client/src/oidcError.spec.ts b/packages/oidc-client/src/oidcError.spec.ts new file mode 100644 index 000000000..69d55121d --- /dev/null +++ b/packages/oidc-client/src/oidcError.spec.ts @@ -0,0 +1,105 @@ +import { describe, expect, it } from 'vitest'; + +import { + createNetworkError, + createOAuthError, + deserializeOidcError, + isOidcError, + OidcError, + OidcErrorCode, + serializeOidcError, +} from './oidcError'; + +describe('OidcError', () => { + it('preserves all public fields and the Error prototype chain', () => { + const cause = new TypeError('fetch failed'); + const error = new OidcError(OidcErrorCode.TOKEN_REQUEST_FAILED, 'Token request failed', { + phase: 'refresh', + retryable: true, + status: 503, + oauthError: 'temporarily_unavailable', + oauthErrorDescription: 'Try again later', + cause, + }); + + expect(error).toBeInstanceOf(Error); + expect(error).toBeInstanceOf(OidcError); + expect(error.name).toBe('OidcError'); + expect(error.message).toBe('Token request failed'); + expect(error).toMatchObject({ + code: OidcErrorCode.TOKEN_REQUEST_FAILED, + phase: 'refresh', + retryable: true, + status: 503, + oauthError: 'temporarily_unavailable', + oauthErrorDescription: 'Try again later', + cause, + }); + expect(isOidcError(error)).toBe(true); + expect(isOidcError(new Error('other'))).toBe(false); + }); + + it.each([ + ['login_required', OidcErrorCode.LOGIN_REQUIRED, false], + ['consent_required', OidcErrorCode.CONSENT_REQUIRED, false], + ['interaction_required', OidcErrorCode.INTERACTION_REQUIRED, false], + ['server_error', OidcErrorCode.OAUTH_ERROR, true], + ['temporarily_unavailable', OidcErrorCode.OAUTH_ERROR, true], + ['access_denied', OidcErrorCode.OAUTH_ERROR, false], + ] as const)('maps OAuth error %s to %s', (oauthError, code, retryable) => { + const error = createOAuthError( + oauthError, + 'description', + `Error from OIDC server: ${oauthError} - description`, + 'callback', + ); + + expect(error).toMatchObject({ + code, + phase: 'callback', + retryable, + oauthError, + oauthErrorDescription: 'description', + }); + }); + + it('wraps a network failure without changing its message', () => { + const cause = new Error('Failed to fetch'); + const error = createNetworkError(cause, 'userinfo'); + + expect(error).toMatchObject({ + code: OidcErrorCode.NETWORK_ERROR, + message: 'Failed to fetch', + phase: 'userinfo', + retryable: true, + cause, + }); + }); + + it('serializes and reconstructs an OidcError without stack or cause', () => { + const original = new OidcError(OidcErrorCode.LOGIN_REQUIRED, 'login required', { + phase: 'refresh', + retryable: false, + oauthError: 'login_required', + oauthErrorDescription: 'Sign in again', + cause: new Error('not cloneable'), + }); + + const serialized = serializeOidcError(original); + expect(serialized).not.toHaveProperty('stack'); + expect(serialized).not.toHaveProperty('cause'); + + const reconstructed = deserializeOidcError(serialized); + expect(reconstructed).toBeInstanceOf(OidcError); + expect(reconstructed).toMatchObject({ + name: 'OidcError', + message: 'login required', + code: OidcErrorCode.LOGIN_REQUIRED, + phase: 'refresh', + retryable: false, + oauthError: 'login_required', + oauthErrorDescription: 'Sign in again', + }); + expect(reconstructed?.cause).toBeUndefined(); + }); +}); diff --git a/packages/oidc-client/src/oidcError.ts b/packages/oidc-client/src/oidcError.ts new file mode 100644 index 000000000..d0115d560 --- /dev/null +++ b/packages/oidc-client/src/oidcError.ts @@ -0,0 +1,197 @@ +export const OidcErrorCode = { + LOGIN_REQUIRED: 'LOGIN_REQUIRED', + CONSENT_REQUIRED: 'CONSENT_REQUIRED', + INTERACTION_REQUIRED: 'INTERACTION_REQUIRED', + OAUTH_ERROR: 'OAUTH_ERROR', + TOKEN_REQUEST_FAILED: 'TOKEN_REQUEST_FAILED', + SILENT_LOGIN_TIMEOUT: 'SILENT_LOGIN_TIMEOUT', + INVALID_STATE: 'INVALID_STATE', + INVALID_NONCE: 'INVALID_NONCE', + DPOP_NONCE_REQUIRED: 'DPOP_NONCE_REQUIRED', + NETWORK_ERROR: 'NETWORK_ERROR', + // Backwards-compatible codes exposed by the existing specialised errors. + STATE_MISSING: 'STATE_MISSING', + STATE_MISMATCH: 'STATE_MISMATCH', + NONCE_MISSING: 'NONCE_MISSING', + ENDPOINT_UNAVAILABLE: 'ENDPOINT_UNAVAILABLE', + REQUEST_FAILED: 'REQUEST_FAILED', + INVALID_RESPONSE: 'INVALID_RESPONSE', +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type OidcErrorCode = (typeof OidcErrorCode)[keyof typeof OidcErrorCode]; + +export type OidcErrorPhase = + 'login' | 'callback' | 'refresh' | 'logout' | 'userinfo' | 'api_request'; + +export type OidcErrorOptions = { + phase: OidcErrorPhase; + retryable: boolean; + oauthError?: string; + oauthErrorDescription?: string; + status?: number; + cause?: unknown; +}; + +export type SerializedOidcError = { + name: string; + message: string; + code: OidcErrorCode; + phase: OidcErrorPhase; + retryable: boolean; + oauthError?: string; + oauthErrorDescription?: string; + status?: number; +}; + +const oidcErrorCodes = new Set(Object.values(OidcErrorCode)); +const oidcErrorPhases = new Set([ + 'login', + 'callback', + 'refresh', + 'logout', + 'userinfo', + 'api_request', +]); + +export class OidcError extends Error { + readonly code: OidcErrorCode; + readonly phase: OidcErrorPhase; + readonly oauthError?: string; + readonly oauthErrorDescription?: string; + readonly retryable: boolean; + readonly status?: number; + readonly cause?: unknown; + + constructor(code: OidcErrorCode, message: string, options: OidcErrorOptions) { + super(message); + this.name = 'OidcError'; + this.code = code; + this.phase = options.phase; + this.oauthError = options.oauthError; + this.oauthErrorDescription = options.oauthErrorDescription; + this.retryable = options.retryable; + this.status = options.status; + this.cause = options.cause; + + Object.setPrototypeOf(this, new.target.prototype); + } +} + +export const isOidcError = (value: unknown): value is OidcError => value instanceof OidcError; + +export const isRetryableHttpStatus = (status?: number): boolean => + status === 408 || status === 429 || (status !== undefined && status >= 500); + +export const oidcErrorCodeFromOAuthError = (oauthError?: string): OidcErrorCode => { + switch (oauthError) { + case 'login_required': + return OidcErrorCode.LOGIN_REQUIRED; + case 'consent_required': + return OidcErrorCode.CONSENT_REQUIRED; + case 'interaction_required': + return OidcErrorCode.INTERACTION_REQUIRED; + case 'use_dpop_nonce': + return OidcErrorCode.DPOP_NONCE_REQUIRED; + default: + return OidcErrorCode.OAUTH_ERROR; + } +}; + +export const createOAuthError = ( + oauthError: string | undefined, + oauthErrorDescription: string | undefined, + message: string, + phase: OidcErrorPhase, + status?: number, +): OidcError => { + const code = oidcErrorCodeFromOAuthError(oauthError); + const requiresInteraction = + code === OidcErrorCode.LOGIN_REQUIRED || + code === OidcErrorCode.CONSENT_REQUIRED || + code === OidcErrorCode.INTERACTION_REQUIRED; + const retryable = + !requiresInteraction && + (code === OidcErrorCode.DPOP_NONCE_REQUIRED || + oauthError === 'server_error' || + oauthError === 'temporarily_unavailable' || + isRetryableHttpStatus(status)); + return new OidcError(code, message, { + phase, + retryable, + oauthError, + oauthErrorDescription, + status, + }); +}; + +export const createNetworkError = ( + cause: unknown, + phase: OidcErrorPhase, + fallbackMessage = 'Network request failed', +): OidcError => { + const message = + cause instanceof Error && typeof cause.message === 'string' && cause.message + ? cause.message + : fallbackMessage; + return new OidcError(OidcErrorCode.NETWORK_ERROR, message, { + phase, + retryable: true, + cause, + }); +}; + +export const isNetworkErrorCause = (value: unknown): boolean => { + if (!(value instanceof Error)) { + return false; + } + return ( + value.name === 'AbortError' || + value.name === 'NetworkError' || + value.message === 'Network request failed' || + value.message === 'Failed to fetch' || + value.message === 'fetch failed' + ); +}; + +export const serializeOidcError = (error: OidcError): SerializedOidcError => ({ + name: error.name, + message: error.message, + code: error.code, + phase: error.phase, + retryable: error.retryable, + oauthError: error.oauthError, + oauthErrorDescription: error.oauthErrorDescription, + status: error.status, +}); + +export const deserializeOidcError = (value: unknown): OidcError | null => { + if (!value || typeof value !== 'object') { + return null; + } + const serialized = value as Partial; + if ( + typeof serialized.message !== 'string' || + typeof serialized.code !== 'string' || + !oidcErrorCodes.has(serialized.code) || + typeof serialized.phase !== 'string' || + !oidcErrorPhases.has(serialized.phase as OidcErrorPhase) || + typeof serialized.retryable !== 'boolean' + ) { + return null; + } + const error = new OidcError(serialized.code as OidcErrorCode, serialized.message, { + phase: serialized.phase as OidcErrorPhase, + retryable: serialized.retryable, + oauthError: typeof serialized.oauthError === 'string' ? serialized.oauthError : undefined, + oauthErrorDescription: + typeof serialized.oauthErrorDescription === 'string' + ? serialized.oauthErrorDescription + : undefined, + status: typeof serialized.status === 'number' ? serialized.status : undefined, + }); + if (typeof serialized.name === 'string' && serialized.name) { + error.name = serialized.name; + } + return error; +}; diff --git a/packages/oidc-client/src/oidcStateError.spec.ts b/packages/oidc-client/src/oidcStateError.spec.ts index 53742875d..22379bdbc 100644 --- a/packages/oidc-client/src/oidcStateError.spec.ts +++ b/packages/oidc-client/src/oidcStateError.spec.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from 'vitest'; +import { deserializeOidcError, OidcError, serializeOidcError } from './oidcError'; import { isOidcStateError, OidcStateError, OidcStateErrorCode } from './oidcStateError'; describe('OidcStateError', () => { @@ -12,6 +13,7 @@ describe('OidcStateError', () => { it('is an Error subclass with name "OidcStateError"', () => { const err = new OidcStateError(OidcStateErrorCode.STATE_MISSING, 'missing'); expect(err).toBeInstanceOf(Error); + expect(err).toBeInstanceOf(OidcError); expect(err).toBeInstanceOf(OidcStateError); expect(err.name).toBe('OidcStateError'); }); @@ -20,6 +22,8 @@ describe('OidcStateError', () => { const err = new OidcStateError(OidcStateErrorCode.STATE_MISMATCH, 'mismatch happened'); expect(err.code).toBe('STATE_MISMATCH'); expect(err.message).toBe('mismatch happened'); + expect(err.phase).toBe('callback'); + expect(err.retryable).toBe(false); }); it('is detectable via isOidcStateError', () => { @@ -30,4 +34,18 @@ describe('OidcStateError', () => { expect(isOidcStateError(undefined)).toBe(false); expect(isOidcStateError({ code: 'STATE_MISSING' })).toBe(false); }); + + it('stays detectable after serialization and deserialization', () => { + const err = new OidcStateError(OidcStateErrorCode.NONCE_MISSING, 'nonce missing', 'refresh'); + const reconstructed = deserializeOidcError(serializeOidcError(err)); + + expect(reconstructed).toBeInstanceOf(OidcError); + expect(reconstructed).not.toBeInstanceOf(OidcStateError); + expect(isOidcStateError(reconstructed)).toBe(true); + expect(reconstructed).toMatchObject({ + code: OidcStateErrorCode.NONCE_MISSING, + phase: 'refresh', + name: 'OidcStateError', + }); + }); }); diff --git a/packages/oidc-client/src/oidcStateError.ts b/packages/oidc-client/src/oidcStateError.ts index 05df674b4..98840f3db 100644 --- a/packages/oidc-client/src/oidcStateError.ts +++ b/packages/oidc-client/src/oidcStateError.ts @@ -1,3 +1,10 @@ +import { + isOidcError, + OidcError, + OidcErrorCode as BaseOidcErrorCode, + OidcErrorPhase, +} from './oidcError.js'; + /** * Stable, machine-readable codes for OIDC state / nonce failures occurring * between the authorization redirect and the callback handling. @@ -21,20 +28,32 @@ export const OidcStateErrorCode = { // eslint-disable-next-line @typescript-eslint/no-redeclare export type OidcStateErrorCode = (typeof OidcStateErrorCode)[keyof typeof OidcStateErrorCode]; +const oidcStateErrorCodes = new Set(Object.values(OidcStateErrorCode)); + +export const isOidcStateErrorCode = (value: unknown): value is OidcStateErrorCode => + typeof value === 'string' && oidcStateErrorCodes.has(value); + /** * Typed error thrown when the OIDC login state or nonce is missing, * corrupted, or does not match the value returned by the authorization server. * - * Consumers can use `instanceof OidcStateError` and inspect `code` instead of - * relying on the (unstable) error message text. + * Consumers should prefer {@link isOidcStateError} and inspect `code` instead + * of relying on the (unstable) error message text, especially when errors may + * cross a postMessage boundary during silent renew. */ -export class OidcStateError extends Error { - readonly code: OidcStateErrorCode; +export class OidcStateError extends OidcError { + declare readonly code: OidcStateErrorCode; - constructor(code: OidcStateErrorCode, message: string) { - super(message); + constructor( + code: OidcStateErrorCode, + message: string, + phase: Extract = 'callback', + ) { + super(code as BaseOidcErrorCode, message, { + phase, + retryable: false, + }); this.name = 'OidcStateError'; - this.code = code; // Keep prototype chain intact when transpiled to ES5. Object.setPrototypeOf(this, OidcStateError.prototype); @@ -46,5 +65,7 @@ export class OidcStateError extends Error { * specifically to state/nonce failures. */ export const isOidcStateError = (value: unknown): value is OidcStateError => { - return value instanceof OidcStateError; + return ( + value instanceof OidcStateError || (isOidcError(value) && isOidcStateErrorCode(value.code)) + ); }; diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index be8b46f14..3e71b8b42 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -36,8 +36,9 @@ describe('ParseTokens test Suite', () => { refresh_time_before_tokens_expiration_in_second: 0, }, syncTokensInfoAsync: async () => synchroniseTokensStatus.TOKENS_VALID, - renewTokensAsync: async (_extras: StringMap) => { + renewTokensAsync: async (_extras: StringMap): Promise => { await sleepAsync({ milliseconds: 10 }); + return undefined; }, }; const result = await getValidTokenAsync(oidc, 1, 1); diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index ad1eb374e..ad1bfa802 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -200,7 +200,7 @@ export interface OidcToken { token_automatic_renew_mode?: TokenAutomaticRenewMode; refresh_time_before_tokens_expiration_in_second?: number; }; - renewTokensAsync: (extras: StringMap) => Promise; + renewTokensAsync: (extras: StringMap) => Promise; } export const getValidTokenAsync = async ( diff --git a/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts b/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts index 851bf101a..78b197d94 100644 --- a/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts +++ b/packages/oidc-client/src/pushedAuthorizationRequestError.spec.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from 'vitest'; +import { OidcError } from './oidcError'; import { isPushedAuthorizationRequestError, PushedAuthorizationRequestError, @@ -27,12 +28,15 @@ describe('PushedAuthorizationRequestError', () => { ); expect(error).toBeInstanceOf(Error); + expect(error).toBeInstanceOf(OidcError); expect(error.name).toBe('PushedAuthorizationRequestError'); expect(error.code).toBe('REQUEST_FAILED'); expect(error.status).toBe(400); expect(error.oauthError).toBe('invalid_request'); expect(error.oauthErrorDescription).toBe('Invalid redirect URI'); expect(error.cause).toBe(cause); + expect(error.phase).toBe('login'); + expect(error.retryable).toBe(true); expect(isPushedAuthorizationRequestError(error)).toBe(true); expect(isPushedAuthorizationRequestError(new Error('other'))).toBe(false); }); diff --git a/packages/oidc-client/src/pushedAuthorizationRequestError.ts b/packages/oidc-client/src/pushedAuthorizationRequestError.ts index 7e8d77eef..ba8b09955 100644 --- a/packages/oidc-client/src/pushedAuthorizationRequestError.ts +++ b/packages/oidc-client/src/pushedAuthorizationRequestError.ts @@ -1,3 +1,9 @@ +import { + isRetryableHttpStatus, + OidcError, + OidcErrorCode as BaseOidcErrorCode, +} from './oidcError.js'; + export const PushedAuthorizationRequestErrorCode = { ENDPOINT_UNAVAILABLE: 'ENDPOINT_UNAVAILABLE', REQUEST_FAILED: 'REQUEST_FAILED', @@ -15,25 +21,23 @@ type PushedAuthorizationRequestErrorOptions = { cause?: unknown; }; -export class PushedAuthorizationRequestError extends Error { - readonly code: PushedAuthorizationRequestErrorCode; - readonly status?: number; - readonly oauthError?: string; - readonly oauthErrorDescription?: string; - readonly cause?: unknown; +export class PushedAuthorizationRequestError extends OidcError { + declare readonly code: PushedAuthorizationRequestErrorCode; constructor( code: PushedAuthorizationRequestErrorCode, message: string, options: PushedAuthorizationRequestErrorOptions = {}, ) { - super(message); + super(code as BaseOidcErrorCode, message, { + phase: 'login', + retryable: options.cause !== undefined || isRetryableHttpStatus(options.status), + status: options.status, + oauthError: options.oauthError, + oauthErrorDescription: options.oauthErrorDescription, + cause: options.cause, + }); this.name = 'PushedAuthorizationRequestError'; - this.code = code; - this.status = options.status; - this.oauthError = options.oauthError; - this.oauthErrorDescription = options.oauthErrorDescription; - this.cause = options.cause; Object.setPrototypeOf(this, PushedAuthorizationRequestError.prototype); } diff --git a/packages/oidc-client/src/renewTokens.ts b/packages/oidc-client/src/renewTokens.ts index 1ed314501..1b887095e 100644 --- a/packages/oidc-client/src/renewTokens.ts +++ b/packages/oidc-client/src/renewTokens.ts @@ -2,12 +2,49 @@ import { eventNames } from './events'; import { initSession } from './initSession.js'; import { initWorkerAsync, sleepAsync } from './initWorker.js'; import Oidc from './oidc.js'; +import { + createNetworkError, + isNetworkErrorCause, + isOidcError, + isRetryableHttpStatus, + OidcError, + OidcErrorCode, +} from './oidcError.js'; +import { OidcStateError, OidcStateErrorCode } from './oidcStateError.js'; import { computeTimeLeft, isTokensOidcValid, setTokens, Tokens } from './parseTokens.js'; import { performTokenRequestAsync } from './requests'; import { _silentLoginAsync } from './silentLogin'; import timer from './timer.js'; import { OidcConfiguration, StringMap, TokenAutomaticRenewMode } from './types.js'; +export type RenewTokensResult = { + tokens: Tokens | null; + status: string | null; + error?: OidcError; +}; + +const createRefreshTokenError = ( + message: string, + response?: { + status?: number; + oauthError?: string; + oauthErrorDescription?: string; + }, +): OidcError => { + const code = + response?.oauthError === 'use_dpop_nonce' + ? OidcErrorCode.DPOP_NONCE_REQUIRED + : OidcErrorCode.TOKEN_REQUEST_FAILED; + return new OidcError(code, message, { + phase: 'refresh', + retryable: + code === OidcErrorCode.DPOP_NONCE_REQUIRED || isRetryableHttpStatus(response?.status), + status: response?.status, + oauthError: response?.oauthError, + oauthErrorDescription: response?.oauthErrorDescription, + }); +}; + async function syncTokens( oidc: Oidc, forceRefresh: boolean, @@ -17,7 +54,7 @@ async function syncTokens( const updateTokens = tokens => { oidc.tokens = tokens; }; - const { tokens, status } = await synchroniseTokensAsync(oidc)( + const result = await synchroniseTokensAsync(oidc)( updateTokens, 0, 0, @@ -25,6 +62,7 @@ async function syncTokens( extras, scope, ); + const { tokens, status } = result; const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if (!serviceWorker) { @@ -38,12 +76,12 @@ async function syncTokens( if (!oidc.tokens) { await oidc.destroyAsync(status); - return null; + return { ...result, tokens: null } as RenewTokensResult; } - return tokens; + return { ...result, tokens } as RenewTokensResult; } -export async function renewTokensAndStartTimerAsync( +export async function renewTokensAndStartTimerResultAsync( oidc, forceRefresh = false, extras: StringMap = null, @@ -52,14 +90,14 @@ export async function renewTokensAndStartTimerAsync( const configuration = oidc.configuration; const lockResourcesName = `${configuration.client_id}_${oidc.configurationName}_${configuration.authority}`; - let tokens: null; + let result: RenewTokensResult; const serviceWorker = await initWorkerAsync(oidc.configuration, oidc.configurationName); if ((configuration?.storage === window?.sessionStorage && !serviceWorker) || !navigator.locks) { - tokens = await syncTokens(oidc, forceRefresh, extras, scope); + result = await syncTokens(oidc, forceRefresh, extras, scope); } else { - let status: any = 'retry'; - while (status === 'retry') { - status = await navigator.locks.request( + let lockResult: any = 'retry'; + while (lockResult === 'retry') { + lockResult = await navigator.locks.request( lockResourcesName, { ifAvailable: true }, async lock => { @@ -73,11 +111,11 @@ export async function renewTokensAndStartTimerAsync( }, ); } - tokens = status; + result = lockResult; } - if (!tokens) { - return null; + if (!result.tokens) { + return result; } if (oidc.timeoutId) { @@ -85,7 +123,17 @@ export async function renewTokensAndStartTimerAsync( oidc.timeoutId = autoRenewTokens(oidc, oidc.tokens.expiresAt, extras, scope); } - return oidc.tokens; + return { ...result, tokens: oidc.tokens }; +} + +export async function renewTokensAndStartTimerAsync( + oidc, + forceRefresh = false, + extras: StringMap = null, + scope: string = null, +) { + const result = await renewTokensAndStartTimerResultAsync(oidc, forceRefresh, extras, scope); + return result.tokens; } export const autoRenewTokens = ( @@ -227,6 +275,7 @@ const synchroniseTokensAsync = forceRefresh = false, extras: StringMap = null, scope: string = null, + lastError: OidcError = null, ) => { if (!navigator.onLine && document.hidden) { return { tokens: oidc.tokens, status: 'GIVE_UP' }; @@ -248,8 +297,12 @@ const synchroniseTokensAsync = if (tryNumber >= maxTries || backgroundTry >= maxBackgroundTries) { updateTokens(null); - oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token' }); - return { tokens: null, status: 'SESSION_LOST' }; + const error = lastError ?? createRefreshTokenError('refresh token'); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { + message: 'refresh token', + error, + }); + return { tokens: null, status: 'SESSION_LOST', error }; } if (!extras) { @@ -262,6 +315,7 @@ const synchroniseTokensAsync = oidc.configurationName, oidc.configuration, oidc.publishEvent.bind(oidc), + 'refresh', )(extras, state, scope); }; const localSilentLoginAsync = async () => { @@ -302,27 +356,42 @@ const synchroniseTokensAsync = const silent_token_response = await silentLoginAsync(silentLoginInput); if (!silent_token_response) { updateTokens(null); + const error = createRefreshTokenError('refresh token silent not active'); oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent not active', + error, }); - return { tokens: null, status: 'SESSION_LOST' }; + return { tokens: null, status: 'SESSION_LOST', error }; } if (silent_token_response.error) { updateTokens(null); + const error = + silent_token_response.oidcError ?? + new OidcError(OidcErrorCode.OAUTH_ERROR, 'refresh token silent', { + phase: 'refresh', + retryable: false, + oauthError: silent_token_response.error, + }); oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token silent', + error, }); - return { tokens: null, status: 'SESSION_LOST' }; + return { tokens: null, status: 'SESSION_LOST', error }; } updateTokens(silent_token_response.tokens); oidc.publishEvent(Oidc.eventNames.token_renewed, {}); return { tokens: silent_token_response.tokens, status: 'LOGGED' }; } catch (exceptionSilent: any) { - console.error(exceptionSilent); + const error = + isOidcError(exceptionSilent) || !isNetworkErrorCause(exceptionSilent) + ? exceptionSilent + : createNetworkError(exceptionSilent, 'refresh'); + console.error(error); oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exceptionSilent', - exception: exceptionSilent.message, + exception: error.message, + error: isOidcError(error) ? error : undefined, }); return await synchroniseTokensAsync(oidc)( updateTokens, @@ -331,6 +400,7 @@ const synchroniseTokensAsync = forceRefresh, extras, scope, + isOidcError(error) ? error : lastError, ); } }; @@ -346,10 +416,14 @@ const synchroniseTokensAsync = switch (status) { case synchroniseTokensStatus.SESSION_LOST: updateTokens(null); - oidc.publishEvent(eventNames.refreshTokensAsync_error, { - message: 'refresh token session lost', - }); - return { tokens: null, status: 'SESSION_LOST' }; + { + const error = lastError ?? createRefreshTokenError('refresh token session lost'); + oidc.publishEvent(eventNames.refreshTokensAsync_error, { + message: 'refresh token session lost', + error, + }); + return { tokens: null, status: 'SESSION_LOST', error }; + } case synchroniseTokensStatus.NOT_CONNECTED: updateTokens(null); return { tokens: null, status: null }; @@ -435,7 +509,7 @@ const synchroniseTokensAsync = 'POST', ); } - const tokenResponse = await performTokenRequestAsync(oidc.getFetch())( + let tokenResponse = await performTokenRequestAsync(oidc.getFetch())( url, details, finalExtras, @@ -445,6 +519,43 @@ const synchroniseTokensAsync = timeoutMs, ); + if ( + !tokenResponse.success && + tokenResponse.oauthError === 'use_dpop_nonce' && + tokenResponse.demonstratingProofOfPossessionNonce && + configuration.demonstrating_proof_of_possession + ) { + const serviceWorker = await initWorkerAsync(configuration, oidc.configurationName); + if (serviceWorker) { + await serviceWorker.setDemonstratingProofOfPossessionNonce( + tokenResponse.demonstratingProofOfPossessionNonce, + ); + } else { + const session = initSession( + oidc.configurationName, + configuration.storage, + configuration.login_state_storage ?? configuration.storage, + ); + await session.setDemonstratingProofOfPossessionNonce( + tokenResponse.demonstratingProofOfPossessionNonce, + ); + } + headersExtras['DPoP'] = await oidc.generateDemonstrationOfProofOfPossessionAsync( + tokens.accessToken, + url, + 'POST', + ); + tokenResponse = await performTokenRequestAsync(oidc.getFetch())( + url, + details, + finalExtras, + tokens, + headersExtras, + configuration.token_renew_mode, + timeoutMs, + ); + } + if (tokenResponse.success) { // Guard against a missing/corrupted nonce reaching id_token validation. // Without this guard, accessing `nonce.nonce` would throw a TypeError @@ -454,10 +565,16 @@ const synchroniseTokensAsync = // See https://github.com/AxaFrance/oidc-client/issues/1678 if (!nonce || !nonce.nonce) { updateTokens(null); + const error = new OidcStateError( + OidcStateErrorCode.NONCE_MISSING, + 'refresh token: nonce missing from storage', + 'refresh', + ); oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: 'refresh token: nonce missing from storage', + error, }); - return { tokens: null, status: 'SESSION_LOST' }; + return { tokens: null, status: 'SESSION_LOST', error }; } const { isValid, reason } = isTokensOidcValid( tokenResponse.data, @@ -466,10 +583,21 @@ const synchroniseTokensAsync = ); if (!isValid) { updateTokens(null); + const error = new OidcError( + reason.startsWith('Nonce does not match') + ? OidcErrorCode.INVALID_NONCE + : OidcErrorCode.TOKEN_REQUEST_FAILED, + `refresh token return not valid tokens, reason: ${reason}`, + { + phase: 'refresh', + retryable: false, + }, + ); oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: `refresh token return not valid tokens, reason: ${reason}`, + error, }); - return { tokens: null, status: 'SESSION_LOST' }; + return { tokens: null, status: 'SESSION_LOST', error }; } updateTokens(tokenResponse.data); if (tokenResponse.demonstratingProofOfPossessionNonce) { @@ -495,17 +623,20 @@ const synchroniseTokensAsync = oidc.publishEvent(Oidc.eventNames.token_renewed, { reason: 'REFRESH_TOKEN' }); return { tokens: tokenResponse.data, status: 'LOGGED_IN' }; } else { + const error = createRefreshTokenError('Token request failed', tokenResponse); oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'bad request', tokenResponse, + error, }); if (tokenResponse.status >= 400 && tokenResponse.status < 500) { updateTokens(null); oidc.publishEvent(eventNames.refreshTokensAsync_error, { message: `session lost: ${tokenResponse.status}`, + error, }); - return { tokens: null, status: 'SESSION_LOST' }; + return { tokens: null, status: 'SESSION_LOST', error }; } return await synchroniseTokensAsync(oidc)( @@ -515,6 +646,7 @@ const synchroniseTokensAsync = forceRefresh, extras, scope, + error, ); } }; @@ -522,11 +654,16 @@ const synchroniseTokensAsync = } } } catch (exception: any) { - console.error(exception); + const error = + isOidcError(exception) || !isNetworkErrorCause(exception) + ? exception + : createNetworkError(exception, 'refresh'); + console.error(error); oidc.publishEvent(eventNames.refreshTokensAsync_silent_error, { message: 'exception', - exception: exception.message, + exception: error.message, + error: isOidcError(error) ? error : undefined, }); // we need to break the loop or errors, as direct call of synchroniseTokensAsync // inside of synchroniseTokensAsync will cause an infinite loop and kill the browser stack @@ -540,6 +677,7 @@ const synchroniseTokensAsync = forceRefresh, extras, scope, + isOidcError(error) ? error : lastError, ) .then(resolve) .catch(reject); diff --git a/packages/oidc-client/src/renewTokensError.spec.ts b/packages/oidc-client/src/renewTokensError.spec.ts new file mode 100644 index 000000000..7bbd3bacb --- /dev/null +++ b/packages/oidc-client/src/renewTokensError.spec.ts @@ -0,0 +1,116 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import * as initSessionModule from './initSession'; +import * as initWorkerModule from './initWorker'; +import Oidc from './oidc'; +import { OidcError, OidcErrorCode } from './oidcError'; +import { OidcStateError, OidcStateErrorCode } from './oidcStateError'; +import { Tokens } from './parseTokens'; +import { renewTokensAndStartTimerResultAsync } from './renewTokens'; +import * as requestsModule from './requests'; + +afterEach(() => { + vi.restoreAllMocks(); + vi.unstubAllGlobals(); +}); + +describe('strict token renewal', () => { + it('keeps renewTokensAsync non-throwing while the strict method throws the shared error', async () => { + const error = new OidcError(OidcErrorCode.TOKEN_REQUEST_FAILED, 'Token request failed', { + phase: 'refresh', + retryable: false, + status: 400, + oauthError: 'invalid_grant', + }); + const oidc = Object.create(Oidc.prototype) as Oidc; + const sharedResult = Promise.resolve({ + tokens: null, + status: 'SESSION_LOST', + error, + }); + oidc.renewTokensPromise = sharedResult; + + const nonThrowing = oidc.renewTokensAsync(); + const strict = oidc.renewTokensOrThrowAsync(); + + await expect(nonThrowing).resolves.toBeNull(); + await expect(strict).rejects.toBe(error); + }); + + it('returns renewed tokens from the strict method', async () => { + const tokens = { + accessToken: 'access-token', + expiresAt: Date.now() / 1000 + 3600, + } as Tokens; + const oidc = Object.create(Oidc.prototype) as Oidc; + oidc.renewTokensPromise = Promise.resolve({ + tokens, + status: 'LOGGED_IN', + }); + + await expect(oidc.renewTokensOrThrowAsync()).resolves.toBe(tokens); + }); + + it('returns SESSION_LOST with OidcStateError(NONCE_MISSING) when refresh succeeds but nonce storage is missing', async () => { + vi.stubGlobal('navigator', { locks: undefined, onLine: true }); + vi.stubGlobal('document', { hidden: false }); + vi.stubGlobal('window', { sessionStorage: {} }); + vi.spyOn(initWorkerModule, 'initWorkerAsync').mockResolvedValue(null); + vi.spyOn(initSessionModule, 'initSession').mockReturnValue({ + getNonceAsync: vi.fn().mockResolvedValue({ nonce: undefined }), + initAsync: vi.fn().mockResolvedValue({ + status: null, + tokens: { + accessToken: 'access-token', + expiresAt: 0, + issuedAt: 1, + refreshToken: 'refresh-token', + }, + }), + setTokens: vi.fn(), + } as never); + vi.spyOn(requestsModule, 'performTokenRequestAsync').mockReturnValue( + vi.fn().mockResolvedValue({ + data: { accessToken: 'renewed-token' }, + status: 200, + success: true, + }) as never, + ); + + const oidc = Object.create(Oidc.prototype) as Oidc; + oidc.configurationName = 'default'; + oidc.configuration = { + authority: 'https://issuer.example.com', + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + refresh_time_before_tokens_expiration_in_second: 0, + scope: 'openid', + storage: {}, + token_renew_mode: 'access_token_or_id_token_invalid', + } as never; + oidc.destroyAsync = vi.fn(); + oidc.getFetch = vi.fn(); + oidc.initAsync = vi.fn().mockResolvedValue({ + tokenEndpoint: 'https://issuer.example.com/token', + }); + oidc.publishEvent = vi.fn(); + oidc.tokens = { + accessToken: 'access-token', + expiresAt: 0, + issuedAt: 1, + refreshToken: 'refresh-token', + } as Tokens; + + const result = await renewTokensAndStartTimerResultAsync(oidc); + + expect(result.status).toBe('SESSION_LOST'); + expect(result.tokens).toBeNull(); + expect(result.error).toBeInstanceOf(OidcStateError); + expect(result.error).toMatchObject({ + code: OidcStateErrorCode.NONCE_MISSING, + phase: 'refresh', + retryable: false, + }); + expect(oidc.tokens).toBeNull(); + }); +}); diff --git a/packages/oidc-client/src/requests.spec.ts b/packages/oidc-client/src/requests.spec.ts index b4f17699e..f4dd09711 100644 --- a/packages/oidc-client/src/requests.spec.ts +++ b/packages/oidc-client/src/requests.spec.ts @@ -8,6 +8,7 @@ import { import { performAuthorizationRequestAsync, performPushedAuthorizationRequestAsync, + performTokenRequestAsync, } from './requests'; import { Fetch } from './types'; @@ -232,3 +233,64 @@ describe('performAuthorizationRequestAsync', () => { }); }); }); + +describe('token endpoint error details', () => { + it('preserves OAuth details, HTTP status and the DPoP nonce on a non-2xx response', async () => { + const fetchMock = vi.fn(async () => { + return new Response( + JSON.stringify({ + error: 'use_dpop_nonce', + error_description: 'A fresh proof is required', + }), + { + status: 400, + headers: { + 'Content-Type': 'application/json', + 'DPoP-Nonce': 'server-nonce', + }, + }, + ); + }); + + const response = await performTokenRequestAsync(asFetch(fetchMock))( + 'https://issuer.example.com/token', + { grant_type: 'refresh_token' }, + {}, + null, + { DPoP: 'proof' }, + 'access_token_or_id_token_invalid', + ); + + expect(response).toMatchObject({ + success: false, + status: 400, + oauthError: 'use_dpop_nonce', + oauthErrorDescription: 'A fresh proof is required', + demonstratingProofOfPossessionNonce: 'server-nonce', + }); + }); + + it.each([408, 429, 500])('preserves retryable HTTP status %s for the caller', async status => { + const fetchMock = vi.fn(async () => { + return new Response(JSON.stringify({ error: 'temporarily_unavailable' }), { + status, + headers: { 'Content-Type': 'application/json' }, + }); + }); + + const response = await performTokenRequestAsync(asFetch(fetchMock))( + 'https://issuer.example.com/token', + { grant_type: 'refresh_token' }, + {}, + null, + {}, + 'access_token_or_id_token_invalid', + ); + + expect(response).toMatchObject({ + success: false, + status, + oauthError: 'temporarily_unavailable', + }); + }); +}); diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index ded508bc6..3e62d3d00 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -110,10 +110,18 @@ export const performRevocationRequestAsync = timeoutMs, ); if (response.status !== 200) { - return { success: false }; + const data = await getResponseJsonAsync(response); + return { + success: false, + status: response.status, + oauthError: typeof data?.error === 'string' ? data.error : undefined, + oauthErrorDescription: + typeof data?.error_description === 'string' ? data.error_description : undefined, + }; } return { success: true, + status: response.status, }; }; @@ -122,6 +130,8 @@ type PerformTokenRequestResponse = { status?: number; data?: any; demonstratingProofOfPossessionNonce?: string; + oauthError?: string; + oauthErrorDescription?: string; }; export type PushedAuthorizationRequestResponse = { @@ -255,10 +265,19 @@ export const performTokenRequestAsync = timeoutMs, ); if (response.status !== 200) { + const data = await getResponseJsonAsync(response); return { success: false, status: response.status, - demonstratingProofOfPossessionNonce: null, + data, + oauthError: typeof data?.error === 'string' ? data.error : undefined, + oauthErrorDescription: + typeof data?.error_description === 'string' ? data.error_description : undefined, + demonstratingProofOfPossessionNonce: response.headers?.has( + demonstratingProofOfPossessionNonceResponseHeader, + ) + ? response.headers.get(demonstratingProofOfPossessionNonceResponseHeader) + : null, }; } const tokens = await response.json(); @@ -325,7 +344,14 @@ export const performAuthorizationRequestAsync = const demonstratingProofOfPossessionNonceResponseHeader = 'DPoP-Nonce'; export const performFirstTokenRequestAsync = (storage: any) => - async (url, formBodyExtras, headersExtras, tokenRenewMode: string, timeoutMs = 10000) => { + async ( + url, + formBodyExtras, + headersExtras, + tokenRenewMode: string, + timeoutMs = 10000, + shouldPreserveLoginStateForDpopRetry = false, + ): Promise => { formBodyExtras = formBodyExtras ? { ...formBodyExtras } : {}; formBodyExtras.code_verifier = await storage.getCodeVerifierAsync(); const formBody = []; @@ -347,10 +373,27 @@ export const performFirstTokenRequestAsync = }, timeoutMs, ); - await Promise.all([storage.setCodeVerifierAsync(null), storage.setStateAsync(null)]); if (response.status !== 200) { - return { success: false, status: response.status }; + const data = await getResponseJsonAsync(response); + const oauthError = typeof data?.error === 'string' ? data.error : undefined; + if (!(shouldPreserveLoginStateForDpopRetry && oauthError === 'use_dpop_nonce')) { + await Promise.all([storage.setCodeVerifierAsync(null), storage.setStateAsync(null)]); + } + return { + success: false, + status: response.status, + data, + oauthError, + oauthErrorDescription: + typeof data?.error_description === 'string' ? data.error_description : undefined, + demonstratingProofOfPossessionNonce: response.headers?.has( + demonstratingProofOfPossessionNonceResponseHeader, + ) + ? response.headers.get(demonstratingProofOfPossessionNonceResponseHeader) + : null, + }; } + await Promise.all([storage.setCodeVerifierAsync(null), storage.setStateAsync(null)]); let demonstratingProofOfPossessionNonce: string = null; if (response.headers.has(demonstratingProofOfPossessionNonceResponseHeader)) { demonstratingProofOfPossessionNonce = response.headers.get( diff --git a/packages/oidc-client/src/silentLogin.spec.ts b/packages/oidc-client/src/silentLogin.spec.ts new file mode 100644 index 000000000..cd9a31494 --- /dev/null +++ b/packages/oidc-client/src/silentLogin.spec.ts @@ -0,0 +1,158 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { OidcError, OidcErrorCode, serializeOidcError } from './oidcError'; +import { isOidcStateError, OidcStateError, OidcStateErrorCode } from './oidcStateError'; +import { _silentLoginAsync } from './silentLogin'; + +const installDom = () => { + const contentWindow = {}; + const iframe = { + contentWindow, + height: '', + id: '', + remove: vi.fn(), + setAttribute: vi.fn(), + style: { display: '' }, + width: '', + }; + let listener: (event: MessageEvent) => void; + vi.stubGlobal('document', { + body: { appendChild: vi.fn() }, + createElement: vi.fn(() => iframe), + }); + vi.stubGlobal('window', { + addEventListener: vi.fn((_name: string, callback: (event: MessageEvent) => void) => { + listener = callback; + }), + removeEventListener: vi.fn(), + }); + return { contentWindow, iframe, getListener: () => listener }; +}; + +afterEach(() => { + vi.useRealTimers(); + vi.unstubAllGlobals(); +}); + +describe('_silentLoginAsync typed errors', () => { + it('rejects with SILENT_LOGIN_TIMEOUT and publishes the same error', async () => { + vi.useFakeTimers(); + installDom(); + const publishEvent = vi.fn(); + + const promise = _silentLoginAsync( + 'default', + { + authority: 'https://issuer.example.com', + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid', + silent_login_uri: 'https://issuer.example.com/silent-login', + silent_redirect_uri: 'https://client.example.com/silent-callback', + silent_login_timeout: 25, + }, + publishEvent, + 'refresh', + )(); + const rejection = expect(promise).rejects.toMatchObject({ + code: OidcErrorCode.SILENT_LOGIN_TIMEOUT, + message: 'timeout', + phase: 'refresh', + retryable: true, + }); + + await vi.advanceTimersByTimeAsync(25); + await rejection; + const publishedError = publishEvent.mock.calls.find( + ([name]) => name === 'silentLoginAsync_error', + )?.[1]; + expect(publishedError).toBeInstanceOf(OidcError); + expect(publishedError.code).toBe(OidcErrorCode.SILENT_LOGIN_TIMEOUT); + }); + + it('reconstructs a serialized OidcError received from the callback iframe', async () => { + const { contentWindow, getListener } = installDom(); + const publishEvent = vi.fn(); + const original = new OidcError(OidcErrorCode.LOGIN_REQUIRED, 'login required', { + phase: 'refresh', + retryable: false, + oauthError: 'login_required', + }); + + const promise = _silentLoginAsync( + 'default', + { + authority: 'https://issuer.example.com', + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid', + silent_login_uri: 'https://issuer.example.com/silent-login', + silent_redirect_uri: 'https://client.example.com/silent-callback', + silent_login_timeout: 1000, + }, + publishEvent, + 'refresh', + )(); + getListener()({ + origin: 'https://issuer.example.com', + source: contentWindow, + data: `default_oidc_exception:${JSON.stringify({ + error: original.toString(), + oidcError: serializeOidcError(original), + })}`, + } as unknown as MessageEvent); + + await expect(promise).rejects.toMatchObject({ + code: OidcErrorCode.LOGIN_REQUIRED, + phase: 'refresh', + oauthError: 'login_required', + }); + }); + + it('keeps serialized OidcStateError instances detectable after the iframe round-trip', async () => { + const { contentWindow, getListener } = installDom(); + const publishEvent = vi.fn(); + const original = new OidcStateError( + OidcStateErrorCode.NONCE_MISSING, + 'refresh token: nonce missing from storage', + 'refresh', + ); + + const promise = _silentLoginAsync( + 'default', + { + authority: 'https://issuer.example.com', + client_id: 'client', + redirect_uri: 'https://client.example.com/callback', + scope: 'openid', + silent_login_uri: 'https://issuer.example.com/silent-login', + silent_redirect_uri: 'https://client.example.com/silent-callback', + silent_login_timeout: 1000, + }, + publishEvent, + 'refresh', + )(); + getListener()({ + origin: 'https://issuer.example.com', + source: contentWindow, + data: `default_oidc_exception:${JSON.stringify({ + error: original.toString(), + oidcError: serializeOidcError(original), + })}`, + } as unknown as MessageEvent); + + let thrownError: unknown; + try { + await promise; + } catch (error) { + thrownError = error; + } + + expect(isOidcStateError(thrownError)).toBe(true); + expect(thrownError).toMatchObject({ + code: OidcStateErrorCode.NONCE_MISSING, + phase: 'refresh', + name: 'OidcStateError', + }); + }); +}); diff --git a/packages/oidc-client/src/silentLogin.ts b/packages/oidc-client/src/silentLogin.ts index 8663ed8a7..928113eb8 100644 --- a/packages/oidc-client/src/silentLogin.ts +++ b/packages/oidc-client/src/silentLogin.ts @@ -1,12 +1,20 @@ import { eventNames } from './events.js'; +import { + createOAuthError, + deserializeOidcError, + OidcError, + OidcErrorCode, + OidcErrorPhase, +} from './oidcError.js'; import { Tokens } from './parseTokens.js'; import { autoRenewTokens } from './renewTokens.js'; import timer from './timer.js'; import { OidcConfiguration, StringMap } from './types.js'; export type SilentLoginResponse = { - tokens: Tokens; - sessionState: string; - error: string; + tokens: Tokens | null; + sessionState: string | null; + error?: string; + oidcError?: OidcError; }; export type PublishEventFunction = (eventName: string, eventData: any) => void; @@ -16,6 +24,7 @@ export const _silentLoginAsync = configurationName: string, configuration: OidcConfiguration, publishEvent: PublishEventFunction, + phase: OidcErrorPhase = 'login', ) => ( extras: StringMap = null, @@ -91,13 +100,27 @@ export const _silentLoginAsync = clear(); } else if (data.startsWith(key_error)) { const result = JSON.parse(e.data.replace(key_error, '')); - publishEvent(eventNames.silentLoginAsync_error, result); - resolve({ error: 'oidc_' + result.error, tokens: null, sessionState: null }); + const error = + deserializeOidcError(result.oidcError) ?? + createOAuthError( + result.error, + result.error_description, + `Error from OIDC server: ${result.error} - ${result.error_description}`, + phase, + ); + publishEvent(eventNames.silentLoginAsync_error, error); + resolve({ + error: 'oidc_' + result.error, + tokens: null, + sessionState: null, + oidcError: error, + }); clear(); } else if (data.startsWith(key_exception)) { const result = JSON.parse(e.data.replace(key_exception, '')); - publishEvent(eventNames.silentLoginAsync_error, result); - reject(new Error(result.error)); + const error = deserializeOidcError(result.oidcError) ?? new Error(result.error); + publishEvent(eventNames.silentLoginAsync_error, error); + reject(error); clear(); } } @@ -112,8 +135,12 @@ export const _silentLoginAsync = setTimeout(() => { if (!isResolved) { clear(); - publishEvent(eventNames.silentLoginAsync_error, { reason: 'timeout' }); - reject(new Error('timeout')); + const error = new OidcError(OidcErrorCode.SILENT_LOGIN_TIMEOUT, 'timeout', { + phase, + retryable: true, + }); + publishEvent(eventNames.silentLoginAsync_error, error); + reject(error); } }, silentSigninTimeout); } catch (e) { diff --git a/packages/oidc-client/src/user.ts b/packages/oidc-client/src/user.ts index 29d01aebb..d6a78cc4e 100644 --- a/packages/oidc-client/src/user.ts +++ b/packages/oidc-client/src/user.ts @@ -1,41 +1,81 @@ +import { eventNames } from './events'; import { fetchWithTokens } from './fetch'; import Oidc from './oidc'; +import { + createNetworkError, + isNetworkErrorCause, + isOidcError, + isRetryableHttpStatus, + OidcError, + OidcErrorCode, +} from './oidcError'; export const userInfoAsync = (oidc: Oidc) => async (noCache = false, demonstrating_proof_of_possession = false) => { - if (oidc.userInfo != null && !noCache) { - return oidc.userInfo; - } - // Check storage cache - const stored = - !noCache && oidc.configuration.storage?.getItem(`oidc.${oidc.configurationName}.userInfo`); - if (stored) { - oidc.userInfo = JSON.parse(stored); - return oidc.userInfo; - } - const configuration = oidc.configuration; - const oidcServerConfiguration = await oidc.initAsync( - configuration.authority, - configuration.authority_configuration, - ); - const url = oidcServerConfiguration.userInfoEndpoint; - const fetchUserInfo = async () => { - const oidcFetch = fetchWithTokens(fetch, oidc, demonstrating_proof_of_possession); - const response = await oidcFetch(url); - if (response.status !== 200) { - return null; + try { + if (oidc.userInfo != null && !noCache) { + return oidc.userInfo; } - return response.json(); - }; - const userInfo = await fetchUserInfo(); - oidc.userInfo = userInfo; - // Store in cache - if (userInfo) { - oidc.configuration.storage?.setItem( - `oidc.${oidc.configurationName}.userInfo`, - JSON.stringify(userInfo), + // Check storage cache + const stored = + !noCache && oidc.configuration.storage?.getItem(`oidc.${oidc.configurationName}.userInfo`); + if (stored) { + oidc.userInfo = JSON.parse(stored); + return oidc.userInfo; + } + const configuration = oidc.configuration; + const oidcServerConfiguration = await oidc.initAsync( + configuration.authority, + configuration.authority_configuration, ); + const url = oidcServerConfiguration.userInfoEndpoint; + const fetchUserInfo = async () => { + const oidcFetch = fetchWithTokens( + fetch, + oidc, + demonstrating_proof_of_possession, + 'userinfo', + ); + const response = await oidcFetch(url); + if (response.status !== 200) { + const isDpopNonceRequired = + response.headers?.has('DPoP-Nonce') && + (response.status === 400 || + response.status === 401 || + response.headers.get('WWW-Authenticate')?.includes('use_dpop_nonce')); + const error = new OidcError( + isDpopNonceRequired ? OidcErrorCode.DPOP_NONCE_REQUIRED : OidcErrorCode.REQUEST_FAILED, + 'UserInfo request failed', + { + phase: 'userinfo', + retryable: isDpopNonceRequired || isRetryableHttpStatus(response.status), + status: response.status, + oauthError: isDpopNonceRequired ? 'use_dpop_nonce' : undefined, + }, + ); + oidc.publishEvent(eventNames.userInfoAsync_error, error); + return null; + } + return response.json(); + }; + const userInfo = await fetchUserInfo(); + oidc.userInfo = userInfo; + // Store in cache + if (userInfo) { + oidc.configuration.storage?.setItem( + `oidc.${oidc.configurationName}.userInfo`, + JSON.stringify(userInfo), + ); + } + return userInfo; + } catch (cause) { + const error = isOidcError(cause) + ? cause + : isNetworkErrorCause(cause) + ? createNetworkError(cause, 'userinfo') + : cause; + oidc.publishEvent(eventNames.userInfoAsync_error, error); + throw error; } - return userInfo; }; diff --git a/packages/react-oidc/src/index.ts b/packages/react-oidc/src/index.ts index f874611c0..b74f16805 100644 --- a/packages/react-oidc/src/index.ts +++ b/packages/react-oidc/src/index.ts @@ -9,14 +9,19 @@ export type { Fetch, ILOidcLocation, OidcConfiguration, + OidcErrorOptions, + OidcErrorPhase, PushedAuthorizationRequestMode, StringMap, } from '@axa-fr/oidc-client'; export type { OidcUserInfo } from '@axa-fr/oidc-client'; export { + isOidcError, isOidcStateError, isPushedAuthorizationRequestError, OidcClient, + OidcError, + OidcErrorCode, OidcLocation, OidcStateError, OidcStateErrorCode, From a0b3dbd710ebc361e11d4abec364bc6f7fbd25df Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 21:33:00 +0000 Subject: [PATCH 536/565] 7.29.0 --- packages/oidc-client-service-worker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 4d7a62f5e..46f39f2d1 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.28.2", + "version": "7.29.0", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", From 8207e25c892f63399522123ff01702337694b48a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 21:33:57 +0000 Subject: [PATCH 537/565] [skip ci] Update to version 7.29.0 in package.json --- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index e25a1e12e..f4badc514 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.28.2'; +export default '7.29.0'; diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index e25a1e12e..f4badc514 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.28.2'; +export default '7.29.0'; From cf4b796e9e1e6ae9d82e1b8d02e9acf03a48d9c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 21:33:59 +0000 Subject: [PATCH 538/565] [skip ci] Generate changelog to version 7.29.0 --- CHANGELOG.md | 169 ++++++++++++++++++++++++++------------------------- 1 file changed, 86 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 715c2574a..187741432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,96 +1,104 @@ # Changelog -## 7.28.2 +## 7.29.0 -- [cdf423e](https://github.com/AxaFrance/oidc-client/commit/cdf423ef7bbeccc3127055d1b9c401a5bfb5fa81) - [skip ci] Update to version 7.28.2 in package.json, 2026-07-30 by *github-actions[bot]* +- [8207e25c](https://github.com/AxaFrance/oidc-client/commit/8207e25c892f63399522123ff01702337694b48a) - [skip ci] Update to version 7.29.0 in package.json, 2026-07-31 by *github-actions[bot]* + + +## v7.29.0 + +- [a0b3dbd7](https://github.com/AxaFrance/oidc-client/commit/a0b3dbd710ebc361e11d4abec364bc6f7fbd25df) - 7.29.0, 2026-07-31 by *github-actions[bot]* +- [2d671ac9](https://github.com/AxaFrance/oidc-client/commit/2d671ac95a13a0effc1472e3fac0d4a32250fc2e) - feat(oidc-client): add typed-error (#1720) (release), 2026-07-31 by *Guillaume Chervet* +- [ad25121d](https://github.com/AxaFrance/oidc-client/commit/ad25121d7164052890296eea064baaf267433c4d) - [skip ci] Generate changelog to version 7.28.2, 2026-07-30 by *github-actions[bot]* +- [cdf423ef](https://github.com/AxaFrance/oidc-client/commit/cdf423ef7bbeccc3127055d1b9c401a5bfb5fa81) - [skip ci] Update to version 7.28.2 in package.json, 2026-07-30 by *github-actions[bot]* +- [79502145](https://github.com/AxaFrance/oidc-client/commit/79502145c05480ae9e69dc1b46f38c97ab7d0680) - 7.28.2, 2026-07-30 by *github-actions[bot]* ## v7.28.2 -- [7950214](https://github.com/AxaFrance/oidc-client/commit/79502145c05480ae9e69dc1b46f38c97ab7d0680) - 7.28.2, 2026-07-30 by *github-actions[bot]* -- [bd1f087](https://github.com/AxaFrance/oidc-client/commit/bd1f087747d5342fa68dd84d3e4fb8ba38171768) - fix(oidc-react): Side effect on anonymous routes when reaching watchdog timeout (release) (#1722), 2026-07-30 by *Guillaume Chervet* -- [01bd60a](https://github.com/AxaFrance/oidc-client/commit/01bd60a962271ad9ba9b84a450bd5c9c3dbf3b92) - [skip ci] Generate changelog to version 7.28.1, 2026-07-28 by *github-actions[bot]* -- [84bbd03](https://github.com/AxaFrance/oidc-client/commit/84bbd033197363e00aecfd92e78f3dd8f2806d22) - [skip ci] Update to version 7.28.1 in package.json, 2026-07-28 by *github-actions[bot]* -- [c144177](https://github.com/AxaFrance/oidc-client/commit/c14417787846f0bf6079c54c2baf61900353aeff) - 7.28.1, 2026-07-28 by *github-actions[bot]* +- [bd1f0877](https://github.com/AxaFrance/oidc-client/commit/bd1f087747d5342fa68dd84d3e4fb8ba38171768) - fix(oidc-react): Side effect on anonymous routes when reaching watchdog timeout (release) (#1722), 2026-07-30 by *Guillaume Chervet* +- [01bd60a9](https://github.com/AxaFrance/oidc-client/commit/01bd60a962271ad9ba9b84a450bd5c9c3dbf3b92) - [skip ci] Generate changelog to version 7.28.1, 2026-07-28 by *github-actions[bot]* +- [84bbd033](https://github.com/AxaFrance/oidc-client/commit/84bbd033197363e00aecfd92e78f3dd8f2806d22) - [skip ci] Update to version 7.28.1 in package.json, 2026-07-28 by *github-actions[bot]* +- [c1441778](https://github.com/AxaFrance/oidc-client/commit/c14417787846f0bf6079c54c2baf61900353aeff) - 7.28.1, 2026-07-28 by *github-actions[bot]* ## v7.28.1 -- [8de7e31](https://github.com/AxaFrance/oidc-client/commit/8de7e316cc14d3f420808e36fb390c4e99b3cc65) - fix(all): remove Math.random (release) (#1719), 2026-07-28 by *Guillaume Chervet* -- [c1235d2](https://github.com/AxaFrance/oidc-client/commit/c1235d2ab53c11faa3275112e345130252ae87aa) - [skip ci] Generate changelog to version 7.28.0, 2026-07-28 by *github-actions[bot]* -- [87ed38b](https://github.com/AxaFrance/oidc-client/commit/87ed38bb864af0d2db246e2c225facd7be7e4e8d) - [skip ci] Update to version 7.28.0 in package.json, 2026-07-28 by *github-actions[bot]* -- [69aa8f1](https://github.com/AxaFrance/oidc-client/commit/69aa8f1e50709aa11067429acfc178f5e5dce23f) - 7.28.0, 2026-07-28 by *github-actions[bot]* +- [8de7e316](https://github.com/AxaFrance/oidc-client/commit/8de7e316cc14d3f420808e36fb390c4e99b3cc65) - fix(all): remove Math.random (release) (#1719), 2026-07-28 by *Guillaume Chervet* +- [c1235d2a](https://github.com/AxaFrance/oidc-client/commit/c1235d2ab53c11faa3275112e345130252ae87aa) - [skip ci] Generate changelog to version 7.28.0, 2026-07-28 by *github-actions[bot]* +- [87ed38bb](https://github.com/AxaFrance/oidc-client/commit/87ed38bb864af0d2db246e2c225facd7be7e4e8d) - [skip ci] Update to version 7.28.0 in package.json, 2026-07-28 by *github-actions[bot]* +- [69aa8f1e](https://github.com/AxaFrance/oidc-client/commit/69aa8f1e50709aa11067429acfc178f5e5dce23f) - 7.28.0, 2026-07-28 by *github-actions[bot]* ## v7.28.0 -- [638eee8](https://github.com/AxaFrance/oidc-client/commit/638eee8ab1bbfecfadfb05d64217c2ecec9749be) - feat(oidc-client): PAR (#1718) (release), 2026-07-28 by *Guillaume Chervet* -- [f90927c](https://github.com/AxaFrance/oidc-client/commit/f90927c21f9bd0f94dc537391186937978a21b3d) - [skip ci] Generate changelog to version 7.27.23, 2026-07-15 by *github-actions[bot]* -- [b2cf323](https://github.com/AxaFrance/oidc-client/commit/b2cf323be58da2c7e66d73fb7040dfddb0ab683f) - [skip ci] Update to version 7.27.23 in package.json, 2026-07-15 by *github-actions[bot]* -- [87081bb](https://github.com/AxaFrance/oidc-client/commit/87081bbcd041a85ae8f0161b0dd241fe4a8c0279) - 7.27.23, 2026-07-15 by *github-actions[bot]* +- [638eee8a](https://github.com/AxaFrance/oidc-client/commit/638eee8ab1bbfecfadfb05d64217c2ecec9749be) - feat(oidc-client): PAR (#1718) (release), 2026-07-28 by *Guillaume Chervet* +- [f90927c2](https://github.com/AxaFrance/oidc-client/commit/f90927c21f9bd0f94dc537391186937978a21b3d) - [skip ci] Generate changelog to version 7.27.23, 2026-07-15 by *github-actions[bot]* +- [b2cf323b](https://github.com/AxaFrance/oidc-client/commit/b2cf323be58da2c7e66d73fb7040dfddb0ab683f) - [skip ci] Update to version 7.27.23 in package.json, 2026-07-15 by *github-actions[bot]* +- [87081bbc](https://github.com/AxaFrance/oidc-client/commit/87081bbcd041a85ae8f0161b0dd241fe4a8c0279) - 7.27.23, 2026-07-15 by *github-actions[bot]* ## v7.27.23 -- [ad4036a](https://github.com/AxaFrance/oidc-client/commit/ad4036a3de0626eccb8ecfc6f6c2e3ad1b79211b) - Update npm-publish.yml (release), 2026-07-15 by *Guillaume Chervet* +- [ad4036a3](https://github.com/AxaFrance/oidc-client/commit/ad4036a3de0626eccb8ecfc6f6c2e3ad1b79211b) - Update npm-publish.yml (release), 2026-07-15 by *Guillaume Chervet* ## v7.27.22 -- [c2d1602](https://github.com/AxaFrance/oidc-client/commit/c2d1602ce489fad13c0cc0187692f6a90cbd1a72) - fix: replace expired GIT_TOKEN with GITHUB_TOKEN in build job checkout (#1714) (release), 2026-07-14 by *Copilot* -- [80e720f](https://github.com/AxaFrance/oidc-client/commit/80e720f7773fd3f2bf98755cda433ec3bcbdd25a) - Fix publish workflow failure caused by missing git identity during versioning (#1713) (release), 2026-07-14 by *Copilot* +- [c2d1602c](https://github.com/AxaFrance/oidc-client/commit/c2d1602ce489fad13c0cc0187692f6a90cbd1a72) - fix: replace expired GIT_TOKEN with GITHUB_TOKEN in build job checkout (#1714) (release), 2026-07-14 by *Copilot* +- [80e720f7](https://github.com/AxaFrance/oidc-client/commit/80e720f7773fd3f2bf98755cda433ec3bcbdd25a) - Fix publish workflow failure caused by missing git identity during versioning (#1713) (release), 2026-07-14 by *Copilot* ## v7.27.21 -- [832173f](https://github.com/AxaFrance/oidc-client/commit/832173ffa24f7c8b65e2246fe07ac0bd13b641b2) - fix running linters (release) (#1711), 2026-07-11 by *Guillaume Chervet* -- [e0d3c7b](https://github.com/AxaFrance/oidc-client/commit/e0d3c7bcdf324583868aa2c6d6ebca452c30ea09) - fix: bump Node.js to v22 and pin TypeScript to 6.0.3 to unblock CI linter (#1708), 2026-07-10 by *Copilot* +- [832173ff](https://github.com/AxaFrance/oidc-client/commit/832173ffa24f7c8b65e2246fe07ac0bd13b641b2) - fix running linters (release) (#1711), 2026-07-11 by *Guillaume Chervet* +- [e0d3c7bc](https://github.com/AxaFrance/oidc-client/commit/e0d3c7bcdf324583868aa2c6d6ebca452c30ea09) - fix: bump Node.js to v22 and pin TypeScript to 6.0.3 to unblock CI linter (#1708), 2026-07-10 by *Copilot* ## v7.27.20 -- [a8ce57d](https://github.com/AxaFrance/oidc-client/commit/a8ce57dd6ff970c6608c3f99a0fafc0264e654b7) - fix: fixes vulnarabilities by updating dependencies (#1706) (release), 2026-07-10 by *Pavan Kumar Jadda* -- [afad266](https://github.com/AxaFrance/oidc-client/commit/afad2667d38f700a839fe6cfbff2a7ce9a02b792) - fix: remove hardcoded pnpm version from GitHub Actions workflows (#1707), 2026-07-10 by *Copilot* +- [a8ce57dd](https://github.com/AxaFrance/oidc-client/commit/a8ce57dd6ff970c6608c3f99a0fafc0264e654b7) - fix: fixes vulnarabilities by updating dependencies (#1706) (release), 2026-07-10 by *Pavan Kumar Jadda* +- [afad2667](https://github.com/AxaFrance/oidc-client/commit/afad2667d38f700a839fe6cfbff2a7ce9a02b792) - fix: remove hardcoded pnpm version from GitHub Actions workflows (#1707), 2026-07-10 by *Copilot* ## v7.27.19 -- [de47006](https://github.com/AxaFrance/oidc-client/commit/de470065418f3c98099f5df0a039bc33392cb74d) - Handle service worker AbortError on tab shutdown to avoid uncaught rejections (#1702) (release), 2026-06-24 by *Guillaume Chervet* +- [de470065](https://github.com/AxaFrance/oidc-client/commit/de470065418f3c98099f5df0a039bc33392cb74d) - Handle service worker AbortError on tab shutdown to avoid uncaught rejections (#1702) (release), 2026-06-24 by *Guillaume Chervet* ## v7.27.18 -- [e4afee9](https://github.com/AxaFrance/oidc-client/commit/e4afee9ccf68a3905c1d071223c2cea0a435fb8b) - Handle corrupted or missing OIDC state with a clear, descriptive error (#1700) (release), 2026-06-23 by *Guillaume Chervet* +- [e4afee9c](https://github.com/AxaFrance/oidc-client/commit/e4afee9ccf68a3905c1d071223c2cea0a435fb8b) - Handle corrupted or missing OIDC state with a clear, descriptive error (#1700) (release), 2026-06-23 by *Guillaume Chervet* ## v7.27.17 -- [940aa8d](https://github.com/AxaFrance/oidc-client/commit/940aa8da6427e95dd2aa380575c7a27c7c8f9aac) - fix: Prevent logoutAsync from clearing local session before navigation to avoid re-auth race (#1701) (release), 2026-06-23 by *Guillaume Chervet* +- [940aa8da](https://github.com/AxaFrance/oidc-client/commit/940aa8da6427e95dd2aa380575c7a27c7c8f9aac) - fix: Prevent logoutAsync from clearing local session before navigation to avoid re-auth race (#1701) (release), 2026-06-23 by *Guillaume Chervet* ## v7.27.16 -- [cb8fc88](https://github.com/AxaFrance/oidc-client/commit/cb8fc88246229ee819a32a2164385ef05209b806) - Gracefully handle hooks outside OidcProvider and add test provider #1679 (#1698) (release), 2026-06-23 by *Guillaume Chervet* +- [cb8fc882](https://github.com/AxaFrance/oidc-client/commit/cb8fc88246229ee819a32a2164385ef05209b806) - Gracefully handle hooks outside OidcProvider and add test provider #1679 (#1698) (release), 2026-06-23 by *Guillaume Chervet* ## v7.27.15 -- [e4cd2bd](https://github.com/AxaFrance/oidc-client/commit/e4cd2bd885f404bedaa66200d10c6145f403823a) - Fix issue #1696: loadingTimeout_error fires on authenticated/idle state after a silent session restore (regression from #1681 / #1692) (#1697) (release), 2026-06-21 by *Guillaume Chervet* +- [e4cd2bd8](https://github.com/AxaFrance/oidc-client/commit/e4cd2bd885f404bedaa66200d10c6145f403823a) - Fix issue #1696: loadingTimeout_error fires on authenticated/idle state after a silent session restore (regression from #1681 / #1692) (#1697) (release), 2026-06-21 by *Guillaume Chervet* ## v7.27.14 -- [416a1b5](https://github.com/AxaFrance/oidc-client/commit/416a1b52c64e8d9c764f605f19c8a21fe3a5f467) - Auto fix for issue #1682: CallbackManager: no observable signal that post-callback navigation has committed (Safari edge case) (#1691) (release), 2026-06-16 by *Guillaume Chervet* +- [416a1b52](https://github.com/AxaFrance/oidc-client/commit/416a1b52c64e8d9c764f605f19c8a21fe3a5f467) - Auto fix for issue #1682: CallbackManager: no observable signal that post-callback navigation has committed (Safari edge case) (#1691) (release), 2026-06-16 by *Guillaume Chervet* ## v7.27.13 -- [7b97a98](https://github.com/AxaFrance/oidc-client/commit/7b97a98f47b54ae4a9bc13dfc732c3e153dd8e60) - Auto fix for issue #1681: OidcProvider can sit in loading/authenticating indefinitely with no timeout event (#1692) (release), 2026-06-16 by *Guillaume Chervet* +- [7b97a98f](https://github.com/AxaFrance/oidc-client/commit/7b97a98f47b54ae4a9bc13dfc732c3e153dd8e60) - Auto fix for issue #1681: OidcProvider can sit in loading/authenticating indefinitely with no timeout event (#1692) (release), 2026-06-16 by *Guillaume Chervet* ## v7.27.12 -- [db7af26](https://github.com/AxaFrance/oidc-client/commit/db7af26e7979da303bc5d70df28a56854b8d5f3e) - Document and expose the public service worker message protocol (#1694) (release), 2026-06-16 by *Guillaume Chervet* +- [db7af26e](https://github.com/AxaFrance/oidc-client/commit/db7af26e7979da303bc5d70df28a56854b8d5f3e) - Document and expose the public service worker message protocol (#1694) (release), 2026-06-16 by *Guillaume Chervet* ## v7.27.11 @@ -99,18 +107,18 @@ ## v7.27.10 -- [93629d9](https://github.com/AxaFrance/oidc-client/commit/93629d928b045116487860230fc2cd7875930be4) - fix: exclude navigate-mode requests from destination bypass (#1683) (#1687) (release), 2026-06-13 by *Guillaume Chervet* -- [31d441d](https://github.com/AxaFrance/oidc-client/commit/31d441d3b37d92fd4f8daaa501b4c55ae1c58a0f) - chore: add copilot instruction, 2026-06-12 by *Guillaume Chervet* +- [93629d92](https://github.com/AxaFrance/oidc-client/commit/93629d928b045116487860230fc2cd7875930be4) - fix: exclude navigate-mode requests from destination bypass (#1683) (#1687) (release), 2026-06-13 by *Guillaume Chervet* +- [31d441d3](https://github.com/AxaFrance/oidc-client/commit/31d441d3b37d92fd4f8daaa501b4c55ae1c58a0f) - chore: add copilot instruction, 2026-06-12 by *Guillaume Chervet* ## v7.27.9 -- [4e9c33f](https://github.com/AxaFrance/oidc-client/commit/4e9c33f9c46d2a17a5c29103707dd743a5acc5ba) - fix(oidc): prevent storage poisoning on undefined setters (alpha) (#1674) (release), 2026-06-10 by *Andreas Adam* +- [4e9c33f9](https://github.com/AxaFrance/oidc-client/commit/4e9c33f9c46d2a17a5c29103707dd743a5acc5ba) - fix(oidc): prevent storage poisoning on undefined setters (alpha) (#1674) (release), 2026-06-10 by *Andreas Adam* ## v7.27.8 -- [c67eabf](https://github.com/AxaFrance/oidc-client/commit/c67eabfbe2bf437b490f37c63d58d79bdf82c4de) - Update all dependencies to latest versions (#1665) (release), 2026-05-15 by *Copilot* +- [c67eabfb](https://github.com/AxaFrance/oidc-client/commit/c67eabfbe2bf437b490f37c63d58d79bdf82c4de) - Update all dependencies to latest versions (#1665) (release), 2026-05-15 by *Copilot* ## v7.27.7 @@ -123,61 +131,61 @@ ## v7.27.5 -- [debafc8](https://github.com/AxaFrance/oidc-client/commit/debafc81b9f6d24f2c2bfc81e160b1cc595cacc0) - Bypass non-OIDC requests in the service worker (#1663) (release), 2026-05-14 by *Copilot* +- [debafc81](https://github.com/AxaFrance/oidc-client/commit/debafc81b9f6d24f2c2bfc81e160b1cc595cacc0) - Bypass non-OIDC requests in the service worker (#1663) (release), 2026-05-14 by *Copilot* ## v7.27.4 -- [9d94b3d](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* -- [78a0bfa](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* -- [a18f810](https://github.com/AxaFrance/oidc-client/commit/a18f81018dc8cd24620028b05912a46bb1f2ff72) - docs: remove twitter badge, add npm weekly downloads badges to READMEs (#1657), 2026-04-24 by *Copilot* -- [0691819](https://github.com/AxaFrance/oidc-client/commit/06918197a2ba6d549e2927cdf60a7019deb0fea7) - Remove sonar badges from README.md (#1656), 2026-04-24 by *Copilot* +- [9d94b3d6](https://github.com/AxaFrance/oidc-client/commit/9d94b3d64a0cec857106b15e87ddcd1777ef42d7) - chore(all): Update workspace libraries (#1659) (release), 2026-04-27 by *Copilot* +- [78a0bfa6](https://github.com/AxaFrance/oidc-client/commit/78a0bfa6281c0891ce4b7abde786ffdcd119d964) - Remove sonar badges from all README.md files (#1658), 2026-04-24 by *Copilot* +- [a18f8101](https://github.com/AxaFrance/oidc-client/commit/a18f81018dc8cd24620028b05912a46bb1f2ff72) - docs: remove twitter badge, add npm weekly downloads badges to READMEs (#1657), 2026-04-24 by *Copilot* +- [06918197](https://github.com/AxaFrance/oidc-client/commit/06918197a2ba6d549e2927cdf60a7019deb0fea7) - Remove sonar badges from README.md (#1656), 2026-04-24 by *Copilot* ## v7.27.3 -- [3ae9f19](https://github.com/AxaFrance/oidc-client/commit/3ae9f19f7ff304a85de103424865ebc63675d866) - fix: cache service worker registration to prevent repeated register calls (#1655) (release), 2026-04-21 by *Copilot* +- [3ae9f19f](https://github.com/AxaFrance/oidc-client/commit/3ae9f19f7ff304a85de103424865ebc63675d866) - fix: cache service worker registration to prevent repeated register calls (#1655) (release), 2026-04-21 by *Copilot* ## v7.27.2 -- [61b2ee6](https://github.com/AxaFrance/oidc-client/commit/61b2ee62093098e30cb15c9b2bb7102283876a3c) - fix(service-worker): add timeout to token renewal wait loop to prevent indefinite fetch blocking (#1654) (release), 2026-04-20 by *Copilot* +- [61b2ee62](https://github.com/AxaFrance/oidc-client/commit/61b2ee62093098e30cb15c9b2bb7102283876a3c) - fix(service-worker): add timeout to token renewal wait loop to prevent indefinite fetch blocking (#1654) (release), 2026-04-20 by *Copilot* ## v7.27.1 -- [362cd3a](https://github.com/AxaFrance/oidc-client/commit/362cd3adfecb4056558d9f9b503f503c091b0b7a) - fix(oid-client): service worker update (#1649) (release), 2026-03-18 by *Guillaume Chervet* +- [362cd3ad](https://github.com/AxaFrance/oidc-client/commit/362cd3adfecb4056558d9f9b503f503c091b0b7a) - fix(oid-client): service worker update (#1649) (release), 2026-03-18 by *Guillaume Chervet* ## v7.27.0 -- [48d3ad0](https://github.com/AxaFrance/oidc-client/commit/48d3ad028d7b8ccbd6504bb2682f72e0b079643c) - feat(oidc-client): Add a 'login_state_storage' option to allow storing the auth flow state separately to tokens (#1646) (release), 2026-03-11 by *Alex O'Callaghan* +- [48d3ad02](https://github.com/AxaFrance/oidc-client/commit/48d3ad028d7b8ccbd6504bb2682f72e0b079643c) - feat(oidc-client): Add a 'login_state_storage' option to allow storing the auth flow state separately to tokens (#1646) (release), 2026-03-11 by *Alex O'Callaghan* ## v7.26.8 -- [7c5dd66](https://github.com/AxaFrance/oidc-client/commit/7c5dd6612ae7ef5c492845eeae65dfdd23a75842) - fix(oidc): infinite service worker reload loop on version change (#1647) (release), 2026-03-10 by *Copilot* +- [7c5dd661](https://github.com/AxaFrance/oidc-client/commit/7c5dd6612ae7ef5c492845eeae65dfdd23a75842) - fix(oidc): infinite service worker reload loop on version change (#1647) (release), 2026-03-10 by *Copilot* ## v7.26.7 -- [46bd6a8](https://github.com/AxaFrance/oidc-client/commit/46bd6a89b803ca9c2c9aedf0a0fa1d73d229b995) - docs: clarify that allowMultiTabLogin requires OIDC fetch wrapper for API calls (#1643) (release), 2026-02-21 by *Copilot* -- [f35ae01](https://github.com/AxaFrance/oidc-client/commit/f35ae0174664ea8abcc6c79b608958d0b2164636) - Fix `useOidcUser` stuck in Loading state after reloadOidcUser() (#1642), 2026-02-21 by *Copilot* +- [46bd6a89](https://github.com/AxaFrance/oidc-client/commit/46bd6a89b803ca9c2c9aedf0a0fa1d73d229b995) - docs: clarify that allowMultiTabLogin requires OIDC fetch wrapper for API calls (#1643) (release), 2026-02-21 by *Copilot* +- [f35ae017](https://github.com/AxaFrance/oidc-client/commit/f35ae0174664ea8abcc6c79b608958d0b2164636) - Fix `useOidcUser` stuck in Loading state after reloadOidcUser() (#1642), 2026-02-21 by *Copilot* ## v7.26.6 -- [46d7460](https://github.com/AxaFrance/oidc-client/commit/46d746024d7420f8386f18217c77ff5bc6ccc83e) - Fix null extras values being encoded as literal "null" string in query params (#1640) (release), 2026-02-21 by *Copilot* +- [46d74602](https://github.com/AxaFrance/oidc-client/commit/46d746024d7420f8386f18217c77ff5bc6ccc83e) - Fix null extras values being encoded as literal "null" string in query params (#1640) (release), 2026-02-21 by *Copilot* ## v7.26.5 -- [da37c1c](https://github.com/AxaFrance/oidc-client/commit/da37c1c29b79d20abc8aeeca17a18155f4274a7e) - fix(react-oidc): remove dangling `setLoading` call in OidcProvider (#1639) (release), 2026-02-21 by *Copilot* +- [da37c1c2](https://github.com/AxaFrance/oidc-client/commit/da37c1c29b79d20abc8aeeca17a18155f4274a7e) - fix(react-oidc): remove dangling `setLoading` call in OidcProvider (#1639) (release), 2026-02-21 by *Copilot* ## v7.26.4 -- [9a44940](https://github.com/AxaFrance/oidc-client/commit/9a44940d0f65255618d7727d7033afa1dbab7239) - fix(oidc-client): sw with safari 17 (#1636) (release), 2026-02-12 by *Guillaume Chervet* +- [9a44940d](https://github.com/AxaFrance/oidc-client/commit/9a44940d0f65255618d7727d7033afa1dbab7239) - fix(oidc-client): sw with safari 17 (#1636) (release), 2026-02-12 by *Guillaume Chervet* ## v7.26.3 @@ -190,127 +198,122 @@ ## v7.26.1 -- [49975e2](https://github.com/AxaFrance/oidc-client/commit/49975e24a7dd49d7dd6ddcc86da4ea47d74cac98) - refactor(all): update libraries (release) (#1633), 2026-01-28 by *Guillaume Chervet* -- [2bb456e](https://github.com/AxaFrance/oidc-client/commit/2bb456ed057131748d2ff26169f166ffcd7e618b) - fix: do not handle all requests (#1625) (alpha), 2025-11-24 by *Andreas Adam* +- [49975e24](https://github.com/AxaFrance/oidc-client/commit/49975e24a7dd49d7dd6ddcc86da4ea47d74cac98) - refactor(all): update libraries (release) (#1633), 2026-01-28 by *Guillaume Chervet* +- [2bb456ed](https://github.com/AxaFrance/oidc-client/commit/2bb456ed057131748d2ff26169f166ffcd7e618b) - fix: do not handle all requests (#1625) (alpha), 2025-11-24 by *Andreas Adam* ## v7.26.0 -- [b9656c2](https://github.com/AxaFrance/oidc-client/commit/b9656c2559993efe94a121c442000969b1eaba2b) - feat(react-oidc): enforce uniqueness of redirect_uri and silent_redirect_uri (#1606) (release), 2025-09-17 by *Jean-Marc Rakotoarisoa* -- [960a694](https://github.com/AxaFrance/oidc-client/commit/960a69472b75e12490025ee3b46d15643c0e35a6) - fix(oidc-client): Clear userInfo in storage in clearAsync function (#1603), 2025-09-17 by *Mérill Téterel* +- [b9656c25](https://github.com/AxaFrance/oidc-client/commit/b9656c2559993efe94a121c442000969b1eaba2b) - feat(react-oidc): enforce uniqueness of redirect_uri and silent_redirect_uri (#1606) (release), 2025-09-17 by *Jean-Marc Rakotoarisoa* +- [960a6947](https://github.com/AxaFrance/oidc-client/commit/960a69472b75e12490025ee3b46d15643c0e35a6) - fix(oidc-client): Clear userInfo in storage in clearAsync function (#1603), 2025-09-17 by *Mérill Téterel* ## v7.25.16 -- [c79907b](https://github.com/AxaFrance/oidc-client/commit/c79907b63af69352ed660e97d9e61265bc155131) - fix(oidc-client): renew token silent login (release) (#1598), 2025-09-04 by *Guillaume Chervet* +- [c79907b6](https://github.com/AxaFrance/oidc-client/commit/c79907b63af69352ed660e97d9e61265bc155131) - fix(oidc-client): renew token silent login (release) (#1598), 2025-09-04 by *Guillaume Chervet* ## v7.25.15 -- [f4ce35e](https://github.com/AxaFrance/oidc-client/commit/f4ce35e4e272de9e4f4387494877bab5939fa1a9) - fix(oidc-client): implement consistent storage caching for userInfo and well-known configuration (release) (#1592), 2025-09-02 by *Michael Sverdlov* +- [f4ce35e4](https://github.com/AxaFrance/oidc-client/commit/f4ce35e4e272de9e4f4387494877bab5939fa1a9) - fix(oidc-client): implement consistent storage caching for userInfo and well-known configuration (release) (#1592), 2025-09-02 by *Michael Sverdlov* ## v7.25.14 -- [f5b86ff](https://github.com/AxaFrance/oidc-client/commit/f5b86ffe656845c26b6f7bcf88da43cf8ece173e) - fix(renewTokens): prevent infinite loop on renew token flow (#1581) (release), 2025-08-02 by *Matheus Frigo* +- [f5b86ffe](https://github.com/AxaFrance/oidc-client/commit/f5b86ffe656845c26b6f7bcf88da43cf8ece173e) - fix(renewTokens): prevent infinite loop on renew token flow (#1581) (release), 2025-08-02 by *Matheus Frigo* ## v7.25.13 -- [31661bc](https://github.com/AxaFrance/oidc-client/commit/31661bc16d67866b6e8d5b978b117600b769fe28) - refcator(all): update dependencies (#1567) (release), 2025-05-05 by *Guillaume Chervet* +- [31661bc1](https://github.com/AxaFrance/oidc-client/commit/31661bc16d67866b6e8d5b978b117600b769fe28) - refcator(all): update dependencies (#1567) (release), 2025-05-05 by *Guillaume Chervet* ## v7.25.12 -- [f19cca8](https://github.com/AxaFrance/oidc-client/commit/f19cca8c4a0aa24f5646e13c80610148037e3bad) - fix(oidc-service-worker): stream already consumed (#1558) (release), 2025-04-30 by *Guillaume Chervet* +- [f19cca8c](https://github.com/AxaFrance/oidc-client/commit/f19cca8c4a0aa24f5646e13c80610148037e3bad) - fix(oidc-service-worker): stream already consumed (#1558) (release), 2025-04-30 by *Guillaume Chervet* ## v7.25.11 -- [e5e958a](https://github.com/AxaFrance/oidc-client/commit/e5e958a34f39ab349b34e094bc17f5df3b49b8f9) - fix(oidc-service-worker): missing body (#1556) (release), 2025-04-29 by *Guillaume Chervet* +- [e5e958a3](https://github.com/AxaFrance/oidc-client/commit/e5e958a34f39ab349b34e094bc17f5df3b49b8f9) - fix(oidc-service-worker): missing body (#1556) (release), 2025-04-29 by *Guillaume Chervet* ## v7.25.10 -- [dbb52da](https://github.com/AxaFrance/oidc-client/commit/dbb52dad456d2429d21fd5a645ff27d6b21e056a) - fix(serviceworker): ios (#1554) (release), 2025-04-24 by *Guillaume Chervet* -- [f2f447e](https://github.com/AxaFrance/oidc-client/commit/f2f447e34805822387281126b93ec39153fb5672) - refactor(all): updates libraries, 2025-04-14 by *Guillaume Chervet* +- [dbb52dad](https://github.com/AxaFrance/oidc-client/commit/dbb52dad456d2429d21fd5a645ff27d6b21e056a) - fix(serviceworker): ios (#1554) (release), 2025-04-24 by *Guillaume Chervet* +- [f2f447e3](https://github.com/AxaFrance/oidc-client/commit/f2f447e34805822387281126b93ec39153fb5672) - refactor(all): updates libraries, 2025-04-14 by *Guillaume Chervet* ## v7.25.9 -- [c1ece66](https://github.com/AxaFrance/oidc-client/commit/c1ece663131db50a8c1152b18be0d3d5f6a0025e) - fix(oidc): make bearer fetch works on safari back (release) (#1550), 2025-04-11 by *Guillaume Chervet* +- [c1ece663](https://github.com/AxaFrance/oidc-client/commit/c1ece663131db50a8c1152b18be0d3d5f6a0025e) - fix(oidc): make bearer fetch works on safari back (release) (#1550), 2025-04-11 by *Guillaume Chervet* ## v7.25.8 -- [4c85da7](https://github.com/AxaFrance/oidc-client/commit/4c85da7d0e0e802c95efe31c5de948ac5abd5494) - fix(oidc-service-worker): Error with latest Safari (#1547) (release), 2025-04-04 by *Guillaume Chervet* +- [4c85da7d](https://github.com/AxaFrance/oidc-client/commit/4c85da7d0e0e802c95efe31c5de948ac5abd5494) - fix(oidc-service-worker): Error with latest Safari (#1547) (release), 2025-04-04 by *Guillaume Chervet* ## v7.25.7 -- [930ad03](https://github.com/AxaFrance/oidc-client/commit/930ad0367cfcaa5bd15726c17501d70b0768ce5e) - fix(oidc-service-worker): fetch already consume (release) (#1534), 2025-04-01 by *Guillaume Chervet* +- [930ad036](https://github.com/AxaFrance/oidc-client/commit/930ad0367cfcaa5bd15726c17501d70b0768ce5e) - fix(oidc-service-worker): fetch already consume (release) (#1534), 2025-04-01 by *Guillaume Chervet* ## v7.25.6 -- [2cb8cde](https://github.com/AxaFrance/oidc-client/commit/2cb8cdeafdb39fadc19beb878808a5d2291cd6fa) - fix(oidc): multi-tab dpop not working with (#1531) (release), 2025-03-28 by *Guillaume Chervet* +- [2cb8cdea](https://github.com/AxaFrance/oidc-client/commit/2cb8cdeafdb39fadc19beb878808a5d2291cd6fa) - fix(oidc): multi-tab dpop not working with (#1531) (release), 2025-03-28 by *Guillaume Chervet* ## v7.25.5 -- [d7567ba](https://github.com/AxaFrance/oidc-client/commit/d7567ba28c0dfe9b248be52ecfac4df6f98b397b) - feature(oidc-service-worker): multi tab auth (#1528) (release), 2025-03-27 by *Guillaume Chervet* +- [d7567ba2](https://github.com/AxaFrance/oidc-client/commit/d7567ba28c0dfe9b248be52ecfac4df6f98b397b) - feature(oidc-service-worker): multi tab auth (#1528) (release), 2025-03-27 by *Guillaume Chervet* ## v7.25.4 -- [1b2fa1d](https://github.com/AxaFrance/oidc-client/commit/1b2fa1da513b419c2c28e67a331d12670b07a94d) - refactor(oidc): update librairie (release), 2025-03-25 by *Guillaume Chervet* +- [1b2fa1da](https://github.com/AxaFrance/oidc-client/commit/1b2fa1da513b419c2c28e67a331d12670b07a94d) - refactor(oidc): update librairie (release), 2025-03-25 by *Guillaume Chervet* ## v7.25.3 -- [ca0f064](https://github.com/AxaFrance/oidc-client/commit/ca0f0645c52dd827b97912d5ee6f1836e05f56e1) - fix(oidc): lost session back (release) (#1514), 2025-02-06 by *Guillaume Chervet* +- [ca0f0645](https://github.com/AxaFrance/oidc-client/commit/ca0f0645c52dd827b97912d5ee6f1836e05f56e1) - fix(oidc): lost session back (release) (#1514), 2025-02-06 by *Guillaume Chervet* ## v7.25.2 -- [15900f4](https://github.com/AxaFrance/oidc-client/commit/15900f42e42539a5b12a4c23959ec95c695426d9) - fix(oidc): MonitorSession/CheckSession initializes only on one tab (release) (#1513), 2025-02-05 by *Guillaume Chervet* +- [15900f42](https://github.com/AxaFrance/oidc-client/commit/15900f42e42539a5b12a4c23959ec95c695426d9) - fix(oidc): MonitorSession/CheckSession initializes only on one tab (release) (#1513), 2025-02-05 by *Guillaume Chervet* ## v7.25.1 -- [f0641a6](https://github.com/AxaFrance/oidc-client/commit/f0641a6ff21a7cf600ee5e782a3e3114b462551c) - fix(oidc): remove use of localStorage for cache (release), 2025-02-05 by *Guillaume Chervet* +- [f0641a6f](https://github.com/AxaFrance/oidc-client/commit/f0641a6ff21a7cf600ee5e782a3e3114b462551c) - fix(oidc): remove use of localStorage for cache (release), 2025-02-05 by *Guillaume Chervet* ## v7.25.0 -- [07754f5](https://github.com/AxaFrance/oidc-client/commit/07754f5643cbe21e6e6eb248b8a6398bd0de2fd7) - fix(oidc): refresh silent signin scope=null (release) (#1503), 2025-01-24 by *Guillaume Chervet* -- [2c08373](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* +- [07754f56](https://github.com/AxaFrance/oidc-client/commit/07754f5643cbe21e6e6eb248b8a6398bd0de2fd7) - fix(oidc): refresh silent signin scope=null (release) (#1503), 2025-01-24 by *Guillaume Chervet* +- [2c083735](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* ## v7.24.1 -- [3fe0511](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* +- [3fe05117](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* ## v7.24.0 -- [de5da36](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* +- [de5da362](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* ## v7.23.1 -- [0f69a11](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* +- [0f69a114](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* ## v7.23.0 -- [30fda23](https://github.com/AxaFrance/oidc-client/commit/30fda231324b18bb026de30e537e0bce7cc3bbc1) - feat(oidc-react): add missing scope property in login route (release), 2024-11-22 by *Guillaume Chervet* -- [4d77aae](https://github.com/AxaFrance/oidc-client/commit/4d77aae5ec4564f1866ebc9ba5e9f2ad1bd51b63) - fix(oidc): dpop typo (#1482), 2024-11-08 by *Guillaume Chervet* -- [08a21f8](https://github.com/AxaFrance/oidc-client/commit/08a21f89842f1aa8123bfd1eea046a8f1d4a8e96) - fix(demo): better demo (#1480), 2024-11-05 by *Guillaume Chervet* - - -## v7.22.32 - -- [3f885fc](https://github.com/AxaFrance/oidc-client/commit/3f885fc158ded05ea37b9d7925bd801b63321231) - fix(oidc): remove console.log (release), 2024-10-04 by *Guillaume Chervet* +- [30fda231](https://github.com/AxaFrance/oidc-client/commit/30fda231324b18bb026de30e537e0bce7cc3bbc1) - feat(oidc-react): add missing scope property in login route (release), 2024-11-22 by *Guillaume Chervet* +- [4d77aae5](https://github.com/AxaFrance/oidc-client/commit/4d77aae5ec4564f1866ebc9ba5e9f2ad1bd51b63) - fix(oidc): dpop typo (#1482), 2024-11-08 by *Guillaume Chervet* +- [08a21f89](https://github.com/AxaFrance/oidc-client/commit/08a21f89842f1aa8123bfd1eea046a8f1d4a8e96) - fix(demo): better demo (#1480), 2024-11-05 by *Guillaume Chervet* From 9e1a60f6b54226e12adff103ce07557a1c79c08e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 5 Aug 2026 10:47:46 +0200 Subject: [PATCH 539/565] fix(ci): publish npm (release) --- .github/workflows/npm-publish.yml | 357 ++++++++++++++++++++++-------- 1 file changed, 265 insertions(+), 92 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 8a97ffe58..962c85b4b 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -20,6 +20,7 @@ jobs: - id: check uses: Legorooj/skip-ci@main tests: + needs: skip_ci runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && github.event.pull_request.head.repo.fork steps: @@ -31,7 +32,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - run_install: false + run_install: false - name: pnpm i run: pnpm i --frozen-lockfile @@ -54,6 +55,7 @@ jobs: working-directory: ./packages/oidc-client build: + needs: skip_ci permissions: contents: write environment: react-oidc @@ -69,7 +71,7 @@ jobs: run: | git config --global user.name "github-actions[bot]" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - + - name: Determine Alpha, Beta or Release id: which_tag run: | @@ -90,13 +92,14 @@ jobs: echo "tag=release" >> $GITHUB_OUTPUT fi - - name: Bump version and push tag + - name: Compute release version id: tag_release if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' uses: mathieudutour/github-tag-action@v6.0 with: github_token: ${{ secrets.GIT_TOKEN }} - - name: Bump version and push tag + dry_run: true + - name: Compute prerelease version id: tag_version if: steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' uses: mathieudutour/github-tag-action@v6.0 @@ -106,13 +109,21 @@ jobs: - name: Compute new version number to publish id: tag if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash run: | + set -euo pipefail + if [[ '${{ steps.which_tag.outputs.tag }}' == 'release' ]]; then - version=${{ steps.tag_release.outputs.new_version }} + version="${{ steps.tag_release.outputs.new_version }}" else - version=${{ steps.tag_version.outputs.new_version }} + version="${{ steps.tag_version.outputs.new_version }}" fi - + + if [[ -z "$version" ]]; then + echo "::error::Unable to compute the package version to publish." + exit 1 + fi + if [[ '${{ steps.which_tag.outputs.tag }}' = 'release' ]]; then echo "new_version=$version" >> $GITHUB_OUTPUT fi @@ -122,7 +133,7 @@ jobs: if [[ '${{ steps.which_tag.outputs.tag }}' = 'beta' ]]; then echo "new_version=$version-beta.${{ github.run_number }}" >> $GITHUB_OUTPUT fi - + - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} @@ -130,21 +141,39 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - run_install: false - - # oidc-client-service-worker - - name: pnpm version ${{ steps.tag.outputs.new_version }} - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: pnpm version ${{ steps.tag.outputs.new_version }} - working-directory: ./packages/oidc-client-service-worker - - - name: update version.ts ${{ steps.tag.outputs.new_version }} + run_install: false + + - name: Update package versions to ${{ steps.tag.outputs.new_version }} if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash run: | - echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts - working-directory: ./packages/oidc-client-service-worker/src - + set -euo pipefail + + version="${{ steps.tag.outputs.new_version }}" + if [[ -z "$version" ]]; then + echo "::error::No version has been computed for publication." + exit 1 + fi + package_dirs=( + "packages/oidc-client-service-worker" + "packages/oidc-client" + "packages/react-oidc" + ) + + for package_dir in "${package_dirs[@]}"; do + echo "Updating $package_dir to $version" + ( + cd "$package_dir" + npm version "$version" --no-git-tag-version --allow-same-version + ) + done + + printf "export default '%s';\n" "$version" > packages/oidc-client-service-worker/src/version.ts + printf "export default '%s';\n" "$version" > packages/oidc-client/src/version.ts + + + # oidc-client-service-worker - name: pnpm ci run: pnpm i --frozen-lockfile working-directory: ./packages/oidc-client-service-worker @@ -152,26 +181,12 @@ jobs: - name: pnpm prepare run: pnpm run prepare working-directory: ./packages/oidc-client-service-worker - + - name: pnpm test run: pnpm test -- --run working-directory: ./packages/oidc-client-service-worker - + # oidc-client - - name: pnpm version ${{ steps.tag.outputs.new_version }} - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: | - set -e - pnpm version ${{ steps.tag.outputs.new_version }} || true - cat package.json - working-directory: ./packages/oidc-client - - - name: update version.ts ${{ steps.tag.outputs.new_version }} - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: | - echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts - working-directory: ./packages/oidc-client/src - - name: pnpm ci run: pnpm i --frozen-lockfile working-directory: ./packages/oidc-client @@ -179,16 +194,12 @@ jobs: - name: pnpm prepare run: pnpm run prepare working-directory: ./packages/oidc-client - + + - name: pnpm test + run: pnpm test -- --run + working-directory: ./packages/oidc-client + # React-oidc - - name: pnpm version ${{ steps.tag.outputs.new_version }} - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - run: | - set -e - pnpm version ${{ steps.tag.outputs.new_version }} || true - cat package.json - working-directory: ./packages/react-oidc - - name: pnpm i run: pnpm i --frozen-lockfile working-directory: ./packages/react-oidc @@ -200,74 +211,236 @@ jobs: - name: pnpm test run: pnpm test -- --run working-directory: ./packages/react-oidc - - # oidc-client-service-worker - - id: publish-oidc-client-service-worker - uses: JS-DevTools/npm-publish@v1 - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - with: - token: ${{ secrets.NPM_TOKEN }} - package: ./packages/oidc-client-service-worker/package.json - # oidc-client - - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} + - name: Prepare package manifests for npm publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash + env: + EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} run: | - sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json - cat package.json - working-directory: ./packages/oidc-client - - - id: publish-oidc-client - uses: JS-DevTools/npm-publish@v1 - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - with: - token: ${{ secrets.NPM_TOKEN }} - package: ./packages/oidc-client/package.json + set -euo pipefail + + node <<'NODE' + const fs = require('node:fs'); + + const expectedVersion = process.env.EXPECTED_VERSION; + const packageDependencyUpdates = [ + { + path: 'packages/oidc-client/package.json', + dependencies: ['@axa-fr/oidc-client-service-worker'], + }, + { + path: 'packages/react-oidc/package.json', + dependencies: ['@axa-fr/oidc-client', '@axa-fr/oidc-client-service-worker'], + }, + ]; + + for (const { path, dependencies } of packageDependencyUpdates) { + const packageJson = JSON.parse(fs.readFileSync(path, 'utf8')); + + for (const dependencyName of dependencies) { + if (!packageJson.dependencies?.[dependencyName]) { + console.error(`${packageJson.name} is missing dependency ${dependencyName}.`); + process.exit(1); + } + + packageJson.dependencies[dependencyName] = expectedVersion; + } + + fs.writeFileSync(path, `${JSON.stringify(packageJson, null, 2)}\n`); + } + NODE - - name: replace ${{ steps.tag.outputs.new_version }} by workspace:* + - name: Verify package versions before publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash + env: + EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} run: | - sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json - cat package.json - working-directory: ./packages/oidc-client - - # react-oidc - - name: replace workspace:* by ${{ steps.tag.outputs.new_version }} + set -euo pipefail + + node <<'NODE' + const fs = require('node:fs'); + + const expectedVersion = process.env.EXPECTED_VERSION; + const packagePaths = [ + 'packages/oidc-client-service-worker/package.json', + 'packages/oidc-client/package.json', + 'packages/react-oidc/package.json', + ]; + + let hasError = false; + + for (const packagePath of packagePaths) { + const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + + if (packageJson.version !== expectedVersion) { + console.error(`${packageJson.name} has version ${packageJson.version}, expected ${expectedVersion}.`); + hasError = true; + } + + const workspaceDependencies = Object.entries(packageJson.dependencies ?? {}) + .filter(([, version]) => version === 'workspace:*') + .map(([dependencyName]) => dependencyName); + + if (workspaceDependencies.length > 0) { + console.error(`${packageJson.name} still contains workspace dependencies: ${workspaceDependencies.join(', ')}.`); + hasError = true; + } + } + + if (hasError) { + process.exit(1); + } + NODE + + - name: Publish packages to npm + id: npm_publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash + env: + EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | - sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json - cat package.json - working-directory: ./packages/react-oidc - - - id: publish-react - uses: JS-DevTools/npm-publish@v1 + set -euo pipefail + + if [[ -z "${NODE_AUTH_TOKEN}" ]]; then + echo "::error::NPM_TOKEN is required to publish packages." + exit 1 + fi + + printf '//registry.npmjs.org/:_authToken=%s\n' "${NODE_AUTH_TOKEN}" > ~/.npmrc + chmod 0600 ~/.npmrc + + package_dirs=( + "packages/oidc-client-service-worker" + "packages/oidc-client" + "packages/react-oidc" + ) + package_names=( + "@axa-fr/oidc-client-service-worker" + "@axa-fr/oidc-client" + "@axa-fr/react-oidc" + ) + + publish_tag="${{ steps.which_tag.outputs.tag }}" + if [[ "$publish_tag" == "release" ]]; then + publish_tag="latest" + fi + + published_count=0 + + for index in "${!package_dirs[@]}"; do + package_dir="${package_dirs[$index]}" + package_name="${package_names[$index]}" + + if npm view "${package_name}@${EXPECTED_VERSION}" version --registry=https://registry.npmjs.org/ >/dev/null 2>&1; then + echo "${package_name}@${EXPECTED_VERSION} already exists on npm; skipping publish." + continue + fi + + npm publish "$package_dir" --access public --tag "$publish_tag" --registry=https://registry.npmjs.org/ + published_count=$((published_count + 1)) + done + + if [[ "$published_count" -eq 0 ]]; then + echo "::error::No expected package was published." + exit 1 + fi + + echo "published_count=$published_count" >> "$GITHUB_OUTPUT" + + - name: Verify npm packages after publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' - with: - token: ${{ secrets.NPM_TOKEN }} - package: ./packages/react-oidc/package.json - - - name: replace ${{ steps.tag.outputs.new_version }} by workspace:* + shell: bash + env: + EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} + run: | + set -euo pipefail + + package_names=( + "@axa-fr/oidc-client-service-worker" + "@axa-fr/oidc-client" + "@axa-fr/react-oidc" + ) + + for package_name in "${package_names[@]}"; do + published_version="" + + for attempt in {1..6}; do + if published_version=$(npm view "${package_name}@${EXPECTED_VERSION}" version --registry=https://registry.npmjs.org/ 2>/dev/null) && [[ "$published_version" == "$EXPECTED_VERSION" ]]; then + break + fi + + echo "Waiting for ${package_name}@${EXPECTED_VERSION} to be available on npm (attempt ${attempt}/6)." + sleep 10 + done + + if [[ "$published_version" != "$EXPECTED_VERSION" ]]; then + echo "::error::${package_name}@${EXPECTED_VERSION} was not found on npm after publication." + exit 1 + fi + done + + - name: Restore workspace dependencies after publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + shell: bash run: | - sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json - sed -i 's/"@axa-fr\/oidc-client": "[^"]*"/"@axa-fr\/oidc-client": "workspace:*"/g' package.json - cat package.json - working-directory: ./packages/react-oidc - - - name: Commit and push + set -euo pipefail + + node <<'NODE' + const fs = require('node:fs'); + + const packageDependencyUpdates = [ + { + path: 'packages/oidc-client/package.json', + dependencies: ['@axa-fr/oidc-client-service-worker'], + }, + { + path: 'packages/react-oidc/package.json', + dependencies: ['@axa-fr/oidc-client', '@axa-fr/oidc-client-service-worker'], + }, + ]; + + for (const { path, dependencies } of packageDependencyUpdates) { + const packageJson = JSON.parse(fs.readFileSync(path, 'utf8')); + + for (const dependencyName of dependencies) { + if (!packageJson.dependencies?.[dependencyName]) { + console.error(`${packageJson.name} is missing dependency ${dependencyName}.`); + process.exit(1); + } + + packageJson.dependencies[dependencyName] = 'workspace:*'; + } + + fs.writeFileSync(path, `${JSON.stringify(packageJson, null, 2)}\n`); + } + NODE + + - name: Commit, tag and push release if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release' + shell: bash run: | + set -euo pipefail + + release_tag="${{ steps.tag_release.outputs.new_tag }}" + if [[ -z "$release_tag" ]]; then + echo "::error::No release tag has been computed." + exit 1 + fi + git add . git commit -m "[skip ci] Update to version ${{ steps.tag.outputs.new_version }} in package.json" - git tag ${{ steps.tag.outputs.new_version }} + git tag "$release_tag" git push --set-upstream origin "HEAD:main" --follow-tags -f chmod +x ./bin/generate-changelog.sh ./bin/generate-changelog.sh - git add . + git add CHANGELOG.md git commit -m "[skip ci] Generate changelog to version ${{ steps.tag.outputs.new_version }}" git push --set-upstream origin "HEAD:main" --follow-tags -f - + # - name: SonarCloud Scan # uses: sonarsource/sonarcloud-github-action@master # if: github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.head.repo.fork From 61edf77f448db74aac2c709e7bb82eeb4752f88f Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 5 Aug 2026 10:53:05 +0200 Subject: [PATCH 540/565] fix(ci): publish npm (release) --- .github/workflows/npm-publish.yml | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 962c85b4b..a7c671599 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -155,19 +155,25 @@ jobs: exit 1 fi - package_dirs=( - "packages/oidc-client-service-worker" - "packages/oidc-client" - "packages/react-oidc" - ) + EXPECTED_VERSION="$version" node <<'NODE' + const fs = require('node:fs'); - for package_dir in "${package_dirs[@]}"; do - echo "Updating $package_dir to $version" - ( - cd "$package_dir" - npm version "$version" --no-git-tag-version --allow-same-version - ) - done + const expectedVersion = process.env.EXPECTED_VERSION; + const packageDirs = [ + 'packages/oidc-client-service-worker', + 'packages/oidc-client', + 'packages/react-oidc', + ]; + + for (const packageDir of packageDirs) { + console.log(`Updating ${packageDir} to ${expectedVersion}`); + + const packageJsonPath = `${packageDir}/package.json`; + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + packageJson.version = expectedVersion; + fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`); + } + NODE printf "export default '%s';\n" "$version" > packages/oidc-client-service-worker/src/version.ts printf "export default '%s';\n" "$version" > packages/oidc-client/src/version.ts From aff49c355c178d7fd54386d357e8f60e90a4b3ae Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 5 Aug 2026 11:01:23 +0200 Subject: [PATCH 541/565] fix(ci): publish npm (release) --- .github/workflows/npm-publish.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index a7c671599..abc82e35d 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -338,14 +338,20 @@ jobs: for index in "${!package_dirs[@]}"; do package_dir="${package_dirs[$index]}" + package_path="./${package_dir}" package_name="${package_names[$index]}" + if [[ ! -d "$package_path" ]]; then + echo "::error::Package directory $package_path does not exist." + exit 1 + fi + if npm view "${package_name}@${EXPECTED_VERSION}" version --registry=https://registry.npmjs.org/ >/dev/null 2>&1; then echo "${package_name}@${EXPECTED_VERSION} already exists on npm; skipping publish." continue fi - npm publish "$package_dir" --access public --tag "$publish_tag" --registry=https://registry.npmjs.org/ + npm publish "$package_path" --access public --tag "$publish_tag" --registry=https://registry.npmjs.org/ published_count=$((published_count + 1)) done From 6a0b8511bef2b33082ebdc5c77b855190e9d2064 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 5 Aug 2026 11:16:17 +0200 Subject: [PATCH 542/565] fix(ci): npm publish (release) --- .github/workflows/npm-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index abc82e35d..a92cbd5e4 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -351,7 +351,7 @@ jobs: continue fi - npm publish "$package_path" --access public --tag "$publish_tag" --registry=https://registry.npmjs.org/ + npm publish "$package_path" --access public --tag "$publish_tag" --registry=https://registry.npmjs.org/ --ignore-scripts published_count=$((published_count + 1)) done From e880d47ad37194d21e80897d343eabd08ff66625 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 5 Aug 2026 11:41:51 +0200 Subject: [PATCH 543/565] fix(ci): publish npm (release) --- .github/workflows/npm-publish.yml | 121 +++++++++++++++++++++++------- packages/oidc-client/package.json | 2 +- packages/react-oidc/package.json | 2 +- 3 files changed, 96 insertions(+), 29 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index a92cbd5e4..289186811 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -228,23 +228,40 @@ jobs: node <<'NODE' const fs = require('node:fs'); + const path = require('node:path'); const expectedVersion = process.env.EXPECTED_VERSION; - const packageDependencyUpdates = [ - { - path: 'packages/oidc-client/package.json', - dependencies: ['@axa-fr/oidc-client-service-worker'], - }, - { - path: 'packages/react-oidc/package.json', - dependencies: ['@axa-fr/oidc-client', '@axa-fr/oidc-client-service-worker'], - }, + const lifecycleScriptBackupPath = path.join( + process.env.RUNNER_TEMP ?? process.cwd(), + 'npm-publish-lifecycle-scripts.json', + ); + const packagePaths = [ + 'packages/oidc-client-service-worker/package.json', + 'packages/oidc-client/package.json', + 'packages/react-oidc/package.json', ]; + const dependencyUpdates = { + 'packages/oidc-client/package.json': ['@axa-fr/oidc-client-service-worker'], + 'packages/react-oidc/package.json': [ + '@axa-fr/oidc-client', + '@axa-fr/oidc-client-service-worker', + ], + }; + const publishLifecycleScripts = [ + 'prepublishOnly', + 'prepack', + 'prepare', + 'postpack', + 'publish', + 'postpublish', + ]; + const lifecycleScriptBackup = {}; - for (const { path, dependencies } of packageDependencyUpdates) { - const packageJson = JSON.parse(fs.readFileSync(path, 'utf8')); + for (const packagePath of packagePaths) { + const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + lifecycleScriptBackup[packagePath] = packageJson.scripts ?? null; - for (const dependencyName of dependencies) { + for (const dependencyName of dependencyUpdates[packagePath] ?? []) { if (!packageJson.dependencies?.[dependencyName]) { console.error(`${packageJson.name} is missing dependency ${dependencyName}.`); process.exit(1); @@ -253,8 +270,18 @@ jobs: packageJson.dependencies[dependencyName] = expectedVersion; } - fs.writeFileSync(path, `${JSON.stringify(packageJson, null, 2)}\n`); + for (const scriptName of publishLifecycleScripts) { + delete packageJson.scripts?.[scriptName]; + } + + fs.writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`); } + + fs.mkdirSync(path.dirname(lifecycleScriptBackupPath), { recursive: true }); + fs.writeFileSync( + lifecycleScriptBackupPath, + `${JSON.stringify(lifecycleScriptBackup, null, 2)}\n`, + ); NODE - name: Verify package versions before publish @@ -288,11 +315,27 @@ jobs: const workspaceDependencies = Object.entries(packageJson.dependencies ?? {}) .filter(([, version]) => version === 'workspace:*') .map(([dependencyName]) => dependencyName); + const publishLifecycleScripts = [ + 'prepublishOnly', + 'prepack', + 'prepare', + 'postpack', + 'publish', + 'postpublish', + ]; + const lifecycleScripts = publishLifecycleScripts.filter( + scriptName => packageJson.scripts?.[scriptName], + ); if (workspaceDependencies.length > 0) { console.error(`${packageJson.name} still contains workspace dependencies: ${workspaceDependencies.join(', ')}.`); hasError = true; } + + if (lifecycleScripts.length > 0) { + console.error(`${packageJson.name} still contains publish lifecycle scripts: ${lifecycleScripts.join(', ')}.`); + hasError = true; + } } if (hasError) { @@ -394,7 +437,7 @@ jobs: fi done - - name: Restore workspace dependencies after publish + - name: Restore package manifests after publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' shell: bash run: | @@ -402,22 +445,38 @@ jobs: node <<'NODE' const fs = require('node:fs'); + const path = require('node:path'); - const packageDependencyUpdates = [ - { - path: 'packages/oidc-client/package.json', - dependencies: ['@axa-fr/oidc-client-service-worker'], - }, - { - path: 'packages/react-oidc/package.json', - dependencies: ['@axa-fr/oidc-client', '@axa-fr/oidc-client-service-worker'], - }, + const lifecycleScriptBackupPath = path.join( + process.env.RUNNER_TEMP ?? process.cwd(), + 'npm-publish-lifecycle-scripts.json', + ); + const packagePaths = [ + 'packages/oidc-client-service-worker/package.json', + 'packages/oidc-client/package.json', + 'packages/react-oidc/package.json', ]; + const dependencyUpdates = { + 'packages/oidc-client/package.json': ['@axa-fr/oidc-client-service-worker'], + 'packages/react-oidc/package.json': [ + '@axa-fr/oidc-client', + '@axa-fr/oidc-client-service-worker', + ], + }; + + if (!fs.existsSync(lifecycleScriptBackupPath)) { + console.error(`Lifecycle script backup does not exist: ${lifecycleScriptBackupPath}.`); + process.exit(1); + } - for (const { path, dependencies } of packageDependencyUpdates) { - const packageJson = JSON.parse(fs.readFileSync(path, 'utf8')); + const lifecycleScriptBackup = JSON.parse( + fs.readFileSync(lifecycleScriptBackupPath, 'utf8'), + ); - for (const dependencyName of dependencies) { + for (const packagePath of packagePaths) { + const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + + for (const dependencyName of dependencyUpdates[packagePath] ?? []) { if (!packageJson.dependencies?.[dependencyName]) { console.error(`${packageJson.name} is missing dependency ${dependencyName}.`); process.exit(1); @@ -426,8 +485,16 @@ jobs: packageJson.dependencies[dependencyName] = 'workspace:*'; } - fs.writeFileSync(path, `${JSON.stringify(packageJson, null, 2)}\n`); + if (lifecycleScriptBackup[packagePath] == null) { + delete packageJson.scripts; + } else { + packageJson.scripts = lifecycleScriptBackup[packagePath]; + } + + fs.writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`); } + + fs.rmSync(lifecycleScriptBackupPath, { force: true }); NODE - name: Commit, tag and push release diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6ce333e18..182a717b3 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.27.19", + "version": "7.29.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 2cd555694..fe713e89a 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.27.19", + "version": "7.29.0", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 6f83c67152871291723782192721f90386dcd140 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:43:35 +0000 Subject: [PATCH 544/565] [skip ci] Update to version 7.29.1 in package.json --- packages/oidc-client-service-worker/package.json | 3 +-- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 3 +-- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 3 +-- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 46f39f2d1..0580c1e85 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.0", + "version": "7.29.1", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", @@ -43,7 +43,6 @@ "test:watch": "vitest --coverage", "coverage": "vitest run --coverage", "clean": "rimraf dist", - "prepare": "pnpm run clean && pnpm run build", "lint": "eslint src" }, "devDependencies": { diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f4badc514..34a436e6c 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.0'; +export default '7.29.1'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 182a717b3..5a2b884b5 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.0", + "version": "7.29.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", @@ -50,7 +50,6 @@ "copy-service-worker": "cpy ./node_modules/@axa-fr/oidc-client-service-worker/dist/OidcTrustedDomains.js ./node_modules/@axa-fr/oidc-client-service-worker/dist/OidcServiceWorker.js ./dist", "build": "tsc && vite build", "test": "vitest --root . --coverage", - "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'" }, "license": "MIT", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f4badc514..34a436e6c 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.0'; +export default '7.29.1'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index fe713e89a..ad74a215f 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.0", + "version": "7.29.1", "private": false, "type": "module", "main": "./dist/index.umd.cjs", @@ -36,7 +36,6 @@ "test": "vitest --root . --coverage", "clean": "rimraf dist", "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'", - "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "lint": "eslint src" }, "dependencies": { From 8af7d30f1a70427626284826ee87d81d46f64685 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:43:37 +0000 Subject: [PATCH 545/565] [skip ci] Generate changelog to version 7.29.1 --- CHANGELOG.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 187741432..0156bd0e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,20 @@ # Changelog -## 7.29.0 - +## v7.29.1 + +- [6f83c671](https://github.com/AxaFrance/oidc-client/commit/6f83c67152871291723782192721f90386dcd140) - [skip ci] Update to version 7.29.1 in package.json, 2026-08-05 by *github-actions[bot]* +- [e880d47a](https://github.com/AxaFrance/oidc-client/commit/e880d47ad37194d21e80897d343eabd08ff66625) - fix(ci): publish npm (release), 2026-08-05 by *Guillaume Chervet* +- [6a0b8511](https://github.com/AxaFrance/oidc-client/commit/6a0b8511bef2b33082ebdc5c77b855190e9d2064) - fix(ci): npm publish (release), 2026-08-05 by *Guillaume Chervet* +- [aff49c35](https://github.com/AxaFrance/oidc-client/commit/aff49c355c178d7fd54386d357e8f60e90a4b3ae) - fix(ci): publish npm (release), 2026-08-05 by *Guillaume Chervet* +- [61edf77f](https://github.com/AxaFrance/oidc-client/commit/61edf77f448db74aac2c709e7bb82eeb4752f88f) - fix(ci): publish npm (release), 2026-08-05 by *Guillaume Chervet* +- [9e1a60f6](https://github.com/AxaFrance/oidc-client/commit/9e1a60f6b54226e12adff103ce07557a1c79c08e) - fix(ci): publish npm (release), 2026-08-05 by *Guillaume Chervet* +- [cf4b796e](https://github.com/AxaFrance/oidc-client/commit/cf4b796e9e1e6ae9d82e1b8d02e9acf03a48d9c5) - [skip ci] Generate changelog to version 7.29.0, 2026-07-31 by *github-actions[bot]* - [8207e25c](https://github.com/AxaFrance/oidc-client/commit/8207e25c892f63399522123ff01702337694b48a) - [skip ci] Update to version 7.29.0 in package.json, 2026-07-31 by *github-actions[bot]* +- [a0b3dbd7](https://github.com/AxaFrance/oidc-client/commit/a0b3dbd710ebc361e11d4abec364bc6f7fbd25df) - 7.29.0, 2026-07-31 by *github-actions[bot]* ## v7.29.0 -- [a0b3dbd7](https://github.com/AxaFrance/oidc-client/commit/a0b3dbd710ebc361e11d4abec364bc6f7fbd25df) - 7.29.0, 2026-07-31 by *github-actions[bot]* - [2d671ac9](https://github.com/AxaFrance/oidc-client/commit/2d671ac95a13a0effc1472e3fac0d4a32250fc2e) - feat(oidc-client): add typed-error (#1720) (release), 2026-07-31 by *Guillaume Chervet* - [ad25121d](https://github.com/AxaFrance/oidc-client/commit/ad25121d7164052890296eea064baaf267433c4d) - [skip ci] Generate changelog to version 7.28.2, 2026-07-30 by *github-actions[bot]* - [cdf423ef](https://github.com/AxaFrance/oidc-client/commit/cdf423ef7bbeccc3127055d1b9c401a5bfb5fa81) - [skip ci] Update to version 7.28.2 in package.json, 2026-07-30 by *github-actions[bot]* From b896d94843f37cee8f051790a02a25504367a968 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 1 Sep 2026 16:51:09 +0200 Subject: [PATCH 546/565] fix: publish now with npm OIDC (release) --- .github/workflows/npm-publish.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 289186811..5e03661a2 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -58,6 +58,7 @@ jobs: needs: skip_ci permissions: contents: write + id-token: write environment: react-oidc runs-on: ubuntu-latest if: needs.skip_ci.outputs.canSkip != 'true' && !github.event.pull_request.head.repo.fork @@ -137,6 +138,10 @@ jobs: - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} + registry-url: https://registry.npmjs.org/ + + - name: Install npm with trusted publishing support + run: npm install --global "npm@^11.5.1" - uses: pnpm/action-setup@v4 name: Install pnpm @@ -349,18 +354,9 @@ jobs: shell: bash env: EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | set -euo pipefail - if [[ -z "${NODE_AUTH_TOKEN}" ]]; then - echo "::error::NPM_TOKEN is required to publish packages." - exit 1 - fi - - printf '//registry.npmjs.org/:_authToken=%s\n' "${NODE_AUTH_TOKEN}" > ~/.npmrc - chmod 0600 ~/.npmrc - package_dirs=( "packages/oidc-client-service-worker" "packages/oidc-client" From afeeb194e2145491ec3598538b101b88488bd764 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 2 Sep 2026 10:03:28 +0200 Subject: [PATCH 547/565] fix: publish (release) --- .github/workflows/npm-publish.yml | 37 +++++++++++++++---- .../oidc-client-service-worker/package.json | 1 + packages/oidc-client/package.json | 1 + packages/react-oidc/package.json | 1 + 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 5e03661a2..9020c19d9 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -224,6 +224,7 @@ jobs: working-directory: ./packages/react-oidc - name: Prepare package manifests for npm publish + id: prepare_publish_manifests if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' shell: bash env: @@ -264,7 +265,13 @@ jobs: for (const packagePath of packagePaths) { const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); - lifecycleScriptBackup[packagePath] = packageJson.scripts ?? null; + + if (!packageJson.scripts?.prepare) { + console.error(`${packageJson.name} is missing the required prepare script.`); + process.exit(1); + } + + lifecycleScriptBackup[packagePath] = { ...packageJson.scripts }; for (const dependencyName of dependencyUpdates[packagePath] ?? []) { if (!packageJson.dependencies?.[dependencyName]) { @@ -434,7 +441,7 @@ jobs: done - name: Restore package manifests after publish - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + if: always() && steps.prepare_publish_manifests.outcome == 'success' shell: bash run: | set -euo pipefail @@ -471,6 +478,12 @@ jobs: for (const packagePath of packagePaths) { const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + const originalScripts = lifecycleScriptBackup[packagePath]; + + if (!originalScripts?.prepare) { + console.error(`${packageJson.name} has no prepare script in the lifecycle script backup.`); + process.exit(1); + } for (const dependencyName of dependencyUpdates[packagePath] ?? []) { if (!packageJson.dependencies?.[dependencyName]) { @@ -481,10 +494,15 @@ jobs: packageJson.dependencies[dependencyName] = 'workspace:*'; } - if (lifecycleScriptBackup[packagePath] == null) { - delete packageJson.scripts; - } else { - packageJson.scripts = lifecycleScriptBackup[packagePath]; + packageJson.scripts = originalScripts; + + const unRestoredDependencies = (dependencyUpdates[packagePath] ?? []).filter( + dependencyName => packageJson.dependencies?.[dependencyName] !== 'workspace:*', + ); + + if (!packageJson.scripts.prepare || unRestoredDependencies.length > 0) { + console.error(`${packageJson.name} was not restored to its workspace state.`); + process.exit(1); } fs.writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`); @@ -505,7 +523,12 @@ jobs: exit 1 fi - git add . + git add \ + packages/oidc-client-service-worker/package.json \ + packages/oidc-client-service-worker/src/version.ts \ + packages/oidc-client/package.json \ + packages/oidc-client/src/version.ts \ + packages/react-oidc/package.json git commit -m "[skip ci] Update to version ${{ steps.tag.outputs.new_version }} in package.json" git tag "$release_tag" git push --set-upstream origin "HEAD:main" --follow-tags -f diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 0580c1e85..eed9fead0 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -43,6 +43,7 @@ "test:watch": "vitest --coverage", "coverage": "vitest run --coverage", "clean": "rimraf dist", + "prepare": "pnpm run clean && pnpm run build", "lint": "eslint src" }, "devDependencies": { diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 5a2b884b5..eb53a53dd 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -50,6 +50,7 @@ "copy-service-worker": "cpy ./node_modules/@axa-fr/oidc-client-service-worker/dist/OidcTrustedDomains.js ./node_modules/@axa-fr/oidc-client-service-worker/dist/OidcServiceWorker.js ./dist", "build": "tsc && vite build", "test": "vitest --root . --coverage", + "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'" }, "license": "MIT", diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index ad74a215f..c918b96a8 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -36,6 +36,7 @@ "test": "vitest --root . --coverage", "clean": "rimraf dist", "postinstall": "echo 'WARNING keep sink OidcServiceWorker.js version file'", + "prepare": "pnpm run clean && pnpm run copy-service-worker && pnpm run build", "lint": "eslint src" }, "dependencies": { From 99eb8992664560757d3e5e2799057d0b69088e1e Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 2 Sep 2026 10:25:40 +0200 Subject: [PATCH 548/565] fix: npm publish (release) --- .github/workflows/npm-publish.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 9020c19d9..1ee0150bf 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -135,10 +135,11 @@ jobs: echo "new_version=$version-beta.${{ github.run_number }}" >> $GITHUB_OUTPUT fi - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7 with: node-version: ${{ env.NODE_VERSION }} registry-url: https://registry.npmjs.org/ + package-manager-cache: false - name: Install npm with trusted publishing support run: npm install --global "npm@^11.5.1" From 658d033f02de693c03cd07a9a9dbab1d694d14f4 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Wed, 2 Sep 2026 11:08:39 +0200 Subject: [PATCH 549/565] fix: publish npm (release) --- .github/workflows/npm-publish.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 1ee0150bf..dff156365 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -138,12 +138,28 @@ jobs: - uses: actions/setup-node@v7 with: node-version: ${{ env.NODE_VERSION }} - registry-url: https://registry.npmjs.org/ package-manager-cache: false - name: Install npm with trusted publishing support run: npm install --global "npm@^11.5.1" + - name: Verify npm trusted publishing prerequisites + shell: bash + run: | + set -euo pipefail + + npm --version + + if [[ -n "${NODE_AUTH_TOKEN:-}" ]]; then + echo "::error::NODE_AUTH_TOKEN must be unset for npm trusted publishing." + exit 1 + fi + + if [[ -z "${ACTIONS_ID_TOKEN_REQUEST_URL:-}" || -z "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]]; then + echo "::error::GitHub Actions did not expose the OIDC token request environment." + exit 1 + fi + - uses: pnpm/action-setup@v4 name: Install pnpm with: From 8e7d95fba420b1dc5515b2e9e7ccd1f5e08f6b6e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 10:02:42 +0000 Subject: [PATCH 550/565] [skip ci] Update to version 7.29.2 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index eed9fead0..92218547c 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.1", + "version": "7.29.2", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 34a436e6c..260ae531e 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.1'; +export default '7.29.2'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index eb53a53dd..3d379cc70 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.1", + "version": "7.29.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 34a436e6c..260ae531e 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.1'; +export default '7.29.2'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index c918b96a8..f9e63c694 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.1", + "version": "7.29.2", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 9325ced4f10433e3db00c273749989c08727dcfa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 10:02:44 +0000 Subject: [PATCH 551/565] [skip ci] Generate changelog to version 7.29.2 --- CHANGELOG.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0156bd0e1..ff02ad678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,17 @@ # Changelog +## v7.29.2 + +- [8e7d95fb](https://github.com/AxaFrance/oidc-client/commit/8e7d95fba420b1dc5515b2e9e7ccd1f5e08f6b6e) - [skip ci] Update to version 7.29.2 in package.json, 2026-09-02 by *github-actions[bot]* +- [658d033f](https://github.com/AxaFrance/oidc-client/commit/658d033f02de693c03cd07a9a9dbab1d694d14f4) - fix: publish npm (release), 2026-09-02 by *Guillaume Chervet* +- [99eb8992](https://github.com/AxaFrance/oidc-client/commit/99eb8992664560757d3e5e2799057d0b69088e1e) - fix: npm publish (release), 2026-09-02 by *Guillaume Chervet* +- [afeeb194](https://github.com/AxaFrance/oidc-client/commit/afeeb194e2145491ec3598538b101b88488bd764) - fix: publish (release), 2026-09-02 by *Guillaume Chervet* +- [b896d948](https://github.com/AxaFrance/oidc-client/commit/b896d94843f37cee8f051790a02a25504367a968) - fix: publish now with npm OIDC (release), 2026-09-01 by *Guillaume Chervet* + + ## v7.29.1 +- [8af7d30f](https://github.com/AxaFrance/oidc-client/commit/8af7d30f1a70427626284826ee87d81d46f64685) - [skip ci] Generate changelog to version 7.29.1, 2026-08-05 by *github-actions[bot]* - [6f83c671](https://github.com/AxaFrance/oidc-client/commit/6f83c67152871291723782192721f90386dcd140) - [skip ci] Update to version 7.29.1 in package.json, 2026-08-05 by *github-actions[bot]* - [e880d47a](https://github.com/AxaFrance/oidc-client/commit/e880d47ad37194d21e80897d343eabd08ff66625) - fix(ci): publish npm (release), 2026-08-05 by *Guillaume Chervet* - [6a0b8511](https://github.com/AxaFrance/oidc-client/commit/6a0b8511bef2b33082ebdc5c77b855190e9d2064) - fix(ci): npm publish (release), 2026-08-05 by *Guillaume Chervet* @@ -317,10 +327,3 @@ - [0f69a114](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* -## v7.23.0 - -- [30fda231](https://github.com/AxaFrance/oidc-client/commit/30fda231324b18bb026de30e537e0bce7cc3bbc1) - feat(oidc-react): add missing scope property in login route (release), 2024-11-22 by *Guillaume Chervet* -- [4d77aae5](https://github.com/AxaFrance/oidc-client/commit/4d77aae5ec4564f1866ebc9ba5e9f2ad1bd51b63) - fix(oidc): dpop typo (#1482), 2024-11-08 by *Guillaume Chervet* -- [08a21f89](https://github.com/AxaFrance/oidc-client/commit/08a21f89842f1aa8123bfd1eea046a8f1d4a8e96) - fix(demo): better demo (#1480), 2024-11-05 by *Guillaume Chervet* - - From f91327ff95a465cc8ab2ec635ef3147bb8eb59c4 Mon Sep 17 00:00:00 2001 From: Paul Martin <70586770+m4rtinpf@users.noreply.github.com> Date: Sun, 13 Sep 2026 04:41:29 -0300 Subject: [PATCH 552/565] fix(oidc): ignore bare trailing hash in getPath (release) (#1725) --- packages/oidc-client/src/route-utils.spec.ts | 1 + packages/oidc-client/src/route-utils.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/oidc-client/src/route-utils.spec.ts b/packages/oidc-client/src/route-utils.spec.ts index 2f41e3950..46434afbc 100644 --- a/packages/oidc-client/src/route-utils.spec.ts +++ b/packages/oidc-client/src/route-utils.spec.ts @@ -11,6 +11,7 @@ describe('Route test Suite', () => { ['capacitor://localhost/index.html', '/index.html'], ['capacitor://localhost/pathname#hash?search=test', '/pathname#hash'], ['http://example.com:3000/', ''], + ['https://example.com/authentication/callback?state=abc&code=def#', '/authentication/callback'], ])('getPath should return the full path of an url', (uri, expected) => { const path = getPath(uri); expect(path).toBe(expected); diff --git a/packages/oidc-client/src/route-utils.ts b/packages/oidc-client/src/route-utils.ts index e3d30897a..56d9c4bec 100644 --- a/packages/oidc-client/src/route-utils.ts +++ b/packages/oidc-client/src/route-utils.ts @@ -45,7 +45,7 @@ export const getPath = (href: string) => { } let { hash } = location; - if (hash === '#_=_') { + if (hash === '#' || hash === '#_=_') { hash = ''; } From eb0f40a1a5c4740be3ec13d4e83b716110bdd327 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Tue, 15 Sep 2026 17:27:07 +0200 Subject: [PATCH 553/565] chore(deps): update all pnpm workspace dependencies (#1727) (release) --- CONTRIBUTING.md | 9 +- examples/nextjs-demo/package.json | 6 +- examples/oidc-client-demo/package.json | 8 +- examples/oidc-client-demo/tsconfig.json | 5 +- examples/react-oidc-demo/package.json | 26 +- examples/react-oidc-demo/tsconfig.json | 7 +- package.json | 27 +- .../oidc-client-service-worker/package.json | 12 +- .../oidc-client-service-worker/tsconfig.json | 3 +- packages/oidc-client/package.json | 20 +- packages/oidc-client/tsconfig.json | 7 +- packages/react-oidc/package.json | 30 +- packages/react-oidc/tsconfig.json | 7 +- pnpm-lock.yaml | 2898 +++++++++-------- pnpm-workspace.yaml | 2 - tsconfig.base.json | 4 +- 16 files changed, 1562 insertions(+), 1509 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4cf779635..2231827a8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,13 @@ # Contributing to @axa-fr/oidc-client -First, ensure you have the [latest `pnpm`](https://pnpm.io/). +First, ensure you have Node.js 22.22.2+, 24.15.0+, or 26+ and the version of +[pnpm](https://pnpm.io/) specified in `package.json`. + +The workspace uses TypeScript 7 for the `tsc` command through the +`@typescript/native` npm alias. The `typescript` dependency aliases +`@typescript/typescript6` to provide the compiler API required by typescript-eslint +and vite-plugin-dts. This follows the +[TypeScript side-by-side setup](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/#running-side-by-side-with-typescript-6-0). To get started with the repository: diff --git a/examples/nextjs-demo/package.json b/examples/nextjs-demo/package.json index fac277dd8..e4c0b3ffe 100644 --- a/examples/nextjs-demo/package.json +++ b/examples/nextjs-demo/package.json @@ -8,9 +8,9 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "next": "^16.2.6", - "react": "^19.2.6", - "react-dom": "^19.2.6", + "next": "^16.3.5", + "react": "^19.3.0", + "react-dom": "^19.3.0", "styled-jsx": "^5.1.7" } } diff --git a/examples/oidc-client-demo/package.json b/examples/oidc-client-demo/package.json index da17b5e41..2a4eb2bad 100644 --- a/examples/oidc-client-demo/package.json +++ b/examples/oidc-client-demo/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@axa-fr/oidc-client": "workspace:~", - "typescript": "6.0.3", - "web-vitals": "5.2.0" + "typescript": "npm:@typescript/typescript6@6.0.2", + "web-vitals": "6.2.1" }, "scripts": { "start": "vite", @@ -27,8 +27,8 @@ ] }, "devDependencies": { - "@types/node": "25.8.0", + "@types/node": "26.5.1", "cross-env": "^10.1.0", - "vite": "8.0.13" + "vite": "8.3.0" } } diff --git a/examples/oidc-client-demo/tsconfig.json b/examples/oidc-client-demo/tsconfig.json index 133ea1227..4a009f409 100644 --- a/examples/oidc-client-demo/tsconfig.json +++ b/examples/oidc-client-demo/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "ES2019", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, @@ -10,8 +10,7 @@ "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "module": "esnext", - "moduleResolution": "node", - "ignoreDeprecations": "6.0", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, diff --git a/examples/react-oidc-demo/package.json b/examples/react-oidc-demo/package.json index 84d0a79b1..4fb96885a 100644 --- a/examples/react-oidc-demo/package.json +++ b/examples/react-oidc-demo/package.json @@ -20,24 +20,24 @@ }, "dependencies": { "@axa-fr/react-oidc": "workspace:*", - "react": "^19.2.6", - "react-dom": "^19.2.6", - "react-router-dom": "^7.15.1" + "react": "^19.3.0", + "react-dom": "^19.3.0", + "react-router-dom": "^7.18.3" }, "devDependencies": { - "@testing-library/jest-dom": "6.9.1", - "@testing-library/react": "16.3.2", - "@testing-library/user-event": "14.6.1", - "@types/react": "19.2.14", - "@vitejs/plugin-react": "6.0.2", + "@testing-library/jest-dom": "7.0.1", + "@testing-library/react": "16.3.3", + "@testing-library/user-event": "14.6.7", + "@types/react": "19.3.0", + "@vitejs/plugin-react": "6.1.1", "bootstrap": "^5.3.8", "copyfiles": "2.4.1", "cross-env": "^10.1.0", - "jsdom": "29.1.1", - "typescript": "6.0.3", - "vite": "8.0.13", - "vite-plugin-dts": "5.0.0", - "vitest": "4.1.6" + "jsdom": "30.0.1", + "typescript": "npm:@typescript/typescript6@6.0.2", + "vite": "8.3.0", + "vite-plugin-dts": "5.1.0", + "vitest": "5.0.0" }, "license": "MIT", "publishConfig": { diff --git a/examples/react-oidc-demo/tsconfig.json b/examples/react-oidc-demo/tsconfig.json index a7bee6859..393c2f9f2 100644 --- a/examples/react-oidc-demo/tsconfig.json +++ b/examples/react-oidc-demo/tsconfig.json @@ -3,9 +3,8 @@ "target": "ES2019", "lib": ["ES2021", "DOM"], "outDir": "dist", - "baseUrl": "./", "jsx": "react-jsx", - "module": "CommonJS", + "module": "ESNext", "declaration": true, "declarationMap": true, "sourceMap": true, @@ -15,13 +14,11 @@ "strictFunctionTypes": false, "strictPropertyInitialization": false, "noImplicitThis": false, - "alwaysStrict": false, "noUnusedLocals": false, "noUnusedParameters": false, "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "ignoreDeprecations": "6.0", + "moduleResolution": "bundler", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true diff --git a/package.json b/package.json index 507652427..662f5382d 100644 --- a/package.json +++ b/package.json @@ -28,31 +28,32 @@ "build": "pnpm -r --filter=./packages/* run build" }, "devDependencies": { - "@eslint/compat": "^2.1.0", - "@eslint/eslintrc": "^3.3.5", + "@eslint/compat": "^2.1.1", + "@eslint/eslintrc": "^3.3.7", "@eslint/js": "^10.0.1", - "@typescript-eslint/eslint-plugin": "^8.63.0", - "@typescript-eslint/parser": "^8.63.0", - "eslint": "^10.6.0", + "@typescript-eslint/eslint-plugin": "^8.70.0", + "@typescript-eslint/parser": "^8.70.0", + "@typescript/native": "npm:typescript@7.0.2", + "eslint": "^10.10.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-n": "^18.2.1", + "eslint-plugin-n": "^18.3.0", "eslint-plugin-no-only-tests": "^3.4.0", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-regexp": "^3.1.1", - "eslint-plugin-simple-import-sort": "^13.0.0", + "eslint-plugin-regexp": "^3.3.0", + "eslint-plugin-simple-import-sort": "^14.0.0", "eslint-plugin-testing-library": "^7.16.2", - "prettier": "^3.9.5", + "prettier": "^3.9.6", "tslib": "^2.8.1", - "tsx": "4.23.0", - "typescript": "6.0.3", - "vitest": "4.1.10" + "tsx": "4.23.13", + "typescript": "npm:@typescript/typescript6@6.0.2", + "vitest": "5.0.0" }, "engines": { - "node": ">= 22.13.0" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" }, "packageManager": "pnpm@11.10.0" } diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 92218547c..284edb9a0 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -47,14 +47,14 @@ "lint": "eslint src" }, "devDependencies": { - "@vitest/coverage-v8": "4.1.6", - "cpy": "13.2.2", + "@vitest/coverage-v8": "5.0.0", + "cpy": "13.2.3", "cpy-cli": "^7.0.0", "rimraf": "6.1.3", - "typescript": "6.0.3", - "vite": "8.0.13", - "vite-plugin-dts": "5.0.0", - "vitest": "4.1.6" + "typescript": "npm:@typescript/typescript6@6.0.2", + "vite": "8.3.0", + "vite-plugin-dts": "5.1.0", + "vitest": "5.0.0" }, "publishConfig": { "access": "public", diff --git a/packages/oidc-client-service-worker/tsconfig.json b/packages/oidc-client-service-worker/tsconfig.json index 84021634e..8e1609583 100644 --- a/packages/oidc-client-service-worker/tsconfig.json +++ b/packages/oidc-client-service-worker/tsconfig.json @@ -6,8 +6,7 @@ "composite": true, "module": "ESNext", "target": "ESNext", - "moduleResolution": "Node", - "ignoreDeprecations": "6.0", + "moduleResolution": "bundler", "sourceMap": true, "declarationMap": true, "outDir": "../dist", diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 3d379cc70..6c0d9ec4e 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -23,18 +23,18 @@ "@axa-fr/oidc-client-service-worker": "workspace:*" }, "devDependencies": { - "@testing-library/dom": "10.4.1", - "@testing-library/jest-dom": "6.9.1", - "@testing-library/react": "16.3.2", - "@types/node": "^25.8.0", - "@vitest/coverage-v8": "4.1.6", - "cpy": "13.2.2", + "@testing-library/dom": "10.4.2", + "@testing-library/jest-dom": "7.0.1", + "@testing-library/react": "16.3.3", + "@types/node": "^26.5.1", + "@vitest/coverage-v8": "5.0.0", + "cpy": "13.2.3", "cpy-cli": "^7.0.0", "rimraf": "6.1.3", - "typescript": "6.0.3", - "vite": "8.0.13", - "vite-plugin-dts": "5.0.0", - "vitest": "4.1.6" + "typescript": "npm:@typescript/typescript6@6.0.2", + "vite": "8.3.0", + "vite-plugin-dts": "5.1.0", + "vitest": "5.0.0" }, "keywords": [ "oidc", diff --git a/packages/oidc-client/tsconfig.json b/packages/oidc-client/tsconfig.json index 952485acc..b07a6c47c 100644 --- a/packages/oidc-client/tsconfig.json +++ b/packages/oidc-client/tsconfig.json @@ -4,9 +4,8 @@ "lib": ["ES2021", "DOM"], "types": ["node"], "outDir": "dist", - "baseUrl": ".", "skipLibCheck": true, - "module": "CommonJS", + "module": "ESNext", "declaration": true, "declarationMap": true, "sourceMap": true, @@ -16,13 +15,11 @@ "strictFunctionTypes": false, "strictPropertyInitialization": false, "noImplicitThis": false, - "alwaysStrict": false, "noUnusedLocals": false, "noUnusedParameters": false, "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "ignoreDeprecations": "6.0", + "moduleResolution": "bundler", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index f9e63c694..d82e1d04f 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -47,24 +47,24 @@ "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "devDependencies": { - "@testing-library/jest-dom": "6.9.1", - "@testing-library/react": "16.3.2", - "@testing-library/user-event": "14.6.1", - "@types/react": "19.2.14", - "@vitejs/plugin-react": "6.0.2", - "@vitest/coverage-v8": "4.1.6", - "cpy": "13.2.2", + "@testing-library/jest-dom": "7.0.1", + "@testing-library/react": "16.3.3", + "@testing-library/user-event": "14.6.7", + "@types/react": "19.3.0", + "@vitejs/plugin-react": "6.1.1", + "@vitest/coverage-v8": "5.0.0", + "cpy": "13.2.3", "cpy-cli": "^7.0.0", "cross-env": "^10.1.0", - "jsdom": "29.1.1", - "msw": "2.14.6", - "react": "^19.2.6", - "react-dom": "^19.2.6", + "jsdom": "30.0.1", + "msw": "2.15.0", + "react": "^19.3.0", + "react-dom": "^19.3.0", "rimraf": "6.1.3", - "typescript": "6.0.3", - "vite": "8.0.13", - "vite-plugin-dts": "5.0.0", - "vitest": "4.1.6" + "typescript": "npm:@typescript/typescript6@6.0.2", + "vite": "8.3.0", + "vite-plugin-dts": "5.1.0", + "vitest": "5.0.0" }, "license": "MIT", "publishConfig": { diff --git a/packages/react-oidc/tsconfig.json b/packages/react-oidc/tsconfig.json index e27939401..334dcc95f 100644 --- a/packages/react-oidc/tsconfig.json +++ b/packages/react-oidc/tsconfig.json @@ -3,11 +3,10 @@ "target": "ES2019", "lib": ["ES2021", "DOM"], "outDir": "dist", - "baseUrl": ".", "jsx": "react-jsx", "forceConsistentCasingInFileNames": true, "skipLibCheck": true, - "module": "CommonJS", + "module": "ESNext", "declaration": true, "declarationMap": true, "sourceMap": true, @@ -17,13 +16,11 @@ "strictFunctionTypes": false, "strictPropertyInitialization": false, "noImplicitThis": false, - "alwaysStrict": false, "noUnusedLocals": false, "noUnusedParameters": false, "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "ignoreDeprecations": "6.0", + "moduleResolution": "bundler", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a37c9e47..621245cea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,71 +9,74 @@ importers: .: devDependencies: '@eslint/compat': - specifier: ^2.1.0 - version: 2.1.0(eslint@10.6.0) + specifier: ^2.1.1 + version: 2.1.1(eslint@10.10.0) '@eslint/eslintrc': - specifier: ^3.3.5 - version: 3.3.5 + specifier: ^3.3.7 + version: 3.3.7 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.6.0) + version: 10.0.1(eslint@10.10.0) '@typescript-eslint/eslint-plugin': - specifier: ^8.63.0 - version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + specifier: ^8.70.0 + version: 8.70.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(@typescript/typescript6@6.0.2)(eslint@10.10.0) '@typescript-eslint/parser': - specifier: ^8.63.0 - version: 8.63.0(eslint@10.6.0)(typescript@6.0.3) + specifier: ^8.70.0 + version: 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + '@typescript/native': + specifier: npm:typescript@7.0.2 + version: typescript@7.0.2 eslint: - specifier: ^10.6.0 - version: 10.6.0 + specifier: ^10.10.0 + version: 10.10.0 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.6.0) + version: 10.1.8(eslint@10.10.0) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0) + version: 2.32.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(eslint@10.10.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@10.6.0) + version: 6.10.2(eslint@10.10.0) eslint-plugin-n: - specifier: ^18.2.1 - version: 18.2.1(eslint@10.6.0)(typescript@6.0.3) + specifier: ^18.3.0 + version: 18.3.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) eslint-plugin-no-only-tests: specifier: ^3.4.0 version: 3.4.0 eslint-plugin-prettier: specifier: ^5.5.6 - version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5) + version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.10.0))(eslint@10.10.0)(prettier@3.9.6) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@10.6.0) + version: 7.37.5(eslint@10.10.0) eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@10.6.0) + version: 7.1.1(eslint@10.10.0) eslint-plugin-regexp: - specifier: ^3.1.1 - version: 3.1.1(eslint@10.6.0) + specifier: ^3.3.0 + version: 3.3.0(eslint@10.10.0) eslint-plugin-simple-import-sort: - specifier: ^13.0.0 - version: 13.0.0(eslint@10.6.0) + specifier: ^14.0.0 + version: 14.0.0(eslint@10.10.0) eslint-plugin-testing-library: specifier: ^7.16.2 - version: 7.16.2(eslint@10.6.0)(typescript@6.0.3) + version: 7.16.2(@typescript/typescript6@6.0.2)(eslint@10.10.0) prettier: - specifier: ^3.9.5 - version: 3.9.5 + specifier: ^3.9.6 + version: 3.9.6 tslib: specifier: ^2.8.1 version: 2.8.1 tsx: - specifier: 4.23.0 - version: 4.23.0 + specifier: 4.23.13 + version: 4.23.13 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vitest: - specifier: 4.1.10 - version: 4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) examples/nextjs-demo: dependencies: @@ -81,17 +84,17 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc next: - specifier: ^16.2.6 - version: 16.2.10(@babel/core@7.29.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^16.3.5 + version: 16.3.5(@babel/core@7.29.7)(@types/node@26.5.1)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react: - specifier: ^19.2.6 - version: 19.2.7 + specifier: ^19.3.0 + version: 19.3.0 react-dom: - specifier: ^19.2.6 - version: 19.2.7(react@19.2.7) + specifier: ^19.3.0 + version: 19.3.0(react@19.3.0) styled-jsx: specifier: ^5.1.7 - version: 5.1.7(@babel/core@7.29.7)(react@19.2.7) + version: 5.1.7(@babel/core@7.29.7)(react@19.3.0) examples/oidc-client-demo: dependencies: @@ -99,21 +102,21 @@ importers: specifier: workspace:~ version: link:../../packages/oidc-client typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' web-vitals: - specifier: 5.2.0 - version: 5.2.0 + specifier: 6.2.1 + version: 6.2.1 devDependencies: '@types/node': - specifier: 25.8.0 - version: 25.8.0 + specifier: 26.5.1 + version: 26.5.1 cross-env: specifier: ^10.1.0 version: 10.1.0 vite: - specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + specifier: 8.3.0 + version: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) examples/react-oidc-demo: dependencies: @@ -121,30 +124,30 @@ importers: specifier: workspace:* version: link:../../packages/react-oidc react: - specifier: ^19.2.6 - version: 19.2.7 + specifier: ^19.3.0 + version: 19.3.0 react-dom: - specifier: ^19.2.6 - version: 19.2.7(react@19.2.7) + specifier: ^19.3.0 + version: 19.3.0(react@19.3.0) react-router-dom: - specifier: ^7.15.1 - version: 7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^7.18.3 + version: 7.18.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0) devDependencies: '@testing-library/jest-dom': - specifier: 6.9.1 - version: 6.9.1 + specifier: 7.0.1 + version: 7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.0) '@testing-library/react': - specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: 16.3.3 + version: 16.3.3(@testing-library/dom@10.4.2)(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@testing-library/user-event': - specifier: 14.6.1 - version: 14.6.1(@testing-library/dom@10.4.1) + specifier: 14.6.7 + version: 14.6.7(@testing-library/dom@10.4.2) '@types/react': - specifier: 19.2.14 - version: 19.2.14 + specifier: 19.3.0 + version: 19.3.0 '@vitejs/plugin-react': - specifier: 6.0.2 - version: 6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 6.1.1 + version: 6.1.1(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) bootstrap: specifier: ^5.3.8 version: 5.3.8(@popperjs/core@2.11.8) @@ -155,20 +158,20 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: 29.1.1 - version: 29.1.1 + specifier: 30.0.1 + version: 30.0.1 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vite: - specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + specifier: 8.3.0 + version: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) vite-plugin-dts: - specifier: 5.0.0 - version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.1.0 + version: 5.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) vitest: - specifier: 4.1.6 - version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) packages/oidc-client: dependencies: @@ -177,23 +180,23 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/dom': - specifier: 10.4.1 - version: 10.4.1 + specifier: 10.4.2 + version: 10.4.2 '@testing-library/jest-dom': - specifier: 6.9.1 - version: 6.9.1 + specifier: 7.0.1 + version: 7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.0) '@testing-library/react': - specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: 16.3.3 + version: 16.3.3(@testing-library/dom@10.4.2)(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@types/node': - specifier: ^25.8.0 - version: 25.8.0 + specifier: ^26.5.1 + version: 26.5.1 '@vitest/coverage-v8': - specifier: 4.1.6 - version: 4.1.6(vitest@4.1.6) + specifier: 5.0.0 + version: 5.0.0(vitest@5.0.0) cpy: - specifier: 13.2.2 - version: 13.2.2 + specifier: 13.2.3 + version: 13.2.3 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -201,26 +204,26 @@ importers: specifier: 6.1.3 version: 6.1.3 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vite: - specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + specifier: 8.3.0 + version: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) vite-plugin-dts: - specifier: 5.0.0 - version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.1.0 + version: 5.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) vitest: - specifier: 4.1.6 - version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) packages/oidc-client-service-worker: devDependencies: '@vitest/coverage-v8': - specifier: 4.1.6 - version: 4.1.6(vitest@4.1.6) + specifier: 5.0.0 + version: 5.0.0(vitest@5.0.0) cpy: - specifier: 13.2.2 - version: 13.2.2 + specifier: 13.2.3 + version: 13.2.3 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -228,17 +231,17 @@ importers: specifier: 6.1.3 version: 6.1.3 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vite: - specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + specifier: 8.3.0 + version: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) vite-plugin-dts: - specifier: 5.0.0 - version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.1.0 + version: 5.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) vitest: - specifier: 4.1.6 - version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) packages/react-oidc: dependencies: @@ -250,26 +253,26 @@ importers: version: link:../oidc-client-service-worker devDependencies: '@testing-library/jest-dom': - specifier: 6.9.1 - version: 6.9.1 + specifier: 7.0.1 + version: 7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.0) '@testing-library/react': - specifier: 16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: 16.3.3 + version: 16.3.3(@testing-library/dom@10.4.2)(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@testing-library/user-event': - specifier: 14.6.1 - version: 14.6.1(@testing-library/dom@10.4.1) + specifier: 14.6.7 + version: 14.6.7(@testing-library/dom@10.4.2) '@types/react': - specifier: 19.2.14 - version: 19.2.14 + specifier: 19.3.0 + version: 19.3.0 '@vitejs/plugin-react': - specifier: 6.0.2 - version: 6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 6.1.1 + version: 6.1.1(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) '@vitest/coverage-v8': - specifier: 4.1.6 - version: 4.1.6(vitest@4.1.6) + specifier: 5.0.0 + version: 5.0.0(vitest@5.0.0) cpy: - specifier: 13.2.2 - version: 13.2.2 + specifier: 13.2.3 + version: 13.2.3 cpy-cli: specifier: ^7.0.0 version: 7.0.0 @@ -277,52 +280,45 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: 29.1.1 - version: 29.1.1 + specifier: 30.0.1 + version: 30.0.1 msw: - specifier: 2.14.6 - version: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) + specifier: 2.15.0 + version: 2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2) react: - specifier: ^19.2.6 - version: 19.2.7 + specifier: ^19.3.0 + version: 19.3.0 react-dom: - specifier: ^19.2.6 - version: 19.2.7(react@19.2.7) + specifier: ^19.3.0 + version: 19.3.0(react@19.3.0) rimraf: specifier: 6.1.3 version: 6.1.3 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vite: - specifier: 8.0.13 - version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + specifier: 8.3.0 + version: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) vite-plugin-dts: - specifier: 5.0.0 - version: 5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.1.0 + version: 5.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) vitest: - specifier: 4.1.6 - version: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) packages: '@adobe/css-tools@4.5.0': resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} - '@asamuzakjp/css-color@5.1.11': - resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/dom-selector@7.1.1': - resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@asamuzakjp/css-color@6.0.7': + resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==} + engines: {node: ^22.13.0 || >=24.0.0} - '@asamuzakjp/generational-cache@1.0.1': - resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@asamuzakjp/dom-selector@8.3.2': + resolution: {integrity: sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==} + engines: {node: ^22.13.0 || >=24.0.0} '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} @@ -336,8 +332,8 @@ packages: resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.29.7': @@ -374,8 +370,8 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true @@ -387,12 +383,12 @@ packages: resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -403,19 +399,25 @@ packages: resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true - '@csstools/color-helpers@6.1.0': - resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} + + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + + '@csstools/color-helpers@6.1.1': + resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==} engines: {node: '>=20.19.0'} - '@csstools/css-calc@3.2.1': - resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + '@csstools/css-calc@3.4.0': + resolution: {integrity: sha512-XQKj5B7QiZcHiegCOCAzcAOJdhGgWOHbbu62h5e5mkHnn8lWcfiJhllkqWmxu5zWR9jucPHuo1iTB56P033hcg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@4.1.9': - resolution: {integrity: sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==} + '@csstools/css-color-parser@4.2.3': + resolution: {integrity: sha512-y4LpL+lmpuyKDiEFq2PnZUVFdAjsoB/qQJod79yLNokXyW7jewi+/WJ69EfItj8A2unWtxXnGjw6LYXgXu5ZjA==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -427,8 +429,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.6': - resolution: {integrity: sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ==} + '@csstools/css-syntax-patches-for-csstree@1.1.13': + resolution: {integrity: sha512-i9ZylF5QNhmNfPA9l0vHAWK4kPrbIp6g9lKgaiIFsIBz2F/WNB7OLrzlNNcCOm+h42bkaSD2v1PG+IBPHhc3ZA==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -439,179 +441,170 @@ packages: resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/runtime@1.11.2': - resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -620,8 +613,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@2.1.0': - resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==} + '@eslint/compat@2.1.1': + resolution: {integrity: sha512-rMcy8GSrwNzcISX/BlTDY/GLB4eCopEuy9woIls3To+15OLxykZrxxq+WUcylCPCQ6F4MujjBM1DX5V1aqI3Vw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^8.40 || 9 || 10 @@ -633,16 +626,16 @@ packages: resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.6.0': - resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + '@eslint/eslintrc@3.3.7': + resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@10.0.1': @@ -658,8 +651,8 @@ packages: resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + '@eslint/plugin-kit@0.7.3': + resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@exodus/bytes@1.15.1': @@ -695,152 +688,161 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] @@ -889,73 +891,76 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@mswjs/interceptors@0.41.9': resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@next/env@16.3.5': + resolution: {integrity: sha512-NWEXVDMqoEo0ktmU6u0sE2Vg0LOcsD7NnOTJNo3/fEaTfsg+F1bMIxuDmQbda4e3yTIQwVdUREF2yIuMOusKtg==} - '@next/env@16.2.10': - resolution: {integrity: sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==} - - '@next/swc-darwin-arm64@16.2.10': - resolution: {integrity: sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==} + '@next/swc-darwin-arm64@16.3.5': + resolution: {integrity: sha512-pMmGgETfKvElucLHtVaeiMRbp2zUbvKx7b1yGko0liBz3cw1mKSggWN/Rp/wPz8z+E1O82u3r4L1Co+ZS5hokQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.2.10': - resolution: {integrity: sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==} + '@next/swc-darwin-x64@16.3.5': + resolution: {integrity: sha512-76VaGYvf6HPa5/w12yLkE3dXTn9AfdEviI79oEL3aZoAmRLc9rWitjWqyjViVysK/ht/y9YKzFkBrUdi/wGkow==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.2.10': - resolution: {integrity: sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==} + '@next/swc-linux-arm64-gnu@16.3.5': + resolution: {integrity: sha512-zKDELJ5jSQMHeO/hmXUQsAzagX4bQD4OiMi3pQ5FbUj+yK506oLVHnKA2YXMlbg1EHHqJYtyePOgByIDXD1lqw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.2.10': - resolution: {integrity: sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==} + '@next/swc-linux-arm64-musl@16.3.5': + resolution: {integrity: sha512-7Vql0pgzCoHagv6+FNOZoqmJqA52c6zeVbhtS/47qFozO1MSx4ms7x7GHiciY8R5CDsSMKMQjJEryoJLcsBIbA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.2.10': - resolution: {integrity: sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==} + '@next/swc-linux-x64-gnu@16.3.5': + resolution: {integrity: sha512-NH/xzehyHEFWE2nlcZon7TB/0+H4shfWCi7S1zka815XCOhJDYZhoeJtOYy0dh0WVRWACVXSyGNFFytoMxUhRg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.2.10': - resolution: {integrity: sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==} + '@next/swc-linux-x64-musl@16.3.5': + resolution: {integrity: sha512-lV4+EhWMfS8jcC+EH2nn/Cm5cn6XsgbE07bU9tMH8fCo0tNAqhyzi1b5wQ/Tn6NGFTvKDY65w3ZH95EjwBRAnQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.2.10': - resolution: {integrity: sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==} + '@next/swc-win32-arm64-msvc@16.3.5': + resolution: {integrity: sha512-/wKzAREX2RF++MhicjDbg8tGn2AiBIM0+EFeTFKoUEUbW5D6amCJehd5Z5G1H5/gxNdgnwoXMcHz24H/c2tGkQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.2.10': - resolution: {integrity: sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==} + '@next/swc-win32-x64-msvc@16.3.5': + resolution: {integrity: sha512-LNdCHzgLFc+UeqMS84LzXPaeBRKyqDN9OMyFAr1OrB0XrNw78IRrEVtZvvA7245W/HsaoeVOQX9jPjPk8jojwA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -984,8 +989,8 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-project/types@0.130.0': - resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} + '@oxc-project/types@0.149.0': + resolution: {integrity: sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==} '@pkgr/core@0.3.6': resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} @@ -994,97 +999,98 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rolldown/binding-android-arm64@1.0.1': - resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} + '@rolldown/binding-android-arm-eabi@1.2.8': + resolution: {integrity: sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.8': + resolution: {integrity: sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.1': - resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} + '@rolldown/binding-darwin-arm64@1.2.8': + resolution: {integrity: sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.1': - resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} + '@rolldown/binding-darwin-x64@1.2.8': + resolution: {integrity: sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.1': - resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} + '@rolldown/binding-freebsd-x64@1.2.8': + resolution: {integrity: sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': - resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': + resolution: {integrity: sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.1': - resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} + '@rolldown/binding-linux-arm64-gnu@1.2.8': + resolution: {integrity: sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.1': - resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} + '@rolldown/binding-linux-arm64-musl@1.2.8': + resolution: {integrity: sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.1': - resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.8': + resolution: {integrity: sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.1': - resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.8': + resolution: {integrity: sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.1': - resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} + '@rolldown/binding-linux-x64-gnu@1.2.8': + resolution: {integrity: sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.1': - resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} + '@rolldown/binding-linux-x64-musl@1.2.8': + resolution: {integrity: sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.1': - resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} + '@rolldown/binding-openharmony-arm64@1.2.8': + resolution: {integrity: sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.1': - resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.0.1': - resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} + '@rolldown/binding-win32-arm64-msvc@1.2.8': + resolution: {integrity: sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.1': - resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} + '@rolldown/binding-win32-x64-msvc@1.2.8': + resolution: {integrity: sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1108,22 +1114,25 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - - '@testing-library/dom@10.4.1': - resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + '@testing-library/dom@10.4.2': + resolution: {integrity: sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.9.1': - resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@testing-library/jest-dom@7.0.1': + resolution: {integrity: sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw==} + engines: {node: '>=22', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@testing-library/dom': '>=10 <11' + vitest: '>= 0.32' + peerDependenciesMeta: + vitest: + optional: true - '@testing-library/react@16.3.2': - resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + '@testing-library/react@16.3.3': + resolution: {integrity: sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -1137,15 +1146,12 @@ packages: '@types/react-dom': optional: true - '@testing-library/user-event@14.6.1': - resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + '@testing-library/user-event@14.6.7': + resolution: {integrity: sha512-MPCpX8bxe8zS+JmmTwLp8jd0dy1rAm60Te/SL8JrQM3qvQJcBOs1d7IefJMyZzqM3EWBrDn/LWDt1BCGu4ASfg==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1167,11 +1173,11 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@25.8.0': - resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} + '@types/node@26.5.1': + resolution: {integrity: sha512-CzNm2FezW4VR/LjG6yUdiEgLE/rAQ9Slj5gCu/C2VrdcW7I0ahNZ8DRbHT7zOZ6r3ONgd/bsQIeSaoDGrd1C6g==} - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} '@types/set-cookie-parser@2.4.10': resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} @@ -1179,95 +1185,224 @@ packages: '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} - '@typescript-eslint/eslint-plugin@8.63.0': - resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==} + '@typescript-eslint/eslint-plugin@8.70.0': + resolution: {integrity: sha512-/v8HZt6RlyIZxB3ntehELOcUcfxKPVGWXnQdJuHRmzrqgF8nQypcC/oxGW+Ot4VGKDq81XugPKxx0n5PBtf9PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.63.0 + '@typescript-eslint/parser': ^8.70.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.63.0': - resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==} + '@typescript-eslint/parser@8.70.0': + resolution: {integrity: sha512-zYvrmj9Yxd63UGaXw+kdt6A0F0s0qveJyuatIM77bYC2DE4pgmg7a50u8LR7PRtXd0x+h+Tl3eXabGm06SWd3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.63.0': - resolution: {integrity: sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==} + '@typescript-eslint/project-service@8.70.0': + resolution: {integrity: sha512-hFHbTNqhU9G+2eKFXCBVb1tjFT/LceiJ4+HfLO4pTpDI0KHi6iajpcFFkaSQ9gXmCh7n82A0PthaayEdN6mspQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.63.0': - resolution: {integrity: sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==} + '@typescript-eslint/scope-manager@8.70.0': + resolution: {integrity: sha512-8nP3Kwh5hlgZ4FicGvmznAmJe8UL4sdU8tLukrPaMuQmDuk4Y8xYfzu/aYZW4xT2JCgc7H/TpDI5cGlxcWJSqQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.63.0': - resolution: {integrity: sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==} + '@typescript-eslint/tsconfig-utils@8.70.0': + resolution: {integrity: sha512-adnkeeNq9Sq1sUf4+FRVc0KdgYghzsgFpZSQVZVvY0LCuUuN0FnQgyGzCJeC4fW1cdXseBAjU2EOqUIjbNcZUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.63.0': - resolution: {integrity: sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==} + '@typescript-eslint/type-utils@8.70.0': + resolution: {integrity: sha512-NUMKIhYVaVIVLnRL9CRt+VVcuLgSHUCpXn4/+K8wql+vdInUzvx8BjUO1oJ7cG9shjFJKtF8F8Hh2kCh3/KBVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.63.0': - resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==} + '@typescript-eslint/types@8.70.0': + resolution: {integrity: sha512-asTOIYhDg4zdzOScCyaytrsV3cR6B4ecPQlXw/dJIm7J/MZTtCtfVII9JD8Geh4jTCrK/Xe6cg5UevoleMcoJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.63.0': - resolution: {integrity: sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==} + '@typescript-eslint/typescript-estree@8.70.0': + resolution: {integrity: sha512-d9NmHMPEKQ7QCLLm1jI3zmoQBwT5KwFYjXBJ9ymZfKCUU+5rmTRykKAFvH5Qn/ZCds3CEAFS9OC9M/jkl0X2bA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.63.0': - resolution: {integrity: sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==} + '@typescript-eslint/utils@8.70.0': + resolution: {integrity: sha512-oZmtKJz/4fufZ2p3+Cn3ijEojcdfR+1zYDH2xKYrEly0dR/Q/1xUPRCOlKGxod78nWlU2UnDe09GZ3TaknBFGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.63.0': - resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} + '@typescript-eslint/visitor-keys@8.70.0': + resolution: {integrity: sha512-BoC8PiO4Hkdo0TVJh9Ntxr5MxPDI7/oFsrygN5ADelFSeXG/qgNuucIGA+L5Z6JpPTE/uRfcTWtscjbUaufepQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-react@6.0.2': - resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@typescript/typescript6@6.0.2': + resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} + hasBin: true + + '@vitejs/plugin-react@6.1.1': + resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.145.0 vite: ^8.0.0 peerDependenciesMeta: '@rolldown/plugin-babel': optional: true babel-plugin-react-compiler: optional: true + oxc-transform-react: + optional: true - '@vitest/coverage-v8@4.1.6': - resolution: {integrity: sha512-36l628fQ/9a/8ihy97eOtEnvWQEdqULQOJtcaxtoNq0G1w3Mxd4szSahOaMM9/NGyZ+hyKcMtIW/WIxq0XQViQ==} + '@vitest/coverage-v8@5.0.0': + resolution: {integrity: sha512-toMg6PZGCIa/lQNCDoASrfb1ly4hsUKXFtFYC9kD4t78o5Y6LyNJU7AENt8eHPr3quYdxaxK7hj2mnbFfUk9NA==} peerDependencies: - '@vitest/browser': 4.1.6 - vitest: 4.1.6 + '@vitest/browser': 5.0.0 + vitest: 5.0.0 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + '@vitest/istanbul-lib-coverage@1.0.1': + resolution: {integrity: sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==} + engines: {node: '>=22'} - '@vitest/expect@4.1.6': - resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} + '@vitest/istanbul-lib-report@1.0.1': + resolution: {integrity: sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==} + engines: {node: '>=22'} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + '@vitest/mocker@5.0.0': + resolution: {integrity: sha512-66PGTMIiVJP3t4a5yxU9qPtf7MdTBs8jmToMvy+HVflB3Yy13WJZTtPePdvU+wjRV02SKK5doLbSA6o9pwOmiA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1277,46 +1412,8 @@ packages: vite: optional: true - '@vitest/mocker@4.1.6': - resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - - '@vitest/pretty-format@4.1.6': - resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} - - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - - '@vitest/runner@4.1.6': - resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} - - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - - '@vitest/snapshot@4.1.6': - resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} - - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - - '@vitest/spy@4.1.6': - resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} - - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} - - '@vitest/utils@4.1.6': - resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} + '@vitest/spy@5.0.0': + resolution: {integrity: sha512-uy+luWBAPw9XfthoHi5AkfHUnuPYEESjl0p/r+meoBnU8bxg5GDQ3Ey8MjcJ6sqahkL4PFyrvfMJJBw7LbU06g==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1332,8 +1429,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.17.0: - resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} engines: {node: '>=0.4.0'} hasBin: true @@ -1366,8 +1463,8 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + array-includes@3.2.0: + resolution: {integrity: sha512-VXY5eFRarnXcYxwBjJzPmEhH55+rmP79/+ueDhi0F+TuqfHCItagIHqxeUZrmgrOPa31QTh9H85DjX3FfJ0FTg==} engines: {node: '>= 0.4'} array.prototype.findlast@1.2.5: @@ -1401,8 +1498,8 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - ast-v8-to-istanbul@1.0.4: - resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==} + ast-v8-to-istanbul@1.0.6: + resolution: {integrity: sha512-fvpl29helSO2w/z7utIbrkNXILdrLwDwAMH2I/zPKlGf5244+gf+B4cyS1sANcrPY2h+hWCGSgC8N61s/+AF9A==} async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} @@ -1412,8 +1509,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.12.1: - resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} + axe-core@4.13.0: + resolution: {integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -1427,8 +1524,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.42: - resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==} + baseline-browser-mapping@2.11.23: + resolution: {integrity: sha512-le521dGVfxM7yRX0EikCoSz+rOK+hHzdDt/E7mG1jOJB/6WAAUuwVroLwaB7ApaUsz5Q0kFlDXLSA9MheUIfRQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1440,22 +1537,25 @@ packages: peerDependencies: '@popperjs/core': ^2.11.8 - brace-expansion@1.1.16: - resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - brace-expansion@5.0.7: - resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} - engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.5: - resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==} + browserslist@4.28.9: + resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1472,8 +1572,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001803: - resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==} + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} @@ -1500,8 +1600,8 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - comment-parser@1.4.7: - resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} + comment-parser@1.4.9: + resolution: {integrity: sha512-+2AvZKjJaNq9GQljm3tr0utwrig5BL+jgJGvz5rDpGKNIp+ojcRXWUwBbh/sGIi1QCprR6PsKFakub+w1v+4hQ==} engines: {node: '>= 12.0.0'} compare-versions@6.1.1: @@ -1513,8 +1613,8 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + confbox@0.3.1: + resolution: {integrity: sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1539,8 +1639,8 @@ packages: engines: {node: '>=20'} hasBin: true - cpy@13.2.2: - resolution: {integrity: sha512-FEc7gmNSj4mDQCWNt3mByVn3qZX3EjMvggiqgCQPF1yJAFfyX6Ai/emN89w18TRp+QcFmdTLgX3hfNnIVgYHcw==} + cpy@13.2.3: + resolution: {integrity: sha512-N+jPR8ODTJIzAKmCtUglRSCQzMuDkB/saH1ZJfY1MDfXYMZbfsuih3GhpUEYeuTCDQLBr4GvKyHDwV0Y2Sd0gQ==} engines: {node: '>=20'} cross-env@10.1.0: @@ -1634,8 +1734,8 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electron-to-chromium@1.5.389: - resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} + electron-to-chromium@1.5.427: + resolution: {integrity: sha512-n14zb3FdsChZ2BNobqNHAJMcP3ifFv4paox2LvCrfVAQcqGiSURgbJl+PfMpHVCNFkStnNc+RRVtPBTVW5PDgw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1643,8 +1743,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.24.2: - resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} + enhanced-resolve@5.25.1: + resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==} engines: {node: '>=10.13.0'} entities@8.0.0: @@ -1667,12 +1767,12 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.3.3: - resolution: {integrity: sha512-0PuBxFi+4uPanB97iDxCLWuHeYud2FALrw5HFZGtAF38UpJDbDC8frwp2cnDyae692CQ0dou60UwWfhgsa4U/g==} + es-iterator-helpers@1.4.0: + resolution: {integrity: sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==} engines: {node: '>= 0.4'} - es-module-lexer@2.3.0: - resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} @@ -1690,8 +1790,8 @@ packages: resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} engines: {node: '>= 0.4'} - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} hasBin: true @@ -1761,8 +1861,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-n@18.2.1: - resolution: {integrity: sha512-aO3C9//yq8JIvYOi/T+jPvcZ9hZzpwzbR8esrYpFtgE9vpbyM8kn42AQOtIqYspVmpaSWr8X+nrlQuAJYxXAaw==} + eslint-plugin-n@18.3.0: + resolution: {integrity: sha512-cPVguuDe6DrIPb/qUXHf8P89MaVTUmiYWwpt5gX5AILsvRIiZAxMFXcFR6QHYBksqKJpjfUBlL/RleCJUWcD7w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=8.57.1' @@ -1804,14 +1904,14 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-regexp@3.1.1: - resolution: {integrity: sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==} + eslint-plugin-regexp@3.3.0: + resolution: {integrity: sha512-TT0JTQbW7CRKohntpGAsMdQ1K3MsmJK4gdAhKJtIwlJ0JvuYxauymFgJdvqxIY4lqNj0EuRZWVrymQtEdJYEFg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-simple-import-sort@13.0.0: - resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==} + eslint-plugin-simple-import-sort@14.0.0: + resolution: {integrity: sha512-NUJO0+XFCkk+o5EsAJruTgnfMEpeWrPWeJS15UVF60GgXmqz1BJ9/3hzlvG7lkL8Bubzos5cCLptThbFfPnSMQ==} peerDependencies: eslint: '>=5.0.0' @@ -1837,8 +1937,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.6.0: - resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} + eslint@10.10.0: + resolution: {integrity: sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1881,8 +1981,8 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - exsolve@1.1.0: - resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} + exsolve@1.1.1: + resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1909,8 +2009,8 @@ packages: fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1921,9 +2021,8 @@ packages: picomatch: optional: true - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -1933,12 +2032,11 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} @@ -1986,8 +2084,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1997,6 +2095,9 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -2017,8 +2118,8 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@16.2.1: - resolution: {integrity: sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==} + globby@16.2.4: + resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==} engines: {node: '>=20'} globrex@0.1.2: @@ -2039,10 +2140,6 @@ packages: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2058,6 +2155,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -2071,19 +2172,22 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} + html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + ignore@7.0.9: + resolution: {integrity: sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw==} engines: {node: '>= 4'} import-fresh@3.3.1: @@ -2239,18 +2343,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -2261,19 +2353,19 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true - jsdoc-type-pratt-parser@7.2.0: - resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} - engines: {node: '>=20.0.0'} + jsdoc-type-pratt-parser@9.2.1: + resolution: {integrity: sha512-V4Ww4EHnTcTLSOMoB0FsF72JhQvcAsriCm/LWnxJeGWoxIjEL2l9na11abQok5SYShq8m0Gl02el/xAbTCulvQ==} + engines: {node: ^22.22.2 || >=24.15.0} - jsdom@29.1.1: - resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + jsdom@30.0.1: + resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} peerDependencies: - canvas: ^3.0.0 + canvas: ^3.2.3 peerDependenciesMeta: canvas: optional: true @@ -2283,9 +2375,6 @@ packages: engines: {node: '>=6'} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -2309,8 +2398,8 @@ packages: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -2326,78 +2415,78 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} local-pkg@1.2.1: @@ -2426,12 +2515,11 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + magic-string@1.3.1: + resolution: {integrity: sha512-rm91zr2Ou+XueDTohjQQjdQEcYM6zVi8KVUCG8Ec3vHwUEKrhSdCNyfuIywkA6hcCAteIn0ZOtAHA6eGpiX+Pg==} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} @@ -2456,8 +2544,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: @@ -2481,8 +2569,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.14.6: - resolution: {integrity: sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==} + msw@2.15.0: + resolution: {integrity: sha512-2wQAmKkQKxRuXvYJxVhPGG0wZNBQyD06oJvxqw90XqLvptdqxdlHrFUfEteKkpaNORX3Xzc+HtEl/q0nfmN2wQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -2495,16 +2583,16 @@ packages: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} - nanoid@3.3.15: - resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} + nanoid@3.3.19: + resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next@16.2.10: - resolution: {integrity: sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==} + next@16.3.5: + resolution: {integrity: sha512-MdtsTgzyfCPRLC6uJ1mN8ao7lyJ4BB0U6Inhnx3gta1UcCIdHK3yxLG0E8OWQteWD8/Q0qb8A5o7wJaL8M9y2w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -2528,8 +2616,8 @@ packages: resolution: {integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==} engines: {node: '>= 0.4'} - node-releases@2.0.50: - resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} + node-releases@2.0.55: + resolution: {integrity: sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==} engines: {node: '>=18'} noms@0.0.0: @@ -2567,8 +2655,8 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} once@1.4.0: @@ -2581,8 +2669,8 @@ packages: outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + own-keys@1.0.2: + resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} engines: {node: '>= 0.4'} p-event@6.0.1: @@ -2601,8 +2689,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.5: - resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==} + p-map@7.0.8: + resolution: {integrity: sha512-MitaVsCuCFIvOLLPIU7NnfrZvS9H9h7kwMUkDo+T2pEISaJD48IV9S8iIdXB7PsvvdxyYcsSTTrr90XKsbulNw==} engines: {node: '>=18'} p-timeout@6.1.4: @@ -2654,26 +2742,26 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.3.1: - resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + pkg-types@2.3.3: + resolution: {integrity: sha512-j/lCFdcppV0JxWpCEITdbDltBxPP6cHT+yNJ6Go2OgoSA9518X847X9z0p6LtA4Nc16+eQzCZjRrWanTGvHJ5w==} possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.16: - resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2684,8 +2772,8 @@ packages: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.9.5: - resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} engines: {node: '>=14'} hasBin: true @@ -2703,16 +2791,20 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - react-dom@19.2.7: - resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} + react-dom@19.3.0: + resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==} peerDependencies: - react: ^19.2.7 + react: ^19.3.0 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -2720,15 +2812,15 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-router-dom@7.18.1: - resolution: {integrity: sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==} + react-router-dom@7.18.3: + resolution: {integrity: sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.18.1: - resolution: {integrity: sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==} + react-router@7.18.3: + resolution: {integrity: sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -2737,8 +2829,8 @@ packages: react-dom: optional: true - react@19.2.7: - resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} + react@19.3.0: + resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==} engines: {node: '>=0.10.0'} readable-stream@1.0.34: @@ -2799,8 +2891,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.0.1: - resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} + rolldown@1.2.8: + resolution: {integrity: sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2826,8 +2918,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} @@ -2860,9 +2952,14 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -2928,8 +3025,8 @@ packages: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + string.prototype.matchall@4.1.0: + resolution: {integrity: sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==} engines: {node: '>= 0.4'} string.prototype.repeat@1.0.0: @@ -2995,10 +3092,6 @@ packages: babel-plugin-macros: optional: true - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3021,19 +3114,20 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinybench@6.1.4: + resolution: {integrity: sha512-9APumHG7r4yOk4X4WlkmE71aZcv1gvin1czO3OQ1U9iJcFA5Ja/ygyb0vPOVHTthFozUYs8CLoLUlM8grb2lTQ==} + engines: {node: '>=20.0.0'} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} engines: {node: '>=18'} tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} tldts-core@7.4.7: @@ -3067,8 +3161,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.23.0: - resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} + tsx@4.23.13: + resolution: {integrity: sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3101,6 +3195,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -3108,23 +3207,23 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} - undici@7.28.0: - resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} - engines: {node: '>=20.18.1'} + undici@8.10.2: + resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==} + engines: {node: '>=22.19.0'} unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} engines: {node: '>=20'} - unplugin-dts@1.0.0: - resolution: {integrity: sha512-qz+U1lCscwq+t8Mkaxy5Esa7IQ5wWV18b4mnioOXSdnPaNiJ0+qgE3I+KL6UkXYZWxxGo2qdGone8LEQ52Sfkw==} + unplugin-dts@1.1.0: + resolution: {integrity: sha512-KZJ+qk+lmd9dJY/PJvDRFL9BUtVubKDiX7Ai/X6mlkCArcQNzwmupKjVqHbRA42uqO5ZfFRFc+o8/OCbQ1GonQ==} peerDependencies: '@microsoft/api-extractor': '>=7' '@rspack/core': ^1 - '@vue/language-core': ~3.1.5 + '@vue/language-core': ^3.1.5 esbuild: '*' rolldown: '*' rollup: '>=3' @@ -3160,8 +3259,8 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + update-browserslist-db@1.3.3: + resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3172,8 +3271,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vite-plugin-dts@5.0.0: - resolution: {integrity: sha512-VLNAUttBq7pLxxL/m/ztjd5zj5yiviiC7ijfPFVLK5c45FLcibvieBsdjSka3a4ag1qdrAF9K3OysH4/lW+rPQ==} + vite-plugin-dts@5.1.0: + resolution: {integrity: sha512-MfLc2G+mXPUDGGxpHQeYbdunavFP9UpT9yxiAsTgUXRxfEd3HqysSAM4E72jhz5eIz3OOexCHkqiVlQq8ok9/A==} peerDependencies: '@microsoft/api-extractor': '>=7' rollup: '>=3' @@ -3186,13 +3285,13 @@ packages: vite: optional: true - vite@8.0.13: - resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} + vite@8.3.0: + resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.18 + '@vitejs/devtools': ^0.7.1 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -3229,23 +3328,23 @@ packages: yaml: optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.0: + resolution: {integrity: sha512-gpsMNoRhMjMktVxPtstOH4/PJuPyovVaMDr4oDilXaGH1EcqM2OE96SoHT2VIQ6fTGtTjqmHDrEu2X9RQiXf8Q==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.0 + '@vitest/browser-preview': 5.0.0 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.0 + '@vitest/coverage-v8': 5.0.0 + '@vitest/ui': 5.0.0 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -3270,56 +3369,15 @@ packages: jsdom: optional: true - vitest@4.1.6: - resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.6 - '@vitest/browser-preview': 4.1.6 - '@vitest/browser-webdriverio': 4.1.6 - '@vitest/coverage-istanbul': 4.1.6 - '@vitest/coverage-v8': 4.1.6 - '@vitest/ui': 4.1.6 - happy-dom: '*' - jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/coverage-istanbul': - optional: true - '@vitest/coverage-v8': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - web-vitals@5.2.0: - resolution: {integrity: sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==} + web-vitals@6.2.1: + resolution: {integrity: sha512-rLcLXA2sx6+9dE88NHFubwTtGxpK4yYBLj6qHPdFoCaLr0cXGb4efOqtKLlm4loGA4OEKHIQKMKzZkKyOh5ctw==} webidl-conversions@8.0.1: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} @@ -3336,6 +3394,10 @@ packages: resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + whatwg-url@17.1.1: + resolution: {integrity: sha512-ohjk1mdUebJVadRt3bAhQhx8lSnISq+GDttK79LFl8EHQkAPvzwctoasC4hs8tBt6kLAncBWWyq1N52qEfKvDw==} + engines: {node: ^22.14.0 || >=24.0.0} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -3417,32 +3479,27 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.6.5: + resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} snapshots: '@adobe/css-tools@4.5.0': {} - '@asamuzakjp/css-color@5.1.11': + '@asamuzakjp/css-color@6.0.7': dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-calc': 3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.3(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.5.2 - '@asamuzakjp/dom-selector@7.1.1': + '@asamuzakjp/dom-selector@8.3.2': dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 - - '@asamuzakjp/generational-cache@1.0.1': {} - - '@asamuzakjp/nwsapi@2.3.9': {} + lru-cache: 11.5.2 '@babel/code-frame@7.29.7': dependencies: @@ -3455,14 +3512,14 @@ snapshots: '@babel/core@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -3472,10 +3529,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.7': + '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -3484,7 +3541,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.5 + browserslist: 4.28.9 lru-cache: 5.1.1 semver: 6.3.1 @@ -3492,8 +3549,8 @@ snapshots: '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -3502,7 +3559,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -3515,33 +3572,33 @@ snapshots: '@babel/helpers@7.29.7': dependencies: '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 - '@babel/parser@7.29.7': + '@babel/parser@7.29.8': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/runtime@7.29.7': {} '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.8': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.29.7': + '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 @@ -3552,17 +3609,29 @@ snapshots: dependencies: css-tree: 3.2.1 - '@csstools/color-helpers@6.1.0': {} + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + + '@csstools/color-helpers@6.1.1': {} - '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-calc@3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.2.3(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 6.1.0 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/color-helpers': 6.1.1 + '@csstools/css-calc': 3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -3570,135 +3639,119 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.6(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.13(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 '@csstools/css-tokenizer@4.0.0': {} - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.2': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true '@epic-web/invariant@1.0.0': {} - '@esbuild/aix-ppc64@0.28.1': + '@esbuild/aix-ppc64@0.28.2': optional: true - '@esbuild/android-arm64@0.28.1': + '@esbuild/android-arm64@0.28.2': optional: true - '@esbuild/android-arm@0.28.1': + '@esbuild/android-arm@0.28.2': optional: true - '@esbuild/android-x64@0.28.1': + '@esbuild/android-x64@0.28.2': optional: true - '@esbuild/darwin-arm64@0.28.1': + '@esbuild/darwin-arm64@0.28.2': optional: true - '@esbuild/darwin-x64@0.28.1': + '@esbuild/darwin-x64@0.28.2': optional: true - '@esbuild/freebsd-arm64@0.28.1': + '@esbuild/freebsd-arm64@0.28.2': optional: true - '@esbuild/freebsd-x64@0.28.1': + '@esbuild/freebsd-x64@0.28.2': optional: true - '@esbuild/linux-arm64@0.28.1': + '@esbuild/linux-arm64@0.28.2': optional: true - '@esbuild/linux-arm@0.28.1': + '@esbuild/linux-arm@0.28.2': optional: true - '@esbuild/linux-ia32@0.28.1': + '@esbuild/linux-ia32@0.28.2': optional: true - '@esbuild/linux-loong64@0.28.1': + '@esbuild/linux-loong64@0.28.2': optional: true - '@esbuild/linux-mips64el@0.28.1': + '@esbuild/linux-mips64el@0.28.2': optional: true - '@esbuild/linux-ppc64@0.28.1': + '@esbuild/linux-ppc64@0.28.2': optional: true - '@esbuild/linux-riscv64@0.28.1': + '@esbuild/linux-riscv64@0.28.2': optional: true - '@esbuild/linux-s390x@0.28.1': + '@esbuild/linux-s390x@0.28.2': optional: true - '@esbuild/linux-x64@0.28.1': + '@esbuild/linux-x64@0.28.2': optional: true - '@esbuild/netbsd-arm64@0.28.1': + '@esbuild/netbsd-arm64@0.28.2': optional: true - '@esbuild/netbsd-x64@0.28.1': + '@esbuild/netbsd-x64@0.28.2': optional: true - '@esbuild/openbsd-arm64@0.28.1': + '@esbuild/openbsd-arm64@0.28.2': optional: true - '@esbuild/openbsd-x64@0.28.1': + '@esbuild/openbsd-x64@0.28.2': optional: true - '@esbuild/openharmony-arm64@0.28.1': + '@esbuild/openharmony-arm64@0.28.2': optional: true - '@esbuild/sunos-x64@0.28.1': + '@esbuild/sunos-x64@0.28.2': optional: true - '@esbuild/win32-arm64@0.28.1': + '@esbuild/win32-arm64@0.28.2': optional: true - '@esbuild/win32-ia32@0.28.1': + '@esbuild/win32-ia32@0.28.2': optional: true - '@esbuild/win32-x64@0.28.1': + '@esbuild/win32-x64@0.28.2': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0)': + '@eslint-community/eslint-utils@4.10.1(eslint@10.10.0)': dependencies: - eslint: 10.6.0 + eslint: 10.10.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.1.0(eslint@10.6.0)': + '@eslint/compat@2.1.1(eslint@10.10.0)': dependencies: '@eslint/core': 1.2.1 optionalDependencies: - eslint: 10.6.0 + eslint: 10.10.0 '@eslint/config-array@0.23.5': dependencies: '@eslint/object-schema': 3.0.5 debug: 4.4.3 - minimatch: 10.2.5 + minimatch: 10.2.6 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.6.0': + '@eslint/config-helpers@0.7.0': dependencies: '@eslint/core': 1.2.1 @@ -3706,7 +3759,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.7': dependencies: ajv: 6.15.0 debug: 4.4.3 @@ -3714,19 +3767,19 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.3.2 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@10.0.1(eslint@10.6.0)': + '@eslint/js@10.0.1(eslint@10.10.0)': optionalDependencies: - eslint: 10.6.0 + eslint: 10.10.0 '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.7.2': + '@eslint/plugin-kit@0.7.3': dependencies: '@eslint/core': 1.2.1 levn: 0.4.1 @@ -3752,130 +3805,140 @@ snapshots: '@img/colour@1.1.0': optional: true - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-freebsd-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + optional: true + + '@img/sharp-linux-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.3 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.3 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.4': dependencies: - '@emnapi/runtime': 1.11.2 + '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-arm64@0.35.4': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-ia32@0.35.4': + optional: true + + '@img/sharp-win32-x64@0.35.4': optional: true '@inquirer/ansi@2.0.7': {} - '@inquirer/confirm@6.1.1(@types/node@25.8.0)': + '@inquirer/confirm@6.1.1(@types/node@26.5.1)': dependencies: - '@inquirer/core': 11.2.1(@types/node@25.8.0) - '@inquirer/type': 4.0.7(@types/node@25.8.0) + '@inquirer/core': 11.2.1(@types/node@26.5.1) + '@inquirer/type': 4.0.7(@types/node@26.5.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 26.5.1 - '@inquirer/core@11.2.1(@types/node@25.8.0)': + '@inquirer/core@11.2.1(@types/node@26.5.1)': dependencies: '@inquirer/ansi': 2.0.7 '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@25.8.0) + '@inquirer/type': 4.0.7(@types/node@26.5.1) cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 26.5.1 '@inquirer/figures@2.0.7': {} - '@inquirer/type@4.0.7(@types/node@25.8.0)': + '@inquirer/type@4.0.7(@types/node@26.5.1)': optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 26.5.1 '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -3885,12 +3948,20 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} '@mswjs/interceptors@0.41.9': dependencies: @@ -3901,37 +3972,30 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@next/env@16.2.10': {} + '@next/env@16.3.5': {} - '@next/swc-darwin-arm64@16.2.10': + '@next/swc-darwin-arm64@16.3.5': optional: true - '@next/swc-darwin-x64@16.2.10': + '@next/swc-darwin-x64@16.3.5': optional: true - '@next/swc-linux-arm64-gnu@16.2.10': + '@next/swc-linux-arm64-gnu@16.3.5': optional: true - '@next/swc-linux-arm64-musl@16.2.10': + '@next/swc-linux-arm64-musl@16.3.5': optional: true - '@next/swc-linux-x64-gnu@16.2.10': + '@next/swc-linux-x64-gnu@16.3.5': optional: true - '@next/swc-linux-x64-musl@16.2.10': + '@next/swc-linux-x64-musl@16.3.5': optional: true - '@next/swc-win32-arm64-msvc@16.2.10': + '@next/swc-win32-arm64-msvc@16.3.5': optional: true - '@next/swc-win32-x64-msvc@16.2.10': + '@next/swc-win32-x64-msvc@16.3.5': optional: true '@nodelib/fs.scandir@2.1.5': @@ -3944,7 +4008,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 + fastq: 1.20.3 '@open-draft/deferred-promise@2.2.0': {} @@ -3957,59 +4021,55 @@ snapshots: '@open-draft/until@2.1.0': {} - '@oxc-project/types@0.130.0': {} + '@oxc-project/types@0.149.0': {} '@pkgr/core@0.3.6': {} '@popperjs/core@2.11.8': {} - '@rolldown/binding-android-arm64@1.0.1': + '@rolldown/binding-android-arm-eabi@1.2.8': optional: true - '@rolldown/binding-darwin-arm64@1.0.1': + '@rolldown/binding-android-arm64@1.2.8': optional: true - '@rolldown/binding-darwin-x64@1.0.1': + '@rolldown/binding-darwin-arm64@1.2.8': optional: true - '@rolldown/binding-freebsd-x64@1.0.1': + '@rolldown/binding-darwin-x64@1.2.8': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + '@rolldown/binding-freebsd-x64@1.2.8': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.1': + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.1': + '@rolldown/binding-linux-arm64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.1': + '@rolldown/binding-linux-arm64-musl@1.2.8': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.1': + '@rolldown/binding-linux-ppc64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.1': + '@rolldown/binding-linux-s390x-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-musl@1.0.1': + '@rolldown/binding-linux-x64-gnu@1.2.8': optional: true - '@rolldown/binding-openharmony-arm64@1.0.1': + '@rolldown/binding-linux-x64-musl@1.2.8': optional: true - '@rolldown/binding-wasm32-wasi@1.0.1': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@rolldown/binding-openharmony-arm64@1.2.8': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.1': + '@rolldown/binding-win32-arm64-msvc@1.2.8': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.1': + '@rolldown/binding-win32-x64-msvc@1.2.8': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -4018,19 +4078,17 @@ snapshots: dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.5 + picomatch: 4.0.7 '@rtsao/scc@1.1.0': {} '@sindresorhus/merge-streams@4.0.0': {} - '@standard-schema/spec@1.1.0': {} - - '@swc/helpers@0.5.15': + '@swc/helpers@0.5.23': dependencies: tslib: 2.8.1 - '@testing-library/dom@10.4.1': + '@testing-library/dom@10.4.2': dependencies: '@babel/code-frame': 7.29.7 '@babel/runtime': 7.29.7 @@ -4041,32 +4099,30 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.9.1': + '@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.0)': dependencies: '@adobe/css-tools': 4.5.0 + '@testing-library/dom': 10.4.2 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 + optionalDependencies: + vitest: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@testing-library/react@16.3.3(@testing-library/dom@10.4.2)(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@babel/runtime': 7.29.7 - '@testing-library/dom': 10.4.1 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + '@testing-library/dom': 10.4.2 + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.3.0 - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': + '@testing-library/user-event@14.6.7(@testing-library/dom@10.4.2)': dependencies: - '@testing-library/dom': 10.4.1 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true + '@testing-library/dom': 10.4.2 '@types/aria-query@5.0.4': {} @@ -4085,213 +4141,209 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@25.8.0': + '@types/node@26.5.1': dependencies: - undici-types: 7.24.6 + undici-types: 8.9.0 - '@types/react@19.2.14': + '@types/react@19.3.0': dependencies: csstype: 3.2.3 '@types/set-cookie-parser@2.4.10': dependencies: - '@types/node': 25.8.0 + '@types/node': 26.5.1 '@types/statuses@2.0.6': {} - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(@typescript/typescript6@6.0.2)(eslint@10.10.0)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.63.0 - eslint: 10.6.0 - ignore: 7.0.5 + '@typescript-eslint/parser': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + '@typescript-eslint/scope-manager': 8.70.0 + '@typescript-eslint/type-utils': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + '@typescript-eslint/utils': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + '@typescript-eslint/visitor-keys': 8.70.0 + eslint: 10.10.0 + ignore: 7.0.9 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0)': dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/scope-manager': 8.70.0 + '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/typescript-estree': 8.70.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/visitor-keys': 8.70.0 debug: 4.4.3 - eslint: 10.6.0 - typescript: 6.0.3 + eslint: 10.10.0 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.63.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.70.0(@typescript/typescript6@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/tsconfig-utils': 8.70.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.70.0 debug: 4.4.3 - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.63.0': + '@typescript-eslint/scope-manager@8.70.0': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/visitor-keys': 8.70.0 - '@typescript-eslint/tsconfig-utils@8.63.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.70.0(@typescript/typescript6@6.0.2)': dependencies: - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' - '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0)': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/typescript-estree': 8.70.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/utils': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) debug: 4.4.3 - eslint: 10.6.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + eslint: 10.10.0 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.63.0': {} + '@typescript-eslint/types@8.70.0': {} - '@typescript-eslint/typescript-estree@8.63.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.70.0(@typescript/typescript6@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.63.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/project-service': 8.70.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.70.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/visitor-keys': 8.70.0 debug: 4.4.3 - minimatch: 10.2.5 + minimatch: 10.2.6 semver: 7.8.5 tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - eslint: 10.6.0 - typescript: 6.0.3 + '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0) + '@typescript-eslint/scope-manager': 8.70.0 + '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/typescript-estree': 8.70.0(@typescript/typescript6@6.0.2) + eslint: 10.10.0 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.63.0': + '@typescript-eslint/visitor-keys@8.70.0': dependencies: - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/types': 8.70.0 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@6.0.2(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': - dependencies: - '@rolldown/pluginutils': 1.0.1 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true - '@vitest/coverage-v8@4.1.6(vitest@4.1.6)': - dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.6 - ast-v8-to-istanbul: 1.0.4 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.3 - obug: 2.1.3 - std-env: 4.2.0 - tinyrainbow: 3.1.0 - vitest: 4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true - '@vitest/expect@4.1.10': - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - chai: 6.2.2 - tinyrainbow: 3.1.0 + '@typescript/typescript-darwin-x64@7.0.2': + optional: true - '@vitest/expect@4.1.6': - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 - chai: 6.2.2 - tinyrainbow: 3.1.0 + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': - dependencies: - '@vitest/spy': 4.1.10 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true - '@vitest/mocker@4.1.6(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0))': - dependencies: - '@vitest/spy': 4.1.6 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.14.6(@types/node@25.8.0)(typescript@6.0.3) - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + '@typescript/typescript-linux-arm64@7.0.2': + optional: true - '@vitest/pretty-format@4.1.10': - dependencies: - tinyrainbow: 3.1.0 + '@typescript/typescript-linux-arm@7.0.2': + optional: true - '@vitest/pretty-format@4.1.6': - dependencies: - tinyrainbow: 3.1.0 + '@typescript/typescript-linux-loong64@7.0.2': + optional: true - '@vitest/runner@4.1.10': - dependencies: - '@vitest/utils': 4.1.10 - pathe: 2.0.3 + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true - '@vitest/runner@4.1.6': - dependencies: - '@vitest/utils': 4.1.6 - pathe: 2.0.3 + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true - '@vitest/snapshot@4.1.10': + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@typescript/typescript6@6.0.2': dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pathe: 2.0.3 + '@typescript/old': typescript@6.0.3 - '@vitest/snapshot@4.1.6': + '@vitejs/plugin-react@6.1.1(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13))': dependencies: - '@vitest/pretty-format': 4.1.6 - '@vitest/utils': 4.1.6 - magic-string: 0.30.21 - pathe: 2.0.3 + '@rolldown/pluginutils': 1.0.1 + vite: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) - '@vitest/spy@4.1.10': {} + '@vitest/coverage-v8@5.0.0(vitest@5.0.0)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.6 + magicast: 0.5.5 + obug: 2.2.1 + std-env: 4.2.0 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) - '@vitest/spy@4.1.6': {} + '@vitest/istanbul-lib-coverage@1.0.1': {} - '@vitest/utils@4.1.10': + '@vitest/istanbul-lib-report@1.0.1': dependencies: - '@vitest/pretty-format': 4.1.10 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/utils@4.1.6': + '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13))': dependencies: - '@vitest/pretty-format': 4.1.6 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 + estree-walker: 3.0.3 + magic-string: 1.3.1 + optionalDependencies: + msw: 2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2) + vite: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) + + '@vitest/spy@5.0.0': {} '@volar/language-core@2.4.28': dependencies: @@ -4303,13 +4355,13 @@ snapshots: dependencies: '@volar/language-core': 2.4.28 path-browserify: 1.0.1 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 - acorn-jsx@5.3.2(acorn@8.17.0): + acorn-jsx@5.3.2(acorn@8.18.0): dependencies: - acorn: 8.17.0 + acorn: 8.18.0 - acorn@8.17.0: {} + acorn@8.18.0: {} ajv@6.15.0: dependencies: @@ -4339,14 +4391,14 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.9: + array-includes@3.2.0: dependencies: call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 es-abstract: 1.24.2 es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 + es-shim-unscopables: 1.1.0 is-string: 1.1.1 math-intrinsics: 1.1.0 @@ -4405,7 +4457,7 @@ snapshots: ast-types-flow@0.0.8: {} - ast-v8-to-istanbul@1.0.4: + ast-v8-to-istanbul@1.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -4417,7 +4469,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.12.1: {} + axe-core@4.13.0: {} axobject-query@4.1.0: {} @@ -4425,7 +4477,7 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.42: {} + baseline-browser-mapping@2.11.23: {} bidi-js@1.0.3: dependencies: @@ -4435,12 +4487,12 @@ snapshots: dependencies: '@popperjs/core': 2.11.8 - brace-expansion@1.1.16: + brace-expansion@1.1.18: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@5.0.7: + brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -4448,13 +4500,21 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.5: + browserslist@4.28.9: dependencies: - baseline-browser-mapping: 2.10.42 - caniuse-lite: 1.0.30001803 - electron-to-chromium: 1.5.389 - node-releases: 2.0.50 - update-browserslist-db: 1.2.3(browserslist@4.28.5) + baseline-browser-mapping: 2.11.23 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.427 + node-releases: 2.0.55 + update-browserslist-db: 1.3.3(browserslist@4.28.9) + + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 call-bind-apply-helpers@1.0.2: dependencies: @@ -4475,7 +4535,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001803: {} + caniuse-lite@1.0.30001810: {} chai@6.2.2: {} @@ -4501,7 +4561,7 @@ snapshots: color-name@1.1.4: {} - comment-parser@1.4.7: {} + comment-parser@1.4.9: {} compare-versions@6.1.1: {} @@ -4509,7 +4569,7 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.4: {} + confbox@0.3.1: {} convert-source-map@2.0.0: {} @@ -4534,18 +4594,18 @@ snapshots: cpy-cli@7.0.0: dependencies: - cpy: 13.2.2 - globby: 16.2.1 + cpy: 13.2.3 + globby: 16.2.4 meow: 14.1.0 - cpy@13.2.2: + cpy@13.2.3: dependencies: copy-file: 11.1.0 - globby: 16.2.1 + globby: 16.2.4 junk: 4.0.1 micromatch: 4.0.8 p-filter: 4.1.0 - p-map: 7.0.5 + p-map: 7.0.8 cross-env@10.1.0: dependencies: @@ -4636,13 +4696,13 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - electron-to-chromium@1.5.389: {} + electron-to-chromium@1.5.427: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - enhanced-resolve@5.24.2: + enhanced-resolve@5.25.1: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -4696,7 +4756,7 @@ snapshots: object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 - own-keys: 1.0.1 + own-keys: 1.0.2 regexp.prototype.flags: 1.5.4 safe-array-concat: 1.1.4 safe-push-apply: 1.0.0 @@ -4717,7 +4777,7 @@ snapshots: es-errors@1.3.0: {} - es-iterator-helpers@1.3.3: + es-iterator-helpers@1.4.0: dependencies: call-bind: 1.0.9 call-bound: 1.0.4 @@ -4736,7 +4796,7 @@ snapshots: iterator.prototype: 1.1.5 math-intrinsics: 1.1.0 - es-module-lexer@2.3.0: {} + es-module-lexer@2.3.2: {} es-object-atoms@1.1.2: dependencies: @@ -4762,47 +4822,47 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.28.1: + esbuild@0.28.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@10.6.0): + eslint-compat-utils@0.5.1(eslint@10.10.0): dependencies: - eslint: 10.6.0 + eslint: 10.10.0 semver: 7.8.5 - eslint-config-prettier@10.1.8(eslint@10.6.0): + eslint-config-prettier@10.1.8(eslint@10.10.0): dependencies: - eslint: 10.6.0 + eslint: 10.10.0 eslint-import-resolver-node@0.3.10: dependencies: @@ -4812,35 +4872,35 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(eslint-import-resolver-node@0.3.10)(eslint@10.10.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) - eslint: 10.6.0 + '@typescript-eslint/parser': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + eslint: 10.10.0 eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@10.6.0): + eslint-plugin-es-x@7.8.0(eslint@10.10.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0) '@eslint-community/regexpp': 4.12.2 - eslint: 10.6.0 - eslint-compat-utils: 0.5.1(eslint@10.6.0) + eslint: 10.10.0 + eslint-compat-utils: 0.5.1(eslint@10.10.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(eslint@10.10.0): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 + array-includes: 3.2.0 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.6.0 + eslint: 10.10.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.6.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0))(eslint-import-resolver-node@0.3.10)(eslint@10.10.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -4852,23 +4912,23 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@10.10.0): dependencies: aria-query: 5.3.2 - array-includes: 3.1.9 + array-includes: 3.2.0 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.12.1 + axe-core: 4.13.0 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 10.6.0 + eslint: 10.10.0 hasown: 2.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -4877,51 +4937,51 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-n@18.2.1(eslint@10.6.0)(typescript@6.0.3): + eslint-plugin-n@18.3.0(@typescript/typescript6@6.0.2)(eslint@10.10.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - enhanced-resolve: 5.24.2 - eslint: 10.6.0 - eslint-plugin-es-x: 7.8.0(eslint@10.6.0) - get-tsconfig: 4.14.0 + '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0) + enhanced-resolve: 5.25.1 + eslint: 10.10.0 + eslint-plugin-es-x: 7.8.0(eslint@10.10.0) + get-tsconfig: 4.14.3 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 semver: 7.8.5 optionalDependencies: - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' eslint-plugin-no-only-tests@3.4.0: {} - eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5): + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.10.0))(eslint@10.10.0)(prettier@3.9.6): dependencies: - eslint: 10.6.0 - prettier: 3.9.5 + eslint: 10.10.0 + prettier: 3.9.6 prettier-linter-helpers: 1.0.1 synckit: 0.11.13 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.6.0) + eslint-config-prettier: 10.1.8(eslint@10.10.0) - eslint-plugin-react-hooks@7.1.1(eslint@10.6.0): + eslint-plugin-react-hooks@7.1.1(eslint@10.10.0): dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 - eslint: 10.6.0 + '@babel/parser': 7.29.8 + eslint: 10.10.0 hermes-parser: 0.25.1 - zod: 4.4.3 - zod-validation-error: 4.0.2(zod@4.4.3) + zod: 4.6.5 + zod-validation-error: 4.0.2(zod@4.6.5) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@10.6.0): + eslint-plugin-react@7.37.5(eslint@10.10.0): dependencies: - array-includes: 3.1.9 + array-includes: 3.2.0 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.3.3 - eslint: 10.6.0 + es-iterator-helpers: 1.4.0 + eslint: 10.10.0 estraverse: 5.3.0 hasown: 2.0.4 jsx-ast-utils: 3.3.5 @@ -4932,29 +4992,29 @@ snapshots: prop-types: 15.8.1 resolve: 2.0.0-next.7 semver: 6.3.1 - string.prototype.matchall: 4.0.12 + string.prototype.matchall: 4.1.0 string.prototype.repeat: 1.0.0 - eslint-plugin-regexp@3.1.1(eslint@10.6.0): + eslint-plugin-regexp@3.3.0(eslint@10.10.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0) '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.7 - eslint: 10.6.0 - jsdoc-type-pratt-parser: 7.2.0 + comment-parser: 1.4.9 + eslint: 10.10.0 + jsdoc-type-pratt-parser: 9.2.1 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-simple-import-sort@13.0.0(eslint@10.6.0): + eslint-plugin-simple-import-sort@14.0.0(eslint@10.10.0): dependencies: - eslint: 10.6.0 + eslint: 10.10.0 - eslint-plugin-testing-library@7.16.2(eslint@10.6.0)(typescript@6.0.3): + eslint-plugin-testing-library@7.16.2(@typescript/typescript6@6.0.2)(eslint@10.10.0): dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) - eslint: 10.6.0 + '@typescript-eslint/scope-manager': 8.70.0 + '@typescript-eslint/utils': 8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0) + eslint: 10.10.0 transitivePeerDependencies: - supports-color - typescript @@ -4972,14 +5032,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.6.0: + eslint@10.10.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 - '@eslint/config-helpers': 0.6.0 + '@eslint/config-helpers': 0.7.0 '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 + '@eslint/plugin-kit': 0.7.3 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4994,14 +5054,14 @@ snapshots: esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 + file-entry-cache: 11.1.5 find-up: 5.0.0 glob-parent: 6.0.2 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.5 + minimatch: 10.2.6 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -5009,14 +5069,14 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) eslint-visitor-keys: 4.2.1 espree@11.2.0: dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: @@ -5039,7 +5099,7 @@ snapshots: expect-type@1.4.0: {} - exsolve@1.1.0: {} + exsolve@1.1.1: {} fast-deep-equal@3.1.3: {} @@ -5067,17 +5127,17 @@ snapshots: dependencies: fast-string-width: 3.0.2 - fastq@1.20.1: + fastq@1.20.3: dependencies: reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 - file-entry-cache@8.0.0: + file-entry-cache@11.1.5: dependencies: - flat-cache: 4.0.1 + flat-cache: 6.1.23 fill-range@7.1.1: dependencies: @@ -5088,12 +5148,13 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@4.0.1: + flat-cache@6.1.23: dependencies: - flatted: 3.4.2 - keyv: 4.5.4 + cacheable: 2.5.0 + flatted: 3.4.4 + hookified: 1.15.1 - flatted@3.4.2: {} + flatted@3.4.4: {} for-each@0.3.5: dependencies: @@ -5150,7 +5211,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.14.0: + get-tsconfig@4.14.3: dependencies: resolve-pkg-maps: 1.0.0 @@ -5162,9 +5223,11 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regexp@0.4.1: {} + glob@13.0.6: dependencies: - minimatch: 10.2.5 + minimatch: 10.2.6 minipass: 7.1.3 path-scurry: 2.0.2 @@ -5186,12 +5249,13 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@16.2.1: + globby@16.2.4: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 - ignore: 7.0.5 + ignore: 7.0.9 is-path-inside: 4.0.0 + micromatch: 4.0.8 slash: 5.1.0 unicorn-magic: 0.4.0 @@ -5205,8 +5269,6 @@ snapshots: has-bigints@1.1.0: {} - has-flag@4.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -5221,6 +5283,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -5236,17 +5302,19 @@ snapshots: dependencies: hermes-estree: 0.25.1 + hookified@1.15.1: {} + + hookified@2.2.0: {} + html-encoding-sniffer@6.0.0: dependencies: '@exodus/bytes': 1.15.1 transitivePeerDependencies: - '@noble/hashes' - html-escaper@2.0.2: {} - ignore@5.3.2: {} - ignore@7.0.5: {} + ignore@7.0.9: {} import-fresh@3.3.1: dependencies: @@ -5398,19 +5466,6 @@ snapshots: isexe@2.0.0: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -5424,18 +5479,21 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.3.0: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@7.2.0: {} + jsdoc-type-pratt-parser@9.2.1: + dependencies: + '@types/estree': 1.0.9 + '@types/node': 26.5.1 - jsdom@29.1.1: + jsdom@30.0.1: dependencies: - '@asamuzakjp/css-color': 5.1.11 - '@asamuzakjp/dom-selector': 7.1.1 + '@asamuzakjp/css-color': 6.0.7 + '@asamuzakjp/dom-selector': 8.3.2 '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.6(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.13(css-tree@3.2.1) '@exodus/bytes': 1.15.1 css-tree: 3.2.1 data-urls: 7.0.0 @@ -5447,19 +5505,17 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.2 - undici: 7.28.0 + undici: 8.10.2 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1 + whatwg-url: 17.1.1 xml-name-validator: 5.0.0 transitivePeerDependencies: - '@noble/hashes' jsesc@3.1.0: {} - json-buffer@3.0.1: {} - json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -5472,16 +5528,16 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.9 + array-includes: 3.2.0 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 junk@4.0.1: {} - keyv@4.5.4: + keyv@5.6.0: dependencies: - json-buffer: 3.0.1 + '@keyv/serialize': 1.1.1 kolorist@1.8.0: {} @@ -5496,59 +5552,59 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-android-arm64@1.32.0: + lightningcss-android-arm64@1.33.0: optional: true - lightningcss-darwin-arm64@1.32.0: + lightningcss-darwin-arm64@1.33.0: optional: true - lightningcss-darwin-x64@1.32.0: + lightningcss-darwin-x64@1.33.0: optional: true - lightningcss-freebsd-x64@1.32.0: + lightningcss-freebsd-x64@1.33.0: optional: true - lightningcss-linux-arm-gnueabihf@1.32.0: + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true - lightningcss-linux-arm64-gnu@1.32.0: + lightningcss-linux-arm64-gnu@1.33.0: optional: true - lightningcss-linux-arm64-musl@1.32.0: + lightningcss-linux-arm64-musl@1.33.0: optional: true - lightningcss-linux-x64-gnu@1.32.0: + lightningcss-linux-x64-gnu@1.33.0: optional: true - lightningcss-linux-x64-musl@1.32.0: + lightningcss-linux-x64-musl@1.33.0: optional: true - lightningcss-win32-arm64-msvc@1.32.0: + lightningcss-win32-arm64-msvc@1.33.0: optional: true - lightningcss-win32-x64-msvc@1.32.0: + lightningcss-win32-x64-msvc@1.33.0: optional: true - lightningcss@1.32.0: + lightningcss@1.33.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 local-pkg@1.2.1: dependencies: mlly: 1.8.2 - pkg-types: 2.3.1 + pkg-types: 2.3.3 quansync: 0.2.11 locate-path@6.0.0: @@ -5569,17 +5625,17 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.3: + magic-string@1.3.1: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - source-map-js: 1.2.1 + '@jridgewell/sourcemap-codec': 1.6.0 - make-dir@4.0.0: + magicast@0.5.5: dependencies: - semver: 7.8.5 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + source-map-js: 1.2.1 math-intrinsics@1.1.0: {} @@ -5596,13 +5652,13 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.2.5: + minimatch@10.2.6: dependencies: - brace-expansion: 5.0.7 + brace-expansion: 5.0.9 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.16 + brace-expansion: 1.1.18 minimist@1.2.8: {} @@ -5612,16 +5668,16 @@ snapshots: mlly@1.8.2: dependencies: - acorn: 8.17.0 + acorn: 8.18.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.4 ms@2.1.3: {} - msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3): + msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2): dependencies: - '@inquirer/confirm': 6.1.1(@types/node@25.8.0) + '@inquirer/confirm': 6.1.1(@types/node@26.5.1) '@mswjs/interceptors': 0.41.9 '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 @@ -5640,38 +5696,39 @@ snapshots: until-async: 3.0.2 yargs: 17.7.3 optionalDependencies: - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - '@types/node' mute-stream@3.0.0: {} - nanoid@3.3.15: {} + nanoid@3.3.19: {} natural-compare@1.4.0: {} - next@16.2.10(@babel/core@7.29.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + next@16.3.5(@babel/core@7.29.7)(@types/node@26.5.1)(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@next/env': 16.2.10 - '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.42 - caniuse-lite: 1.0.30001803 - postcss: 8.4.31 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7) + '@next/env': 16.3.5 + '@swc/helpers': 0.5.23 + baseline-browser-mapping: 2.11.23 + caniuse-lite: 1.0.30001810 + postcss: 8.5.23 + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.3.0) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.10 - '@next/swc-darwin-x64': 16.2.10 - '@next/swc-linux-arm64-gnu': 16.2.10 - '@next/swc-linux-arm64-musl': 16.2.10 - '@next/swc-linux-x64-gnu': 16.2.10 - '@next/swc-linux-x64-musl': 16.2.10 - '@next/swc-win32-arm64-msvc': 16.2.10 - '@next/swc-win32-x64-msvc': 16.2.10 - sharp: 0.34.5 + '@next/swc-darwin-arm64': 16.3.5 + '@next/swc-darwin-x64': 16.3.5 + '@next/swc-linux-arm64-gnu': 16.3.5 + '@next/swc-linux-arm64-musl': 16.3.5 + '@next/swc-linux-x64-gnu': 16.3.5 + '@next/swc-linux-x64-musl': 16.3.5 + '@next/swc-win32-arm64-msvc': 16.3.5 + '@next/swc-win32-x64-msvc': 16.3.5 + sharp: 0.35.4(@types/node@26.5.1) transitivePeerDependencies: - '@babel/core' + - '@types/node' - babel-plugin-macros node-exports-info@1.6.2: @@ -5681,7 +5738,7 @@ snapshots: object.entries: 1.1.9 semver: 6.3.1 - node-releases@2.0.50: {} + node-releases@2.0.55: {} noms@0.0.0: dependencies: @@ -5730,7 +5787,7 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.2 - obug@2.1.3: {} + obug@2.2.1: {} once@1.4.0: dependencies: @@ -5747,8 +5804,9 @@ snapshots: outvariant@1.4.3: {} - own-keys@1.0.1: + own-keys@1.0.2: dependencies: + call-bound: 1.0.4 get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 @@ -5759,7 +5817,7 @@ snapshots: p-filter@4.1.0: dependencies: - p-map: 7.0.5 + p-map: 7.0.8 p-limit@3.1.0: dependencies: @@ -5769,7 +5827,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.5: {} + p-map@7.0.8: {} p-timeout@6.1.4: {} @@ -5806,7 +5864,7 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.5: {} + picomatch@4.0.7: {} pkg-types@1.3.1: dependencies: @@ -5814,23 +5872,23 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - pkg-types@2.3.1: + pkg-types@2.3.3: dependencies: - confbox: 0.2.4 - exsolve: 1.1.0 + confbox: 0.3.1 + exsolve: 1.1.1 pathe: 2.0.3 possible-typed-array-names@1.1.0: {} - postcss@8.4.31: + postcss@8.5.23: dependencies: - nanoid: 3.3.15 + nanoid: 3.3.19 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.16: + postcss@8.5.28: dependencies: - nanoid: 3.3.15 + nanoid: 3.3.19 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -5840,7 +5898,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.9.5: {} + prettier@3.9.6: {} pretty-format@27.5.1: dependencies: @@ -5858,34 +5916,38 @@ snapshots: punycode@2.3.1: {} + qified@0.10.1: + dependencies: + hookified: 2.2.0 + quansync@0.2.11: {} queue-microtask@1.2.3: {} - react-dom@19.2.7(react@19.2.7): + react-dom@19.3.0(react@19.3.0): dependencies: - react: 19.2.7 - scheduler: 0.27.0 + react: 19.3.0 + scheduler: 0.28.0 react-is@16.13.1: {} react-is@17.0.2: {} - react-router-dom@7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + react-router-dom@7.18.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-router: 7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + react-router: 7.18.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - react-router@7.18.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + react-router@7.18.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: cookie: 1.1.1 - react: 19.2.7 + react: 19.3.0 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.7(react@19.2.7) + react-dom: 19.3.0(react@19.3.0) - react@19.2.7: {} + react@19.3.0: {} readable-stream@1.0.34: dependencies: @@ -5964,26 +6026,26 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.0.1: + rolldown@1.2.8: dependencies: - '@oxc-project/types': 0.130.0 + '@oxc-project/types': 0.149.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.1 - '@rolldown/binding-darwin-arm64': 1.0.1 - '@rolldown/binding-darwin-x64': 1.0.1 - '@rolldown/binding-freebsd-x64': 1.0.1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 - '@rolldown/binding-linux-arm64-gnu': 1.0.1 - '@rolldown/binding-linux-arm64-musl': 1.0.1 - '@rolldown/binding-linux-ppc64-gnu': 1.0.1 - '@rolldown/binding-linux-s390x-gnu': 1.0.1 - '@rolldown/binding-linux-x64-gnu': 1.0.1 - '@rolldown/binding-linux-x64-musl': 1.0.1 - '@rolldown/binding-openharmony-arm64': 1.0.1 - '@rolldown/binding-wasm32-wasi': 1.0.1 - '@rolldown/binding-win32-arm64-msvc': 1.0.1 - '@rolldown/binding-win32-x64-msvc': 1.0.1 + '@rolldown/binding-android-arm-eabi': 1.2.8 + '@rolldown/binding-android-arm64': 1.2.8 + '@rolldown/binding-darwin-arm64': 1.2.8 + '@rolldown/binding-darwin-x64': 1.2.8 + '@rolldown/binding-freebsd-x64': 1.2.8 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.8 + '@rolldown/binding-linux-arm64-gnu': 1.2.8 + '@rolldown/binding-linux-arm64-musl': 1.2.8 + '@rolldown/binding-linux-ppc64-gnu': 1.2.8 + '@rolldown/binding-linux-s390x-gnu': 1.2.8 + '@rolldown/binding-linux-x64-gnu': 1.2.8 + '@rolldown/binding-linux-x64-musl': 1.2.8 + '@rolldown/binding-openharmony-arm64': 1.2.8 + '@rolldown/binding-win32-arm64-msvc': 1.2.8 + '@rolldown/binding-win32-x64-msvc': 1.2.8 run-parallel@1.2.0: dependencies: @@ -6014,7 +6076,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.27.0: {} + scheduler@0.28.0: {} scslre@0.3.0: dependencies: @@ -6052,36 +6114,38 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.2 - sharp@0.34.5: + sharp@0.35.4(@types/node@26.5.1): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 26.5.1 optional: true shebang-command@2.0.0: @@ -6151,7 +6215,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.2 - string.prototype.matchall@4.0.12: + string.prototype.matchall@4.1.0: dependencies: call-bind: 1.0.9 call-bound: 1.0.4 @@ -6214,24 +6278,20 @@ snapshots: strip-json-comments@3.1.1: {} - styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.7): + styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.3.0): dependencies: client-only: 0.0.1 - react: 19.2.7 + react: 19.3.0 optionalDependencies: '@babel/core': 7.29.7 - styled-jsx@5.1.7(@babel/core@7.29.7)(react@19.2.7): + styled-jsx@5.1.7(@babel/core@7.29.7)(react@19.3.0): dependencies: client-only: 0.0.1 - react: 19.2.7 + react: 19.3.0 optionalDependencies: '@babel/core': 7.29.7 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} symbol-tree@3.2.4: {} @@ -6249,16 +6309,16 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - tinybench@2.9.0: {} + tinybench@6.1.4: {} - tinyexec@1.2.4: {} + tinyexec@1.3.0: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 - tinyrainbow@3.1.0: {} + tinyrainbow@3.1.1: {} tldts-core@7.4.7: {} @@ -6278,9 +6338,9 @@ snapshots: dependencies: punycode: 2.3.1 - ts-api-utils@2.5.0(typescript@6.0.3): + ts-api-utils@2.5.0(@typescript/typescript6@6.0.2): dependencies: - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' tsconfig-paths@3.15.0: dependencies: @@ -6291,9 +6351,9 @@ snapshots: tslib@2.8.1: {} - tsx@4.23.0: + tsx@4.23.13: dependencies: - esbuild: 0.28.1 + esbuild: 0.28.2 optionalDependencies: fsevents: 2.3.3 @@ -6340,6 +6400,29 @@ snapshots: typescript@6.0.3: {} + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + ufo@1.6.4: {} unbox-primitive@1.1.0: @@ -6349,44 +6432,45 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@7.24.6: {} + undici-types@8.9.0: {} - undici@7.28.0: {} + undici@8.10.2: {} unicorn-magic@0.4.0: {} - unplugin-dts@1.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + unplugin-dts@1.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)): dependencies: '@rollup/pluginutils': 5.4.0 '@volar/typescript': 2.4.28 compare-versions: 6.1.1 debug: 4.4.3 + glob-to-regexp: 0.4.1 kolorist: 1.8.0 local-pkg: 1.2.1 magic-string: 0.30.21 - typescript: 6.0.3 + typescript: '@typescript/typescript6@6.0.2' unplugin: 2.3.11 optionalDependencies: - esbuild: 0.28.1 - rolldown: 1.0.1 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + esbuild: 0.28.2 + rolldown: 1.2.8 + vite: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) transitivePeerDependencies: - supports-color unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.17.0 - picomatch: 4.0.5 + acorn: 8.18.0 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 until-async@3.0.2: {} untildify@4.0.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.5): + update-browserslist-db@1.3.3(browserslist@4.28.9): dependencies: - browserslist: 4.28.5 + browserslist: 4.28.9 escalade: 3.2.0 picocolors: 1.1.1 @@ -6396,11 +6480,11 @@ snapshots: util-deprecate@1.0.2: {} - vite-plugin-dts@5.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + vite-plugin-dts@5.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)): dependencies: - unplugin-dts: 1.0.0(esbuild@0.28.1)(rolldown@1.0.1)(typescript@6.0.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) + unplugin-dts: 1.1.0(@typescript/typescript6@6.0.2)(esbuild@0.28.2)(rolldown@1.2.8)(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) optionalDependencies: - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + vite: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) transitivePeerDependencies: - '@rspack/core' - '@vue/language-core' @@ -6410,83 +6494,49 @@ snapshots: - typescript - webpack - vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0): + vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.5 - postcss: 8.5.16 - rolldown: 1.0.1 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.28 + rolldown: 1.2.8 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 25.8.0 - esbuild: 0.28.1 + '@types/node': 26.5.1 + esbuild: 0.28.2 fsevents: 2.3.3 - tsx: 4.23.0 - - vitest@4.1.10(@types/node@25.8.0)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.0 - expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 25.8.0 - jsdom: 29.1.1 - transitivePeerDependencies: - - msw + tsx: 4.23.13 - vitest@4.1.6(@types/node@25.8.0)(@vitest/coverage-v8@4.1.6)(jsdom@29.1.1)(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)): + vitest@5.0.0(@types/node@26.5.1)(@vitest/coverage-v8@5.0.0)(jsdom@30.0.1)(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)): dependencies: - '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.8.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0)) - '@vitest/pretty-format': 4.1.6 - '@vitest/runner': 4.1.6 - '@vitest/snapshot': 4.1.6 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 - es-module-lexer: 2.3.0 + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@26.5.1)(@typescript/typescript6@6.0.2))(vite@8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13)) + chai: 6.2.2 + es-module-lexer: 2.3.2 expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.3 - pathe: 2.0.3 - picomatch: 4.0.5 + magic-string: 1.3.1 + obug: 2.2.1 + picomatch: 4.0.7 std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.2.4 + tinybench: 6.1.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.28.1)(tsx@4.23.0) + vite: 8.3.0(@types/node@26.5.1)(esbuild@0.28.2)(tsx@4.23.13) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.8.0 - '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) - jsdom: 29.1.1 + '@types/node': 26.5.1 + '@vitest/coverage-v8': 5.0.0(vitest@5.0.0) + jsdom: 30.0.1 transitivePeerDependencies: - msw - vscode-uri@3.1.0: {} + vscode-uri@3.2.0: {} w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - web-vitals@5.2.0: {} + web-vitals@6.2.1: {} webidl-conversions@8.0.1: {} @@ -6502,6 +6552,14 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' + whatwg-url@17.1.1: + dependencies: + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -6598,8 +6656,8 @@ snapshots: yocto-queue@0.1.0: {} - zod-validation-error@4.0.2(zod@4.4.3): + zod-validation-error@4.0.2(zod@4.6.5): dependencies: - zod: 4.4.3 + zod: 4.6.5 - zod@4.4.3: {} + zod@4.6.5: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 64fd273d4..9c1c025b1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,5 +5,3 @@ allowBuilds: esbuild: true msw: true sharp: true -minimumReleaseAgeExclude: - - prettier@3.9.5 diff --git a/tsconfig.base.json b/tsconfig.base.json index a84094ff4..34e9295c3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -5,8 +5,8 @@ "strict": true, "allowJs": true, "noEmit": true, - "moduleResolution": "node", - "ignoreDeprecations": "6.0", + "module": "ESNext", + "moduleResolution": "bundler", "esModuleInterop": true, "skipLibCheck": true, "verbatimModuleSyntax": true From 3b18c50d5fa7ab61522a7d962cfac7748fb7b638 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:56:57 +0200 Subject: [PATCH 554/565] Make React Oidc publish reruns idempotent when versions already exist on npm (#1728) (release) * Initial plan * Allow npm publish reruns to no-op Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * Allow publish verification after publish step failure Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- .github/workflows/npm-publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index dff156365..85f222029 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -375,6 +375,7 @@ jobs: - name: Publish packages to npm id: npm_publish if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + continue-on-error: true shell: bash env: EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} @@ -419,14 +420,13 @@ jobs: done if [[ "$published_count" -eq 0 ]]; then - echo "::error::No expected package was published." - exit 1 + echo "All expected package versions already exist on npm; skipping publish." fi echo "published_count=$published_count" >> "$GITHUB_OUTPUT" - name: Verify npm packages after publish - if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta' + if: always() && ((github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta') shell: bash env: EXPECTED_VERSION: ${{ steps.tag.outputs.new_version }} From 846494746b2bba4571aa8b4f60e3c7ccd5f2fbe4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 15:58:09 +0000 Subject: [PATCH 555/565] [skip ci] Update to version 7.29.3 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 284edb9a0..c6641ea22 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.2", + "version": "7.29.3", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 260ae531e..34a9d9fcf 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.2'; +export default '7.29.3'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 6c0d9ec4e..197c58dd9 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.2", + "version": "7.29.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 260ae531e..34a9d9fcf 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.2'; +export default '7.29.3'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index d82e1d04f..9c4a4e854 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.2", + "version": "7.29.3", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From e470a539874b0f8521718a3ad85764dd50d1da08 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 15:58:11 +0000 Subject: [PATCH 556/565] [skip ci] Generate changelog to version 7.29.3 --- CHANGELOG.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff02ad678..b87d033fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,16 @@ # Changelog +## v7.29.3 + +- [84649474](https://github.com/AxaFrance/oidc-client/commit/846494746b2bba4571aa8b4f60e3c7ccd5f2fbe4) - [skip ci] Update to version 7.29.3 in package.json, 2026-09-15 by *github-actions[bot]* +- [3b18c50d](https://github.com/AxaFrance/oidc-client/commit/3b18c50d5fa7ab61522a7d962cfac7748fb7b638) - Make React Oidc publish reruns idempotent when versions already exist on npm (#1728) (release), 2026-09-15 by *Copilot* +- [eb0f40a1](https://github.com/AxaFrance/oidc-client/commit/eb0f40a1a5c4740be3ec13d4e83b716110bdd327) - chore(deps): update all pnpm workspace dependencies (#1727) (release), 2026-09-15 by *Guillaume Chervet* +- [f91327ff](https://github.com/AxaFrance/oidc-client/commit/f91327ff95a465cc8ab2ec635ef3147bb8eb59c4) - fix(oidc): ignore bare trailing hash in getPath (release) (#1725), 2026-09-13 by *Paul Martin* + + ## v7.29.2 +- [9325ced4](https://github.com/AxaFrance/oidc-client/commit/9325ced4f10433e3db00c273749989c08727dcfa) - [skip ci] Generate changelog to version 7.29.2, 2026-09-02 by *github-actions[bot]* - [8e7d95fb](https://github.com/AxaFrance/oidc-client/commit/8e7d95fba420b1dc5515b2e9e7ccd1f5e08f6b6e) - [skip ci] Update to version 7.29.2 in package.json, 2026-09-02 by *github-actions[bot]* - [658d033f](https://github.com/AxaFrance/oidc-client/commit/658d033f02de693c03cd07a9a9dbab1d694d14f4) - fix: publish npm (release), 2026-09-02 by *Guillaume Chervet* - [99eb8992](https://github.com/AxaFrance/oidc-client/commit/99eb8992664560757d3e5e2799057d0b69088e1e) - fix: npm publish (release), 2026-09-02 by *Guillaume Chervet* @@ -322,8 +331,3 @@ - [de5da362](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* -## v7.23.1 - -- [0f69a114](https://github.com/AxaFrance/oidc-client/commit/0f69a114564134dee63f78654b9af82f0b291ec9) - fix(oidc): login async promise (release), 2024-11-27 by *Guillaume Chervet* - - From 95ab5aa41904bf837c97c2c876e0d26892b2c3e2 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 09:47:13 +0200 Subject: [PATCH 557/565] Clarify package documentation and replace architecture images with Mermaid (#1730) (release) * Initial plan * docs: clarify package guides and demo walkthroughs with Mermaid diagrams Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * docs: clarify legacy hash callback compatibility Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- README.md | 316 +++--- examples/nextjs-demo/README.md | 143 +-- examples/oidc-client-demo/README.md | 135 ++- examples/react-oidc-demo/README.md | 737 +++----------- packages/oidc-client-service-worker/README.md | 147 +++ packages/oidc-client/README.md | 867 ++++++----------- packages/react-oidc/README.md | 911 ++++++------------ 7 files changed, 1165 insertions(+), 2091 deletions(-) create mode 100644 packages/oidc-client-service-worker/README.md diff --git a/README.md b/README.md index 72a01f0fc..acf0dd7e6 100644 --- a/README.md +++ b/README.md @@ -1,183 +1,173 @@ -# @axa-fr/oidc-client - -[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) - -

- Sample React Oicd -

- -- [About](#about) -- [Getting Started](#getting-started) -- [Run The Demos](#run-the-demos) -- [How It Works](#how-it-works) -- Packages - - [`@axa-fr/oidc-client`](./packages/oidc-client#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Foidc-client.svg)](https://badge.fury.io/js/%40axa-fr%2Foidc-client) [![npm downloads](https://img.shields.io/npm/dw/@axa-fr/oidc-client)](https://www.npmjs.com/package/@axa-fr/oidc-client) - - [`@axa-fr/react-oidc`](./packages/react-oidc#readme.md) [![npm version](https://badge.fury.io/js/%40axa-fr%2Freact-oidc.svg)](https://badge.fury.io/js/%40axa-fr%2Freact-oidc) [![npm downloads](https://img.shields.io/npm/dw/@axa-fr/react-oidc)](https://www.npmjs.com/package/@axa-fr/react-oidc) - - `@axa-fr/svelte-oidc` : we are looking for contributor - - `@axa-fr/vue-oidc` : we are looking for contributor - - `@axa-fr/angular-oidc` : we are looking for contributor -- [FAQ](#FAQ) +# OIDC Client + +[![Continuous Integration](https://github.com/AxaFrance/oidc-client/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/oidc-client/actions/workflows/npm-publish.yml) +[![npm version](https://img.shields.io/npm/v/@axa-fr/oidc-client)](https://www.npmjs.com/package/@axa-fr/oidc-client) +[![npm version](https://img.shields.io/npm/v/@axa-fr/react-oidc)](https://www.npmjs.com/package/@axa-fr/react-oidc) + +Add OpenID Connect (OIDC) sign-in to browser applications using the OAuth 2.0 +Authorization Code flow with PKCE. Use the framework-independent client directly, +or the React components and hooks. + +- [Choose a package](#choose-a-package) +- [Getting started](#getting-started) +- [How it works](#how-it-works) +- [Security and deployment](#security-and-deployment) +- [Run the demos](#run-the-demos) +- [FAQ](#faq) - [Migrations](#migrations) - [Contribute](#contribute) -## About - -**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. -**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. -**@axa-fr/react-oidc** is for **React** (compatible next.js, etc.), we expect soon to provide one for **Vue**, **Angular** and **Svelte**. - -Demos: - -- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) -- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ - -**@axa-fr/oidc-client** is: - -- **Secure** : - - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) - - With optional [Pushed Authorization Requests (PAR)](./packages/oidc-client/README.md#pushed-authorization-requests-par), authorization parameters can be sent directly to the authorization server instead of through the browser URL - - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** : Unpacked Size on npm is **274 kB**, Minified `61.1kB`, Minified+GZIPPED `16.8kB` [Pkg stats via Bundlephobia.com](https://bundlephobia.com/package/@axa-fr/react-oidc) -- **Simple** - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file -- **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website -- **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure). - - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. - -Works perfectly well with: - -- [Auth0](https://auth0.com/) -- [Duende Identity Server](https://duendesoftware.com/) -- [Identity Server 4](https://github.com/IdentityServer/IdentityServer4) -- Azure AD -- Google -- AWS -- [Keycloak](https://www.keycloak.org/) -- etc., all OIDC providers - -## Getting Started - -### Getting Started with @axa-fr/oidc-client - -```sh -npm install @axa-fr/oidc-client --save - -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` - -> [!WARNING] -> If you use `Service Worker` mode, the `OidcServiceWorker.js` file should always be up to date with the version of the library. You may setup a postinstall script in your `package.json` file to update it at each npm install. For example : - -```json - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" - }, -``` - -More documentation : - -- [`@axa-fr/oidc-client`](./packages/oidc-client#readme) - -### Getting Started with @axa-fr/react-oidc - -```sh -npm install @axa-fr/react-oidc --save - -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist +## Choose a package + +| Package | Use it for | Documentation | +| ------------------------------------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@axa-fr/oidc-client` | Browser applications using any JavaScript framework, or no framework | [Installation, configuration, and API](./packages/oidc-client/README.md) | +| `@axa-fr/react-oidc` | React providers, protected components, authentication hooks, and authenticated fetch | [React quick start and recipes](./packages/react-oidc/README.md) | +| `@axa-fr/oidc-client-service-worker` | The worker used by both clients to isolate tokens and attach them to trusted requests | [Setup and deployment](./packages/oidc-client-service-worker/README.md) · [Protocol reference](./packages/oidc-client-service-worker/PROTOCOL.md) | + +Most applications install only one of the first two packages. The service worker +is included as a dependency; it does not replace the browser client. + +Features include automatic token renewal, named configurations for multiple +providers or scopes, optional service-worker token isolation, and support for +[DPoP](https://www.rfc-editor.org/rfc/rfc9449.html) and +[Pushed Authorization Requests (PAR)](./packages/oidc-client/README.md#pushed-authorization-requests-par) +when supported by your authorization server. + +## Getting started + +1. Register a **public browser client** with your OIDC provider. Enable the + Authorization Code flow with PKCE and register your exact callback and + post-logout URLs. Do not put a client secret in browser code. +2. Install the package for your application: + + ```sh + # Framework-independent applications + npm install @axa-fr/oidc-client + + # React applications — choose this instead + npm install @axa-fr/react-oidc + ``` + +3. Follow the [vanilla JavaScript quick start](./packages/oidc-client/README.md#getting-started) + or the [React quick start](./packages/react-oidc/README.md#getting-started). + Set your provider's `authority`, `client_id`, `redirect_uri`, and `scope`. +4. Choose whether to use the service worker. Its setup requires serving + `OidcServiceWorker.js` and configuring `OidcTrustedDomains.js`; installing the + npm package alone is not sufficient. + +Your provider must allow requests from your application origin to the endpoints +the browser calls, including the token endpoint. Request `offline_access` only +when your provider and client registration support refresh tokens. + +## How it works + +The client creates a PKCE challenge, redirects the browser to the provider, and +exchanges the returned authorization code for tokens. In service-worker mode, +the worker intercepts the token exchange and authenticated API requests: + +```mermaid +sequenceDiagram + actor User + participant App as Browser application + participant Worker as OIDC service worker + participant Provider as OIDC provider + participant API as Trusted API + User->>App: Select sign in + App->>Provider: Authorization request with PKCE challenge + Provider->>User: Authenticate and request consent + Provider-->>App: Redirect to callback with authorization code + App->>Worker: Exchange code with PKCE verifier + Worker->>Provider: Token request + Provider-->>Worker: Tokens + Worker-->>App: Token metadata and secured placeholders + App->>Worker: Request to a configured trusted API + Worker->>API: Request with access token + API-->>App: API response ``` -> [!WARNING] -> If you use Service Worker mode, the OidcServiceWorker.js file should always be up-to-date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : - -```json - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" - }, -``` - -More documentation: - -- [`@axa-fr/react-oidc`](./packages/react-oidc#readme) - -## Run The Demos +With the default token-hiding settings, the real access and refresh tokens stay +in the worker; the application receives placeholders instead. Without the worker, +the client manages tokens in browser storage and the authenticated fetch wrapper +adds the access token to API requests. + +## Security and deployment + +- **Service-worker isolation is not an XSS or CSRF prevention mechanism.** Malicious + code running in the application can still make requests on the user's behalf. + Apply a restrictive Content Security Policy and normal input/output protections. +- Use HTTPS in production. Service workers require a secure context; localhost + is suitable for development. +- Restrict `OidcTrustedDomains.js` to the provider endpoints and API URLs that + should receive tokens. Review these rules whenever you add an API. +- Keep `OidcServiceWorker.js` aligned with the installed library version using the + copy command and `postinstall` instructions in the package guides. +- Decide explicitly whether to permit fallback to browser storage or require the + worker with `service_worker_only: true`. Browser storage is accessible to + same-origin JavaScript. +- Configure your host to serve the application at callback URLs. If you enable + silent sign-in, use a separate silent callback URL and account for browser + restrictions on third-party cookies. +- Protect APIs on the server: a client-side route guard is not an authorization + boundary. + +See the [FAQ](./FAQ.md) for deployment and security considerations. + +## Run the demos + +Try the hosted [React demo](https://black-rock-0dc6b0d03.1.azurestaticapps.net/) or +[vanilla JavaScript demo](https://icy-glacier-004ab4303.2.azurestaticapps.net/). +These are learning environments, not production security templates. + +To run locally, use a Node.js version supported by the root +[`package.json`](./package.json) and its pinned pnpm version. From the repository +root: ```sh -git clone https://github.com/AxaFrance/oidc-client.git - -cd oidc-client -pnpm install - -# oidc client demo -cd examples/oidc-client-demo -pnpm install -pnpm start -# then navigate to http://localhost:5174 - -# react vite demo -cd examples/react-oidc-demo -pnpm install -pnpm start -# then navigate to http://localhost:4200 - -# react NextJS demo -cd examples/nextjs-demo -pnpm install -pnpm run dev -# then navigate to http://localhost:3001 +corepack enable +pnpm install --frozen-lockfile +pnpm build ``` -## How It Works - -

- Schema Authorization Code Grant with pcke flow on the using service worker -
- The service worker catch access_token and refresh_token that will never be accessible to the client. -

+Then choose one command, also from the repository root: -These components encapsulate the use of "`@axa-fr/oidc-client`" in order to hide workflow complexity. -Internally for "`@axa-fr/react-oidc`", native History API is used to be router library agnostic. +| Demo | Command | Guide | +| ------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| Vanilla JavaScript (Vite) | `pnpm --dir examples/oidc-client-demo start` | [Callbacks, session restoration, and token isolation](./examples/oidc-client-demo/README.md) | +| React (Vite) | `pnpm --dir examples/react-oidc-demo start` | [Hooks, protected components, API requests, and multiple configurations](./examples/react-oidc-demo/README.md) | +| Next.js (Pages Router) | `pnpm --dir examples/nextjs-demo dev` | [Browser authentication and custom history integration](./examples/nextjs-demo/README.md) | -More information about OIDC : - -- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) -- [English : Increase the security and simplicity of your information system with OpenID Connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -- [English: youtube react-oidc introduction](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) -- [French: youtube react-oidc introduction](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) +For Vite, open the URL printed in the terminal (normally `http://localhost:5173`; +another port is used if it is busy). The Next.js demo uses `http://localhost:3001`. +Register the actual origin and callback URLs with your provider before testing +sign-in. The demos use an external provider whose availability and registrations +are outside this repository's control. ## FAQ -- Frequented Asked Question [`FAQ`](./FAQ.md) +Start with the [FAQ](./FAQ.md) for common integration questions, then consult the +package guides for configuration and error handling. To report a problem, open an +[issue](https://github.com/AxaFrance/oidc-client/issues) with a minimal reproduction, +browser and package versions, and sanitized configuration. Never include tokens +or credentials. ## Migrations -- Migrating from v3 to v4 [`guide`](./MIGRATION_GUIDE_V3_TO_V4.md) -- Migrating from v3 to v5 [`guide`](./MIGRATION_GUIDE_V3_TO_V5.md) -- Migrating from v4 to v5 [`guide`](./MIGRATION_GUIDE_V4_TO_V5.md) -- Migrating from v5 to v6 [`guide`](./MIGRATION_GUIDE_V5_TO_V6.md) -- Migrating from v6 to v7 [`guide`](./MIGRATION_GUIDE_V6_TO_V7.md) +- [v3 to v4](./MIGRATION_GUIDE_V3_TO_V4.md) +- [v3 to v5](./MIGRATION_GUIDE_V3_TO_V5.md) +- [v4 to v5](./MIGRATION_GUIDE_V4_TO_V5.md) +- [v5 to v6](./MIGRATION_GUIDE_V5_TO_V6.md) +- [v6 to v7](./MIGRATION_GUIDE_V6_TO_V7.md) ## Contribute -- [How to run the solution and to contribute](./CONTRIBUTING.md) -- [Please respect our code of conduct](./CODE_OF_CONDUCT.md) +Read the [contribution guide](./CONTRIBUTING.md) and +[code of conduct](./CODE_OF_CONDUCT.md). The workspace contains the client, React +bindings, service worker, and demo applications. + +```sh +pnpm lint-fix +pnpm lint +pnpm test:ci +pnpm build +``` diff --git a/examples/nextjs-demo/README.md b/examples/nextjs-demo/README.md index c832eaadf..18048e8c8 100644 --- a/examples/nextjs-demo/README.md +++ b/examples/nextjs-demo/README.md @@ -1,61 +1,92 @@ -# Nextjs @axa-fr/react-oidc demo +# Next.js OIDC demo -## Getting Started +This example integrates `@axa-fr/react-oidc` with the Next.js **Pages Router**. +Authentication runs in the browser. It does **not** create a server-side session, +protect server-rendered data, or demonstrate the App Router. + +For hooks and components, see the +[React package documentation](../../packages/react-oidc/README.md). +For workspace setup and other examples, see the [repository README](../../README.md). + +## Run locally + +Run these commands from the **repository root**, using the Node.js version required +by the [root package manifest](../../package.json): ```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/nextjs-demo -npm install -npm run dev +corepack enable +pnpm install --frozen-lockfile +pnpm build +pnpm --dir examples/nextjs-demo dev ``` -To work with NextJS you need to inject your own history surcharge like the sample below. - -component/layout.js - -```javascript -import { OidcProvider } from '@axa-fr/react-oidc'; -import { useRouter } from 'next/router'; - -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:3001/#authentication/callback', - silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore the session - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', -}; - -const onEvent = (configurationName, eventName, data) => { - console.log(`oidc:${configurationName}:${eventName}`, data); -}; - -export default function Layout({ children }) { - const router = useRouter(); - const withCustomHistory = () => { - return { - replaceState: url => { - router - .replace({ - pathname: url, - }) - .then(() => { - window.dispatchEvent(new Event('popstate')); - }); - }, - }; - }; - - return ( - <> - -
{children}
-
- - ); -} -``` +Open **http://localhost:3001**. The `dev` script explicitly selects port `3001`, +and the OIDC callback configuration uses that same origin. + +## Configuration and provider requirements + +[`components/layout.js`](components/layout.js) contains the OIDC configuration. +It uses the external [Duende demo provider](https://demo.duendesoftware.com), +client ID `interactive.public`, and scopes `openid profile email api offline_access`. +Use that provider's published sign-in options; this repository does not manage its +accounts, availability, or client registrations. + +The current callback URLs are fixed strings, not derived from the browser origin: + +| Purpose | Configured URL | +| --------------- | ------------------------------------------------------- | +| Login callback | `http://localhost:3001/#authentication/callback` | +| Silent callback | `http://localhost:3001/#authentication/silent-callback` | + +If you change the host, port, or deployment URL, update the configuration and +provider registration together. OAuth redirect URIs must not contain fragments; +these legacy hash-based callbacks may be rejected by your provider. For a new +integration, use registered path-based callbacks and provide the corresponding +Next.js routes. + +For your own provider, register a public browser client supporting Authorization +Code with PKCE, enable the intended scopes and refresh-token support, and allow +the browser origin in its CORS settings. Register any post-logout return URLs you +use. Do not place confidential client secrets in this browser configuration. +Silent sign-in depends on provider session cookies and browser cookie policies. + +## How the integration works + +1. [`pages/_app.js`](pages/_app.js) dynamically loads the layout with `ssr: false`. + The layout wraps the page in `OidcProvider`. +2. [`pages/index.js`](pages/index.js) also loads the home component with + `ssr: false`, keeping the demonstration's authentication UI in the browser. +3. The layout passes `withCustomHistory` to `OidcProvider`. Its `replaceState` + implementation calls `router.replace({ pathname: url })` and dispatches a + `popstate` event **after the replacement completes**. This connects the + library's callback navigation to the Next.js router. +4. [`components/home.js`](components/home.js) wraps the profile in `OidcSecure` + and reads access-token, ID-token, and user information through React hooks. + +Use the source files above as the maintained example rather than copying a +separate layout implementation from this README. + +## Walkthrough + +1. Open the home page. `OidcSecure` starts authentication when no session exists; + there is no separate login button on this page. +2. Sign in at the provider and return to the application. +3. Inspect the access-token, ID-token, and user-information cards. Browser console + messages from `onEvent` show authentication lifecycle events. +4. Reload to observe session restoration. If the callback fails, check the exact + callback URL, the provider registration, browser cookie restrictions, and the + console/network logs. + +## Security boundaries + +Although installation copies worker assets into [`public`](public), the layout +does not configure `service_worker_relative_url`: **service worker token isolation +is not enabled in this demo**. Tokens are accessible to browser JavaScript and +displayed on the page. Copying worker files alone does not enable protection; see +the [service worker documentation](../../packages/oidc-client-service-worker/README.md) +for configuration and trusted-domain requirements. + +This is an educational integration, not a production authentication template. +Remove token displays and sensitive debug logging before adapting it. Enforce +authorization independently on APIs and server resources; a browser-side +`OidcSecure` boundary is not server-side access control. diff --git a/examples/oidc-client-demo/README.md b/examples/oidc-client-demo/README.md index b87cb0044..96270e86d 100644 --- a/examples/oidc-client-demo/README.md +++ b/examples/oidc-client-demo/README.md @@ -1,46 +1,89 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). +# Vanilla OIDC client demo + +This Vite application demonstrates `@axa-fr/oidc-client` without a UI framework. +It creates an OIDC client, starts login, processes the callback, restores an existing +session, and signs out. The implementation is in [`src/index.tsx`](src/index.tsx). + +For the library API and authentication flow, see the +[OIDC client documentation](../../packages/oidc-client/README.md). +For workspace requirements and other examples, see the [repository README](../../README.md). + +## Run locally + +Run these commands from the **repository root**, using the Node.js version required +by the [root package manifest](../../package.json): + +```sh +corepack enable +pnpm install --frozen-lockfile +pnpm build +pnpm --dir examples/oidc-client-demo start +``` + +Open the URL printed by Vite, normally `http://localhost:5173`. No port is fixed in +[`vite.config.js`](vite.config.js); if that port is busy, Vite may choose another. +The origin you use must match the identity provider's client registration. + +## Configuration and callbacks + +The `configuration` object in [`src/index.tsx`](src/index.tsx) uses the external +[Duende demo provider](https://demo.duendesoftware.com) with client ID +`interactive.public.short` and scopes `openid profile email api offline_access`. +Use the sign-in options published by that provider; this repository does not +manage its accounts, availability, or allowed redirect URLs. + +The callback URLs are built from `window.location.origin`. At the usual Vite +origin, they are: + +| Purpose | Configured URL | +| --------------- | -------------------------------------------------------- | +| Login callback | `http://localhost:5173/#/authentication/callback` | +| Silent callback | `http://localhost:5173/#/authentication/silent-callback` | + +These are the demo's existing hash-based URLs, not a recommendation for a new +client registration. OAuth redirect URIs must not contain fragments, and a +provider may reject this pattern. For a provider that requires path-based +callbacks, update both the configuration and callback handling before registering +the URLs. + +When using your own provider: + +- Register a public browser client using Authorization Code with PKCE, not a + confidential client requiring a secret in browser code. +- Set `authority`, `client_id`, scopes, and callbacks to match that registration. + Allow the browser origin through the provider's CORS settings and register any + post-logout return URLs you use. +- Enable refresh tokens and the relevant scopes if you want to test renewal with + `offline_access`. Silent sign-in also depends on provider session cookies and + browser cookie restrictions. +- Update [`public/OidcTrustedDomains.js`](public/OidcTrustedDomains.js) to allow + only the OIDC endpoints and API destinations you trust. + +This demo sets `service_worker_relative_url` to `/OidcServiceWorker.js` and +`service_worker_only` to `true`: it requires service worker support and a secure +context, such as HTTPS or localhost. See the +[service worker documentation](../../packages/oidc-client-service-worker/README.md) +before changing its trust rules. + +## Walkthrough + +1. Open the home page and select **Login**. The client redirects to the provider. +2. Complete the provider's sign-in flow. The callback calls + `loginCallbackAsync()`, returns to `/`, and displays the client token object. + In service worker mode, protected token values are represented by placeholders, + not the underlying access or refresh tokens. +3. Reload the page to exercise `tryKeepExistingSessionAsync()`. +4. Select **Logout** to call `logoutAsync()`. +5. Use browser developer tools to inspect redirects, the worker registration, and + network requests. If login fails, first check the actual origin, registered + callback URLs, provider availability, and worker trust configuration. + +## Educational code, not a production template + +The **Game Hack Challenge** deliberately evaluates text entered in a textarea. +The development CSP allows `'unsafe-eval'` for that exercise. Run only code you +understand, locally and with test accounts; do not paste untrusted scripts. + +Do not copy the evaluator, permissive CSP, or token display into a production +application. A service worker can reduce token exposure, but it does not eliminate +XSS or prevent malicious page code from making authenticated requests. diff --git a/examples/react-oidc-demo/README.md b/examples/react-oidc-demo/README.md index 62f490004..e555c634a 100644 --- a/examples/react-oidc-demo/README.md +++ b/examples/react-oidc-demo/README.md @@ -1,624 +1,125 @@ -# @axa-fr/react-oidc +# React OIDC demo -[![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) -[![npm downloads](https://img.shields.io/npm/dw/@axa-fr/react-oidc)](https://www.npmjs.com/package/@axa-fr/react-oidc) +This Vite application demonstrates `@axa-fr/react-oidc` with React Router: +login and logout, protected components, authenticated requests, token renewal, +service worker options, and multiple named OIDC configurations. -Try the demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ +This README is a walkthrough of the demo. For component and hook usage, see the +[React package documentation](../../packages/react-oidc/README.md). +For workspace requirements and the authentication flow, see the +[repository README](../../README.md). -![Sample React OIDC](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/introduction.gif?raw=true) +## Run locally -A set of react components to make OIDC (OpenID Connect) client easy. It aim to simplify OAuth authentication between multiples providers. - -- [About](#about) -- [Getting Started](#getting-started) -- [Run The Demo](#run-the-demo) -- [Examples](#examples) -- [How It Works](#how-it-works) -- [NextJS](#NextJS) -- [Hash route](#Hash-route) -- [Service Worker Support](#service-worker-support) - -## About - -Easy set up of OIDC for react. -It is a real alternative to existing oidc-client libraries. - -- **Secure** : - - With the use of Service Worker, your tokens (refresh_token and access_token) are not accessible to the JavaScript client code (big protection against XSRF attacks) - - OIDC using client side Code Credential Grant with PKCE only -- **Lightweight** -- **Simple** : - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure `OidcTrustedDomains.js` file -- **No cookies problem** : You can disable silent signin (that internally use an iframe). For your information, your OIDC server should be in the same domain of your website in order to be able to send OIDC server cookies from your website via an internal IFRAME, else, you may encounter COOKIES problem. -- **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website -- **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure) - -![](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/schema_pcke_client_side_with_service_worker.png?raw=true) - -The service worker catch **access_token** and **refresh_token** that will never be accessible to the client. - -## Getting Started +Run these commands from the **repository root**, using the Node.js version required +by the [root package manifest](../../package.json): ```sh -npm install @axa-fr/react-oidc --save - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` - -If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. -The only file you should edit is "OidcTrustedDomains.js". - -```javascript -// OidcTrustedDomains.js - -// Add bellow trusted domains, access tokens will automatically injected to be send to -// trusted domain can also be a path like https://www.myapi.com/users, -// then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. - -// Domains used by OIDC server must be also declared here -const trustedDomains = { - default: ['https://demo.duendesoftware.com', 'https://www.myapi.com/users'], -}; - -// Service worker will continue to give access token to the JavaScript client -// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some -// scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { - domains: ['https://demo.duendesoftware.com'], - showAccessToken: true, -}; - -// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) -// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. -trustedDomains.config_multi_tab_login = { - domains: ['https://demo.duendesoftware.com'], - allowMultiTabLogin: true, -}; -``` - -## Run The Demo - -```sh -git clone https://github.com/AxaGuilDEv/react-oidc.git -cd react-oidc/packages/react -npm install -npm start -# then navigate to http://localhost:4200 -``` - -## Examples - -### Application startup - -The library is router agnostic and use native History API. - -The default routes used internally : - -- www.your-app.fr/authentication/callback - -```javascript -import React from 'react'; -import { render } from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { OidcProvider } from '@axa-fr/react-oidc'; -import Header from './Layout/Header'; -import Routes from './Router'; - -// This configuration use hybrid mode -// ServiceWorker are used if available (more secure) else tokens are given to the client -// You need to give inside your code the "access_token" when using fetch -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/authentication/callback', - silent_redirect_uri: window.location.origin + '/authentication/silent-callback', - scope: 'openid profile email api offline_access', // offline_access scope allow your client to retrieve the refresh_token - authority: 'https://demo.duendesoftware.com', - par: 'auto', - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; - -const App = () => ( - - -
- - - -); - -render(, document.getElementById('root')); -``` - -```javascript -const propTypes = { - loadingComponent: PropTypes.elementType, // you can inject your own loading component - sessionLostComponent: PropTypes.elementType, // you can inject your own session lost component - authenticating: PropTypes.elementType, // you can inject your own authenticationg component - authenticatingErrorComponent: PropTypes.elementType, - callbackSuccessComponent: PropTypes.elementType, // you can inject your own call back success component - serviceWorkerNotSupportedComponent: PropTypes.elementType, // you can inject your page that explain your require a more modern browser - onSessionLost: PropTypes.function, // If set "sessionLostComponent" is not displayed and onSessionLost callback is called instead - configuration: PropTypes.shape({ - client_id: PropTypes.string.isRequired, // oidc client id - redirect_uri: PropTypes.string.isRequired, // oidc redirect url - silent_redirect_uri: PropTypes.string, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions - silent_login_uri: PropTypes.string, // Optional, route that trigger the signin - silent_login_timeout: PropTypes.number, // Optional default is 12000 milliseconds - scope: PropTypes.string.isRequired, // oidc scope (you need to set "offline_access") - authority: PropTypes.string.isRequired, - storage: Storage, // Default sessionStorage, you can set localStorage but it is less secure to XSS attacks - authority_configuration: PropTypes.shape({ - // Optional for providers that does not implement OIDC server auto discovery via a .wellknowurl - authorization_endpoint: PropTypes.string, - token_endpoint: PropTypes.string, - userinfo_endpoint: PropTypes.string, - end_session_endpoint: PropTypes.string, - revocation_endpoint: PropTypes.string, - pushed_authorization_request_endpoint: PropTypes.string, - require_pushed_authorization_requests: PropTypes.bool, - check_session_iframe: PropTypes.string, - issuer: PropTypes.string, - }), - refresh_time_before_tokens_expiration_in_second: PropTypes.number, // default is 120 seconds - service_worker_relative_url: PropTypes.string, - service_worker_only: PropTypes.boolean, // default false - service_worker_convert_all_requests_to_cors: PropTypes.boolean, // force all requests that servie worker upgrades to have 'cors' mode. This allows setting authentication token on requests initialted by html parsing(e.g. img tags, download links etc). - extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server (more info: https://github.com/openid/AppAuth-JS) - token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that are send to the oidc server during token request (more info: https://github.com/openid/AppAuth-JS) - withCustomHistory: PropTypes.function, // Override history modification, return instance with replaceState(url, stateHistory) implemented (like History.replaceState()) - authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in second of openid wellknowurl, default is 1 hour - authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in millisecond of openid wellknowurl, default is 10 seconds, then error is throwed - par: PropTypes.oneOf(['disabled', 'auto', 'required']), // Pushed Authorization Requests mode, default is 'disabled' - par_request_timeout: PropTypes.number, // PAR endpoint timeout in milliseconds, default is 10000 - monitor_session: PropTypes.boolean, // Add OpenId monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ - onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user with the same subject is logged out from another tab when session_monitor is active - onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when user is logged out from same tab when session_monitor is active - token_renew_mode: PropTypes.string, // Optional, update tokens base on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid" , "id_token_invalid" - logout_tokens_to_invalidate : Array // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - }).isRequired, -}; -``` - -## How to consume - -"useOidc" returns all props from the Hook : - -```javascript -import React from 'react'; -import { useOidc } from './oidc'; - -export const Home = () => { - const { login, logout, renewTokens, isAuthenticated } = useOidc(); - - return ( -
-
-
-
Welcome !!!
-

React Demo Application protected by OpenId Connect

- {!isAuthenticated && ( - - )} - {isAuthenticated && ( - - )} - {isAuthenticated && ( - - )} -
-
-
- ); -}; -``` - -The Hook method exposes : - -- isAuthenticated : if the user is logged in or not -- logout: logout function (return a promise) -- login: login function 'return a promise' -- renewTokens: renew tokens function 'return a promise' - -## How to secure a component - -`OidcSecure` component trigger authentication in case user is not authenticated. So, the children of that component can be accessible only once you are connected. - -```javascript -import React from 'react'; -import { OidcSecure } from '@axa-fr/react-oidc'; - -const AdminSecure = () => ( - -

My sub component

} -
-); - -// adding the oidc user in the props -export default AdminSecure; -``` - -## How to secure a component : HOC method - -"withOidcSecure" act the same as "OidcSecure" it also trigger authentication in case user is not authenticated. - -```javascript -import React from 'react'; -import { Switch, Route } from 'react-router-dom'; -import { withOidcSecure } from '@axa-fr/react-oidc'; -import Home from '../Pages/Home'; -import Dashboard from '../Pages/Dashboard'; -import Admin from '../Pages/Admin'; - -const Routes = () => ( - - - - - - -); - -export default Routes; -``` - -## How to get "Access Token" : Hook method - -```javascript -import { useOidcAccessToken } from '@axa-fr/react-oidc'; - -const DisplayAccessToken = () => { - const { accessToken, accessTokenPayload } = useOidcAccessToken(); - - if (!accessToken) { - return

you are not authentified

; - } - return ( -
-
-
Access Token
-

- Please consider to configure the ServiceWorker in order to protect your application from - XSRF attacks. ""access_token" and "refresh_token" will never be accessible from your - client side javascript. -

- {

{JSON.stringify(accessToken)}

} - {accessTokenPayload != null && ( -

{JSON.stringify(accessTokenPayload)}

- )} -
-
- ); -}; -``` - -## How to get IDToken : Hook method - -```javascript -import { useOidcIdToken } from '@axa-fr/react-oidc'; - -const DisplayIdToken = () => { - const { idToken, idTokenPayload } = useOidcIdToken(); - - if (!idToken) { - return

you are not authentified

; - } - - return ( -
-
-
ID Token
- {

{JSON.stringify(idToken)}

} - {idTokenPayload != null &&

{JSON.stringify(idTokenPayload)}

} -
-
- ); -}; -``` - -## How to get User Information : Hook method - -```javascript -import { useOidcUser, UserStatus } from '@axa-fr/react-oidc'; - -const DisplayUserInfo = () => { - const { oidcUser, oidcUserLoadingState } = useOidcUser(); - - switch (oidcUserLoadingState) { - case UserStatus.Loading: - return

User Information are loading

; - case UserStatus.Unauthenticated: - return

you are not authenticated

; - case UserStatus.LoadingError: - return

Fail to load user information

; - default: - return ( -
-
-
User information
-

{JSON.stringify(oidcUser)}

-
-
- ); - } -}; -``` - -## How to get a fetch that inject Access_Token : Hook method - -If your are not using the service worker. Fetch function need to send AccessToken. -This Hook give you a wrapped fetch that add the access token for you. - -```javascript -import React, { useEffect, useState } from 'react'; -import { useOidcFetch, OidcSecure } from '@axa-fr/react-oidc'; - -const DisplayUserInfo = ({ fetch }) => { - const [oidcUser, setOidcUser] = useState(null); - const [isLoading, setLoading] = useState(true); - - useEffect(() => { - const fetchUserInfoAsync = async () => { - const res = await fetch('https://demo.duendesoftware.com/connect/userinfo'); - if (res.status != 200) { - return null; - } - return res.json(); - }; - let isMounted = true; - fetchUserInfoAsync().then(userInfo => { - if (isMounted) { - setLoading(false); - setOidcUser(userInfo); - } - }); - return () => { - isMounted = false; - }; - }, []); - - if (isLoading) { - return <>Loading; - } - - return ( -
-
-
-
User information
- {oidcUser != null &&

{JSON.stringify(oidcUser)}

} -
-
-
- ); -}; - -export const FetchUserHook = () => { - const { fetch } = useOidcFetch(); - return ( - - - - ); -}; -``` - -## How to get a fetch that inject Access_Token : HOC method - -If your are not using the service worker. Fetch function need to send AccessToken. -This HOC give you a wrapped fetch that add the access token for you. - -```javascript -import React, { useEffect, useState } from 'react'; -import { useOidcFetch, OidcSecure } from '@axa-fr/react-oidc'; - -const DisplayUserInfo = ({ fetch }) => { - const [oidcUser, setOidcUser] = useState(null); - const [isLoading, setLoading] = useState(true); - - useEffect(() => { - const fetchUserInfoAsync = async () => { - const res = await fetch('https://demo.duendesoftware.com/connect/userinfo'); - if (res.status != 200) { - return null; - } - return res.json(); - }; - let isMounted = true; - fetchUserInfoAsync().then(userInfo => { - if (isMounted) { - setLoading(false); - setOidcUser(userInfo); - } - }); - return () => { - isMounted = false; - }; - }, []); - - if (isLoading) { - return <>Loading; - } - - return ( -
-
-
-
User information
- {oidcUser != null &&

{JSON.stringify(oidcUser)}

} -
-
-
- ); -}; - -const UserInfoWithFetchHoc = withOidcFetch(fetch)(DisplayUserInfo); -export const FetchUserHoc = () => ( - - - -); -``` - -## Components override - -You can inject your own components. -All components definition receive props `configurationName`. Please checkout the demo for more complete example. - -```javascript -import React from 'react'; -import { render } from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { OidcProvider } from '@axa-fr/react-oidc'; -import Header from './Layout/Header'; -import Routes from './Router'; - -// This configuration use hybrid mode -// ServiceWorker are used if available (more secure) else tokens are given to the client -// You need to give inside your code the "access_token" when using fetch -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:4200/authentication/callback', - silent_redirect_uri: 'http://localhost:4200/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.identityserver.io', - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; - -const Loading = () =>

Loading

; -const AuthenticatingError = () =>

Authenticating error

; -const Authenticating = () =>

Authenticating

; -const SessionLost = () =>

Session Lost

; -const ServiceWorkerNotSupported = () =>

Not supported

; -const CallBackSuccess = () =>

Success

; - -//const [isSessionLost, setIsSessionLost] = useState(false); - -//const onSessionLost = ()=>{ -// setIsSessionLost(true); -//} - -const App = () => ( - - {/* isSessionLost && */} - -
- - - -); - -render(, document.getElementById('root')); -``` - -## How It Works - -These components encapsulate the use of "@axa-fr/oidc-client" in order to hide workflow complexity. -Internally, native History API is used to be router library agnostic. - -More information about OIDC - -- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) -- [English : Increase the security and simplicity of your information system with openid connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) - -## NextJS - -To work with NextJS you need to inject your own history surcharge like the sample below. - -**component/layout.js** - -```javascript -import { OidcProvider } from '@axa-fr/react-oidc'; -import { useRouter } from 'next/router'; - -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:3001/#authentication/callback', - silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-login that use cookies between OIDC server and client javascript to restore the session - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', -}; - -const onEvent = (configurationName, eventName, data) => { - console.log(`oidc:${configurationName}:${eventName}`, data); -}; - -export default function Layout({ children }) { - const router = useRouter(); - const withCustomHistory = () => { - return { - replaceState: url => { - router - .replace({ - pathname: url, - }) - .then(() => { - window.dispatchEvent(new Event('popstate')); - }); - }, - }; - }; - - return ( - <> - -
{children}
-
- - ); -} -``` - -For more information checkout the [NextJS React OIDC demo](https://github.com/AxaGuilDEv/react-oidc/tree/master/packages/nextjs-demo) - -## Hash route - -`react-oidc` work also with hash router. - -```javascript -export const configurationIdentityServerWithHash = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '#authentication-callback', - silent_redirect_uri: window.location.origin + '#authentication-silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', - refresh_time_before_tokens_expiration_in_second: 70, - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; -``` - -## Service Worker Support - -- Firefox : tested on Firefox 98.0.2 -- Chrome/Edge : tested on version upper to 90 -- Opera : tested on version upper to 80 -- Safari : tested on Safari/605.1.15 +corepack enable +pnpm install --frozen-lockfile +pnpm build +pnpm --dir examples/react-oidc-demo start +``` + +The start script refreshes the service worker assets before starting Vite. Open +the URL printed in the terminal, normally `http://localhost:5173`. +[`vite.config.js`](vite.config.js) does not fix a port; a busy port may cause Vite +to choose another. Register the actual browser origin with your identity provider. + +## Configuration and callbacks + +- [`src/configurations.ts`](src/configurations.ts) defines the default provider, + a hash-routing variant, a configuration without discovery, and a Google example. +- [`src/App.tsx`](src/App.tsx) mounts the default `OidcProvider` and routes. +- [`src/MultiAuth.tsx`](src/MultiAuth.tsx) defines the named configurations used + by the **Multi Auth** page. +- [`public/OidcTrustedDomains.js`](public/OidcTrustedDomains.js) defines service + worker trust rules for each configuration name. + +The default configuration uses the external +[Duende demo provider](https://demo.duendesoftware.com), client ID +`interactive.public.short`, and scopes `openid profile email api offline_access`. +Use the provider's published sign-in options. Its accounts, availability, and +registered redirect URLs are outside this repository's control. + +The following suffixes are appended to `window.location.origin`. For example, the +default login callback is normally +`http://localhost:5173/authentication/callback`. + +| Configuration | Login callback suffix | Silent callback suffix | +| ------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------- | +| Default | `/authentication/callback` | `/authentication/silent-callback` | +| Multi Auth, except the variants below | `/multi-auth/authentification/callback` | `/multi-auth/authentification/silent-callback` | +| `config_with_hash` | `/multi-auth/authentification#authentication-callback` | `/multi-auth/authentification#authentication-silent-callback` | +| Google | `/multi-auth/callback-google` | `/multi-auth/silent-callback-google` | + +The spelling `authentification` is intentional here: it matches the existing +source. The hash variant also sets `silent_login_uri` to +`/multi-auth/authentification#authentication-silent-login`. +The variants with `without_silent_login` or `without_refresh_token_silent_login` +in their names disable the silent callback. + +OAuth redirect URIs must not contain fragments. The hash variant is a legacy +demonstration and may be rejected by your provider; prefer registered path-based +callbacks for a new integration. + +To use your own provider, register a **public browser client** supporting +Authorization Code with PKCE. Update the authority, client ID, allowed scopes, +exact redirect URLs, post-logout return URLs, and provider CORS settings for your +origin. Refresh-token, session-monitoring, PAR, and DPoP support depend on the +provider. Silent sign-in can be affected by browser restrictions on third-party +cookies. + +The Google entry is not a ready-to-use local registration: configure your own +provider-approved browser flow and allowed URLs. Never ship a confidential client +secret in browser code. + +## What to try + +| Page or control | What it demonstrates | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| **Home** | Login returning to `/profile`, several logout options, manual token renewal, and navigation without forcing login. | +| **Profile** | Authentication state, token information, and user information. | +| **Secure Profile Component** | Protecting content with `OidcSecure`. | +| **Secure Profile Hoc** | Protecting content with `withOidcSecure`. | +| **Secure User Fetch Hoc** | Calling the provider's user-info endpoint through `withOidcFetch`. | +| **Secure User Fetch Hook** | The same request through `useOidcFetch`. | +| **Multi Auth** | Switching between named configurations and observing their independent authentication state. | + +Start with **Login** on Home, inspect Profile, and then try a protected page after +logging out. Return to Home to renew tokens manually. The **Default configuration +Events** panel shows lifecycle events; Multi Auth adds a panel for its selected +configuration. + +In Multi Auth, compare configurations with and without refresh tokens or silent +sign-in, then explore session monitoring, hash callbacks, token visibility, +separate OIDC/API trust rules, DPoP, and multi-tab login. The selected configuration +name is kept in session storage. Some examples need provider-side setup; the +separate-domain example includes an API placeholder rather than a working API. +The fetch demonstrations call the Duende user-info endpoint, so adapt those +requests as well when testing another provider. + +## Service worker behavior + +The default configuration enables `/OidcServiceWorker.js` but sets +`service_worker_only: false`, allowing fallback when the worker cannot be used. +Use HTTPS or localhost for worker support. Review the active mode in browser +developer tools instead of assuming tokens are always hidden. + +In worker mode, access and refresh tokens normally remain in the worker, while +the page receives placeholders. The `config_show_access_token` trust rule +deliberately exposes the access token. Changing providers or API destinations also +requires updating the matching trust rules; do not solve trust errors by allowing +all destinations. See the +[service worker documentation](../../packages/oidc-client-service-worker/README.md). + +## Educational code, not a production template + +The **Execute your JavaScript Code** panel in +[`src/CodeExecutor.tsx`](src/CodeExecutor.tsx) uses `eval`. It intentionally runs +code in the page's context; use only code you understand with test accounts. + +Do not deploy that executor or copy permissive CSP settings, token displays, or +debug logging into a production application. Service worker token isolation is +not a complete defense against XSS: malicious page code can still make +authenticated requests. diff --git a/packages/oidc-client-service-worker/README.md b/packages/oidc-client-service-worker/README.md new file mode 100644 index 000000000..b144b44e8 --- /dev/null +++ b/packages/oidc-client-service-worker/README.md @@ -0,0 +1,147 @@ +# @axa-fr/oidc-client-service-worker + +The service worker used by [`@axa-fr/oidc-client`](../oidc-client/README.md) and +[`@axa-fr/react-oidc`](../react-oidc/README.md). It intercepts OIDC token responses, +keeps access and refresh tokens in worker memory by default, and adds access +tokens to requests that match your trusted-domain configuration. + +Most applications should install one of the client packages rather than use this +package directly. The clients handle worker registration and communication. + +- [How it works](#how-it-works) +- [Getting started](#getting-started) +- [Trusted domains](#trusted-domains) +- [Deployment and troubleshooting](#deployment-and-troubleshooting) +- [Protocol reference](#protocol-reference) + +## How it works + +```mermaid +flowchart LR + App["Browser application"] --> Client["OIDC client or React bindings"] + Client <-->|"Messages and token placeholders"| Worker["OIDC service worker"] + Worker <-->|"Token requests and responses"| Provider["OIDC provider"] + App -->|"API request"| Worker + Worker -->|"Access token on trusted requests"| API["Trusted API"] + Config["OidcTrustedDomains.js"] --> Worker +``` + +The application can use token metadata without receiving the real access or +refresh token. `showAccessToken: true` explicitly exposes the access token to +application JavaScript while keeping the refresh token in the worker. + +> [!IMPORTANT] +> Token isolation does not prevent XSS or CSRF. Injected code can still make +> authenticated requests from the application. Use a restrictive Content Security +> Policy, prevent script injection, and enforce authorization on your APIs. + +## Getting started + +1. Install and configure the [vanilla client](../oidc-client/README.md#getting-started) + or [React bindings](../react-oidc/README.md#getting-started). +2. Create your application's public-assets directory if it does not exist, then + run the copy command for the client you installed: + + ```sh + # Vanilla client + node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public + + # React — use this instead + node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public + ``` + + Replace `public` if your framework serves static files from another directory. + The command overwrites `OidcServiceWorker.js` but preserves an existing + `OidcTrustedDomains.js`. + +3. Replace the sample entries in `public/OidcTrustedDomains.js` with your provider + and API URLs, as described below. +4. Add these fields to your OIDC client configuration: + + ```js + const configuration = { + ...oidcConfiguration, + service_worker_relative_url: '/OidcServiceWorker.js', + service_worker_only: true, + }; + ``` + + With `service_worker_only: true`, authentication requires worker support. + Set it to `false` only if you accept fallback to JavaScript-accessible browser + storage when the worker is unavailable. + +5. Add the appropriate copy command to your application's `postinstall` script. + For example, for React: + + ```json + { + "scripts": { + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + } + } + ``` + + Merge this with existing installation steps rather than replacing them. + Deploy the copied worker with every client upgrade. + +## Trusted domains + +Keep provider endpoints and API destinations separate: + +```js +const trustedDomains = { + default: { + oidcDomains: [/^https:\/\/identity\.example\.com(?:\/|$)/], + accessTokenDomains: [/^https:\/\/api\.example\.com(?:\/|$)/], + }, +}; +``` + +`default` is the default client configuration name. Add a matching entry for +every named client or `OidcProvider`. These rules use regular-expression matching, +including when rules are strings. Anchor patterns, escape hostname dots, and +include a host or path boundary so that lookalike URLs do not match. +Include the actual OIDC endpoint origins +if your provider serves discovery, tokens, or user information from different +hosts. Allow only the API destinations that should receive this configuration's +access token; do not copy the demo allowlist into production. + +Use `oidcClient.fetchWithTokens(fetch)` in vanilla applications or `useOidcFetch()` +in React. In particular, `allowMultiTabLogin: true` **requires** the OIDC fetch +wrapper: its placeholder identifies the tab whose token the worker must inject. +A plain `fetch` cannot supply that information. + +See the [client's service-worker guide](../oidc-client/README.md#service-worker-support) +for additional options, including DPoP, access-token visibility, and request +handling. + +## Deployment and troubleshooting + +- Serve both JavaScript files from your application's origin over HTTPS + (localhost is supported for development). +- The worker must control the pages that use it. Serving it at the origin root + is the simplest setup; account for worker scope when hosting under a subpath. +- Serve the files as JavaScript, not the HTML fallback used for SPA routes. + Check the Network and Application panels in browser developer tools if + registration fails. +- Keep the worker version aligned with the client. Edit the trusted-domain file, + not the generated `OidcServiceWorker.js`. +- If API requests return 401, check the active configuration name, the matching + `accessTokenDomains` entry, and whether you are using the OIDC fetch wrapper. + The API must also accept the token's issuer, audience, and scopes. +- After changing worker assets, check which worker version controls your page; + an already-open tab may still be controlled by an older worker. + +The [FAQ](../../FAQ.md) covers broader security and integration questions. + +## Protocol reference + +Most applications do not need to send worker messages directly. For custom +integrations, [`PROTOCOL.md`](./PROTOCOL.md) describes the versioned message +envelope, payloads, token placeholders, storage keys, and compatibility guarantees. + +Protocol constants and types are exported from +`@axa-fr/oidc-client-service-worker/protocol` and re-exported by +`@axa-fr/oidc-client`. + +[Back to the project overview](../../README.md) diff --git a/packages/oidc-client/README.md b/packages/oidc-client/README.md index 7f464fe38..163bbb435 100644 --- a/packages/oidc-client/README.md +++ b/packages/oidc-client/README.md @@ -1,659 +1,396 @@ # @axa-fr/oidc-client -[![Continuous Integration](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaGuilDEv/react-oidc/actions/workflows/npm-publish.yml) -[![npm downloads](https://img.shields.io/npm/dw/@axa-fr/oidc-client)](https://www.npmjs.com/package/@axa-fr/oidc-client) +A framework-independent OpenID Connect (OIDC) client for browser applications, written in TypeScript. It supports Authorization Code Flow with PKCE, session restoration, token renewal, multiple named configurations, optional service-worker token isolation, Pushed Authorization Requests (PAR), and DPoP. -**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. -**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. +For React applications, use [`@axa-fr/react-oidc`](../react-oidc/README.md). -We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) and we expect soon to provide one for **Vue**, **Angular** and **Svelte**. +- [Quick start](#quick-start) +- [Service worker](#service-worker) +- [Configuration](#configuration) +- [Token renewal](#token-renewal) +- [Pushed Authorization Requests (PAR)](#pushed-authorization-requests-par) +- [DPoP](#dpop) +- [API](#api) +- [Errors and events](#errors-and-events) +- [Named configurations and routing](#named-configurations-and-routing) +- [Service-worker protocol](#service-worker-protocol) +- [Examples and further reading](#examples-and-further-reading) -- Try the react demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) -- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + -

- Sample React Oicd -

+## Quick start -- [About](#about) -- [Getting Started](#getting-started) -- [Run The Demo](#run-the-demo) -- [How It Works](#how-it-works) -- [Hash route](#Hash-route) -- [Service Worker Support](#service-worker-support) +```sh +npm install @axa-fr/oidc-client +``` -## About +Register a **public browser client** with your identity provider: -@axa-fr/oidc-client is: +1. Enable Authorization Code Flow with PKCE. +2. Register your application's exact callback URL, such as `https://app.example.com/authentication/callback`, and its post-logout URL. +3. Allow your application's origin to call the provider's browser-accessible endpoints through CORS. +4. Choose the scopes your application needs. Request `offline_access` only if your provider uses it to issue refresh tokens. -- **Secure** : - - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) - - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** : Unpacked Size on npm is **274 kB** -- **Simple** - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file -- **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website -- **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure). - - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. +Never put a client secret in browser code. Replace the example issuer and client ID below with your own values. Configure your web server to serve the application on the callback route as well as `/`. -![](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/schema_pcke_client_side_with_service_worker.png?raw=true) +Add these elements to your page: -The service worker catch **access_token** and **refresh_token** that will never be accessible to the client. +```html +

Loading session…

+ + +``` -### Getting Started +Run this module when those elements are available, including on the callback route: -```sh -npm install @axa-fr/oidc-client --save +```javascript +import { OidcClient } from '@axa-fr/oidc-client'; -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public +const configuration = { + client_id: 'your-public-client', + authority: 'https://issuer.example.com', + redirect_uri: `${window.location.origin}/authentication/callback`, + scope: 'openid profile', +}; -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` +const oidcClient = OidcClient.getOrCreate(() => fetch)(configuration); +const status = document.getElementById('session-status'); +const loginButton = document.getElementById('login'); +const logoutButton = document.getElementById('logout'); -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +function showError() { + status.textContent = 'Authentication could not be completed. Please try again.'; +} -```sh - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" - }, -``` +loginButton.addEventListener('click', () => { + oidcClient.loginAsync('/').catch(showError); +}); +logoutButton.addEventListener('click', () => { + oidcClient.logoutAsync('/').catch(showError); +}); -If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. -The only file you should edit is "OidcTrustedDomains.js". +async function start() { + if (window.location.pathname === new URL(configuration.redirect_uri).pathname) { + const { callbackPath } = await oidcClient.loginCallbackAsync(); + window.history.replaceState(null, '', callbackPath || '/'); + } else { + await oidcClient.tryKeepExistingSessionAsync(); + } -```javascript -// OidcTrustedDomains.js + const isAuthenticated = oidcClient.tokens != null; + status.textContent = isAuthenticated ? 'Signed in' : 'Not signed in'; + loginButton.hidden = isAuthenticated; + logoutButton.hidden = !isAuthenticated; +} -// Add bellow trusted domains, access tokens will automatically injected to be send to -// trusted domain can also be a path like https://www.myapi.com/users, -// then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. +start().catch(showError); +``` -// Domains used by OIDC server must be also declared here -const trustedDomains = { - default: { - oidcDomains: ['https://demo.duendesoftware.com'], - accessTokenDomains: ['https://www.myapi.com/users'], - }, -}; +This minimal example uses browser storage, not a service worker. Read the next section before choosing a token-storage strategy for production. -// Service worker will continue to give access token to the JavaScript client -// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some -// scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { - oidcDomains: ['https://demo.duendesoftware.com'], - accessTokenDomains: ['https://www.myapi.com/users'], - showAccessToken: false, - // convertAllRequestsToCorsExceptNavigate: false, // default value is false - // setAccessTokenToNavigateRequests: true, // default value is true - // bypassAllNonOidcRequests: false, // default value is false; when true, requests outside OIDC and accessTokenDomains are handled by the browser -}; +### Call a protected API -// DPoP (Demonstrating Proof of Possession) will be activated for the following domains -trustedDomains.config_with_dpop = { - domains: ['https://demo.duendesoftware.com'], - demonstratingProofOfPossession: true, - demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true, // default value is false, inject DPOP token only when DPOP header is present - // Optional, more details bellow - /*demonstratingProofOfPossessionConfiguration: { - importKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256', - hash: {name: 'ES256'} - }, - signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, - generateKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256' - }, - digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' - }*/ -}; +Use the client's fetch wrapper after authentication: -// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) -// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. -// IMPORTANT: When allowMultiTabLogin is true, you MUST use the OIDC fetch provided by -// oidcClient.fetchWithTokens(fetch) for API requests. The service worker embeds a tab-specific -// token placeholder in the Authorization header, which it then replaces with the real access token. -// Using a plain fetch or axios without the OIDC fetch wrapper will result in requests being sent -// without an Authorization header (401 errors), because the service worker cannot determine which -// tab's token to inject without the placeholder. -// Example with axios: configure it to use the OIDC fetch as its adapter or use the OIDC fetch directly. -trustedDomains.config_multi_tab_login = { - domains: ['https://demo.duendesoftware.com'], - allowMultiTabLogin: true, -}; +```javascript +const oidcFetch = oidcClient.fetchWithTokens(fetch); +const response = await oidcFetch('https://api.example.com/profile'); + +if (!response.ok) { + throw new Error(`API request failed with status ${response.status}`); +} +const profile = await response.json(); ``` -The code of the demo : +The wrapper attaches an access token, or a token placeholder when the service worker hides it, and integrates with token renewal. Only use it for API URLs you trust: the wrapper itself is not a destination allowlist. HTTP error responses still need an explicit `response.ok` check. + + + +## Service worker + +The optional service worker can keep access and refresh tokens outside the application's JavaScript context and attach access tokens to configured API requests. It does **not** prevent XSS: injected code can still act through your application and make requests. Continue to use normal XSS defenses, carefully restrict trusted destinations, and avoid rendering or logging raw tokens. + +```mermaid +sequenceDiagram + participant App as Browser application + participant IdP as Identity provider + participant SW as OIDC service worker + participant API as Trusted API + App->>IdP: Authorization request with PKCE + IdP-->>App: Redirect with authorization code + App->>SW: Token request + SW->>IdP: Exchange code and verifier + IdP-->>SW: Tokens + SW-->>App: Token placeholders and session information + App->>SW: Protected API request + SW->>API: Request with access token + API-->>App: Response through service worker +``` -```js -import { OidcClient } from '@axa-fr/oidc-client'; +The diagram shows worker mode with access-token hiding enabled. The ID token and decoded claims may still be available to application code. -export const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/#/authentication/callback', - silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', - service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode - service_worker_only: false, - demonstrating_proof_of_possession: false, -}; +### Install and update the worker -const href = window.location.href; -const oidcClient = OidcClient.getOrCreate()(configuration); +```sh +node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public +``` -// Use the fetch bellow to inject access_token and DPOP tokens automatically -const oidcFetch = oidcClient.fetchWithTokens(fetch); +Replace `public` with your application's static-assets directory, and ensure that directory exists before running the command. This creates or updates `OidcServiceWorker.js` and creates `OidcTrustedDomains.js` if it does not already exist. Keep the worker version aligned with the client package; for example, merge this script into your `package.json`: -// You can inject you own fetch (default Fetch Interface) function and location object (respecting IOidcLocation interface) -// import {OidcLocation} from '@axa-fr/oidc-client' -// const oidcClient = OidcClient.getOrCreate(() => fetch, new OidcLocation())(configuration); - -console.log(href); - -oidcClient.tryKeepExistingSessionAsync().then(() => { - if (href.includes(configuration.redirect_uri)) { - oidcClient.loginCallbackAsync().then(() => { - window.location.href = '/'; - }); - document.body.innerHTML = `
-

@axa-fr/oidc-client demo

-

Loading

-
`; - return; +```json +{ + "scripts": { + "postinstall": "node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public" } +} +``` - let tokens = oidcClient.tokens; - - if (tokens) { - // @ts-ignore - window.logout = () => oidcClient.logoutAsync(); - document.body.innerHTML = `
-

@axa-fr/oidc-client demo

- -

Authenticated

-
${JSON.stringify(tokens, null, '\t')}
-
`; - } else { - // @ts-ignore - window.login = () => oidcClient.loginAsync('/'); - document.body.innerHTML = `
-

@axa-fr/oidc-client demo

- -
`; - } -}); +Edit `public/OidcTrustedDomains.js`, not the generated worker: + +```javascript +const trustedDomains = { + default: { + oidcDomains: [/^https:\/\/issuer\.example\.com(?:\/|$)/], + accessTokenDomains: [/^https:\/\/api\.example\.com\//], + }, +}; ``` -## Configuration +Include the provider's endpoint origins if they differ from its issuer URL. Keep access-token destinations as narrow as possible; patterns can include paths. String entries are interpreted as regular-expression prefixes, not exact origin matches. The example uses anchored regular expressions with escaped dots and hostname boundaries to avoid unintended matches. The `default` key must match the OIDC configuration name. + +Add these options to your client configuration: ```javascript +service_worker_relative_url: '/OidcServiceWorker.js', +service_worker_only: true, +``` -const configuration = { - client_id: String.isRequired, // oidc client id - redirect_uri: String.isRequired, // oidc redirect url - silent_redirect_uri: String, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions - silent_login_uri: String, // Optional, route that triggers the signin - silent_login_timeout: Number, // Optional, default is 12000 milliseconds - scope: String.isRequired, // oidc scope (you need to set "offline_access") - authority: String.isRequired, - storage: Storage, // Default sessionStorage, you can set localStorage, but it is not secure - login_state_storage: Storage, // Optional. Storage used only for authorization flow state (state, code_verifier, nonce, login params). Defaults to the value of `storage`. Set to sessionStorage when using storage: localStorage to prevent race conditions when multiple tabs start the login flow simultaneously. - authority_configuration: { - // Optional for providers that do not implement OIDC server auto-discovery via a .wellknown URL - authorization_endpoint: String, - token_endpoint: String, - userinfo_endpoint: String, - end_session_endpoint: String, - revocation_endpoint: String, - pushed_authorization_request_endpoint: String, - require_pushed_authorization_requests: Boolean, - check_session_iframe: String, - issuer: String, - }, - refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds - service_worker_relative_url: String, - service_worker_keep_alive_path: String, // default is "/" - service_worker_only: Boolean, // default false, if true, the user will not be able to login if the service worker is not available on its browser - service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string, if return false, the service worker mode will not be used - service_worker_register: (url: string) => Promise, // Optional, you can take the control of the service worker registration - extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) - token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) - authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour - authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown - par: 'disabled' | 'auto' | 'required', // Pushed Authorization Requests mode, default is 'disabled' - par_request_timeout: Number, // PAR endpoint timeout in milliseconds, default is 10000 - monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ - token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" - token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, // Optional, default is TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration - // TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration: renew tokens automatically before they expire - // TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted: renew tokens automatically only when fetch is executed - // It requires you to use fetch given by oidcClient.fetchWithTokens(fetch) or to use oidcClient.getValidTokenAsync() - logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface - demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access - demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow -}; +Serve the worker from a URL whose scope covers your application, using HTTPS (or localhost for development). With `service_worker_only: true`, login requires an available service worker. With `false` (the default), the client can fall back to browser storage when worker mode is unavailable. Choose that fallback deliberately. +### Trusted-domain options -interface DemonstratingProofOfPossessionConfiguration { - generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, - digestAlgorithm: AlgorithmIdentifier, - importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, - signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, - jwtHeaderAlgorithm: string -}; +These options belong in each named entry in `OidcTrustedDomains.js`, not in `OidcConfiguration`. -// default value of demonstrating_proof_of_possession_configuration -const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ - importKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256', - hash: {name: 'ES256'} - }, - signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, - generateKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256' - }, - digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' -}; +| Option | Purpose | +| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `oidcDomains` | Provider URLs the worker is allowed to handle. | +| `accessTokenDomains` | API URLs to which the worker may attach an access token. | +| `domains` | Shorthand for a shared provider/API destination list; separate lists give finer control. | +| `showAccessToken` | Defaults to `false`. Set to `true` only when an integration requires the real access token in application JavaScript; refresh tokens remain hidden in worker mode. | +| `allowMultiTabLogin` | Isolates login state, nonce, and PKCE verifier by tab. Requires the OIDC fetch wrapper for protected API requests; see below. | +| `convertAllRequestsToCorsExceptNavigate` | Defaults to `false`; optionally changes non-navigation requests to CORS mode. | +| `setAccessTokenToNavigateRequests` | Defaults to `true`; controls token attachment to matching navigation requests. | +| `bypassAllNonOidcRequests` | Defaults to `false`. When enabled for all initialized worker configurations, requests outside OIDC and access-token destinations are left to the browser. | +| `demonstratingProofOfPossession` | Enables worker-side DPoP for this configuration. | +| `demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent` | Defaults to `true` when worker DPoP is enabled. Requires a DPoP header before worker-side DPoP injection; set to `false` to remove that condition. | +| `demonstratingProofOfPossessionConfiguration` | Overrides the worker's cryptographic algorithms; see [DPoP](#dpop). | +With `allowMultiTabLogin: true`, **use `oidcClient.fetchWithTokens(fetch)` for protected API requests**. Its tab-specific token placeholder tells the worker which session to use. Plain `fetch` or a default Axios request does not provide that marker, so automatic token attachment cannot select the tab's token and requests may receive HTTP 401. Use the OIDC fetch directly, or an integration that actually routes requests through it. +## Configuration + +The public [`OidcConfiguration` type](./src/types.ts) is the complete reference. Required fields are `client_id`, `authority`, `redirect_uri`, and `scope`. + +| Option | Default / behavior | +| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `authority_configuration` | Supply endpoint metadata instead of discovery. See `AuthorityConfiguration` in the type reference, including PAR metadata. | +| `storage` | `sessionStorage` when worker storage is not used. `localStorage` persists across tabs and browser sessions, but both are accessible to application JavaScript. | +| `login_state_storage` | Defaults to `storage`; separates authorization state, verifier, nonce, and login parameters from token storage. If tokens use `localStorage`, consider `sessionStorage` here to avoid cross-tab login races. | +| `silent_redirect_uri` | Enables the iframe-based silent-login flow. Must differ from `redirect_uri`; register it with the provider. | +| `silent_login_uri` | Page that starts silent login; derived from `silent_redirect_uri` if omitted. | +| `silent_login_timeout` | `12000` milliseconds. | +| `refresh_time_before_tokens_expiration_in_second` | `120` seconds; the client applies random jitter when this setting is greater than 60. | +| `token_renew_mode` | `'access_token_or_id_token_invalid'`; alternatives are `'access_token_invalid'` and `'id_token_invalid'`. | +| `token_automatic_renew_mode` | `TokenAutomaticRenewMode.AutomaticBeforeTokenExpiration`; see [token renewal](#token-renewal). | +| `token_request_timeout` | Token-request timeout in milliseconds. | +| `extras` | Additional authorization-request parameters, such as `{ prompt: 'consent' }`. | +| `token_request_extras` | Additional token-request parameters. Never use this to embed a browser client secret. | +| `par`, `par_request_timeout` | `'disabled'` and `10000` milliseconds; see [PAR](#pushed-authorization-requests-par). | +| `authority_time_cache_wellknowurl_in_second` | Discovery-cache lifetime; defaults to one hour. | +| `authority_timeout_wellknowurl_in_millisecond` | Discovery timeout; defaults to `10000` milliseconds. | +| `monitor_session` | `false`; enables OIDC session monitoring when supported by the provider and browser. | +| `logout_tokens_to_invalidate` | `['access_token', 'refresh_token']`; token types to revoke during standard logout. | +| `preload_user_info` | `false`; fetch user information during login/session restoration instead of waiting for a consumer. | +| `demonstrating_proof_of_possession` | `false`; see [DPoP](#dpop). | +| `demonstrating_proof_of_possession_configuration` | Cryptographic settings for client-side DPoP. | +| `service_worker_relative_url` | URL of the worker; omit to disable worker mode. | +| `service_worker_only` | `false`; disallows browser-storage fallback when `true`. | +| `service_worker_keep_alive_path` | `'/'`; path used by worker keep-alive requests. | +| `service_worker_activate` | Function to override the default browser-based activation decision. | +| `service_worker_register` | Custom `(url) => Promise` registration function. | +| `loading_timeout_ms` | Used by the React provider's loading watchdog; see the [React guide](../react-oidc/README.md#custom-components-and-provider-options). | + +### Silent login + +Silent login uses an iframe and the provider's existing session. It depends on provider support and browser cookie/privacy policies; it is not a guaranteed replacement for refresh tokens. + +For a vanilla application, implement both the `silent_login_uri` page and the `silent_redirect_uri` callback page. The login page starts `loginAsync` with `isSilentSignin: true` (the third argument); the callback page calls `silentLoginCallbackAsync()`. Keep these routes separate from the interactive callback. The React provider handles these routes for you; its [silent-login route implementation](../react-oidc/src/core/default-component/SilentLogin.component.tsx) is also a reference for forwarding silent-login parameters. + +## Token renewal + +By default, the client schedules renewal before tokens expire. It uses a refresh token when available, or the configured silent-login flow. Refresh-token issuance and lifetime remain provider decisions. + +For renewal only when an API request needs it: + +```typescript +import { TokenAutomaticRenewMode } from '@axa-fr/oidc-client'; + +const renewalOptions = { + token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, +}; ``` -## Pushed Authorization Requests (PAR) +Merge this option into your configuration and use `fetchWithTokens(fetch)` or `getValidTokenAsync()` before protected requests. Plain fetch does not trigger this renewal mode. -The client supports [OAuth 2.0 Pushed Authorization Requests (RFC 9126)](https://www.rfc-editor.org/rfc/rfc9126.html). -Enable it with the `par` configuration option: - -- `'disabled'` (default) preserves the existing front-channel authorization - request. PAR metadata is ignored in this mode. -- `'auto'` uses PAR when discovery (or `authority_configuration`) provides a - `pushed_authorization_request_endpoint`. It keeps the existing front-channel - flow when the endpoint is absent, unless the server metadata says - `require_pushed_authorization_requests: true`. -- `'required'` always requires PAR and fails before browser navigation when no - PAR endpoint is available. - -```ts -import { - isPushedAuthorizationRequestError, - OidcClient, - PushedAuthorizationRequestErrorCode, -} from '@axa-fr/oidc-client'; - -const oidcClient = OidcClient.getOrCreate()({ - client_id: 'spa-client', - redirect_uri: `${window.location.origin}/authentication/callback`, - scope: 'openid profile', - authority: 'https://issuer.example.com', - par: 'auto', - par_request_timeout: 10000, -}); +- `renewTokensAsync(extras?, scope?)` requests renewal and preserves the non-throwing behavior for terminal OIDC failures. +- `renewTokensOrThrowAsync(extras?, scope?)` returns tokens or rejects, for callers that need explicit failure handling. +- Automatic renewal reports failures through [events](#errors-and-events). -try { - await oidcClient.loginAsync('/'); -} catch (error) { - if ( - isPushedAuthorizationRequestError(error) && - error.code === PushedAuthorizationRequestErrorCode.ENDPOINT_UNAVAILABLE - ) { - // PAR was required locally or by server metadata, but no endpoint was provided. - } -} -``` +## Pushed Authorization Requests (PAR) -When PAR is selected, all authorization parameters, including `state`, `nonce`, -PKCE and login `extras`, are sent as -`application/x-www-form-urlencoded` data to the PAR endpoint. The browser is -then redirected with only `client_id` and the returned `request_uri`. +[PAR (RFC 9126)](https://www.rfc-editor.org/rfc/rfc9126.html) sends authorization parameters to the provider before navigating the browser. -If the PAR endpoint returns an error or an invalid response, the login rejects -with `PushedAuthorizationRequestError`; the client does not silently downgrade -to a front-channel request. The error exposes a stable `code` and, when -available, `status`, `oauthError`, and `oauthErrorDescription`. +| `par` mode | Behavior | +| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `'disabled'` (default) | Uses the normal front-channel request and ignores PAR metadata. | +| `'auto'` | Uses a discovered or configured `pushed_authorization_request_endpoint`. Falls back only when no endpoint exists and the server does not require PAR. | +| `'required'` | Requires a PAR endpoint; fails before navigation if none is available. | -For a browser-based client, the authorization server must allow CORS requests -from the application origin to its PAR endpoint. Public SPA clients must also -be allowed to call PAR without a client secret; never embed a client secret in -browser code. If discovery is not available, set -`pushed_authorization_request_endpoint` (and optionally -`require_pushed_authorization_requests`) in `authority_configuration`. +If metadata says `require_pushed_authorization_requests: true`, `'auto'` also fails when the endpoint is missing. Set `par_request_timeout` to adjust the default 10-second timeout. -## API +Once PAR is selected, the client sends authorization parameters (including state, nonce, PKCE, and login extras) as `application/x-www-form-urlencoded` data. The subsequent browser redirect carries `client_id` and the returned `request_uri`. An endpoint failure or invalid response **never silently downgrades** to the front-channel flow. -```javascript -/** - * OidcClient is a class that acts as a wrapper around the `Oidc` object. It provides methods to handle event subscriptions, logins, logouts, token renewals, user information, etc. - */ -export class OidcClient { - /** - * Creates an instance of OidcClient using a provided `Oidc` object. - * @param oidc The instance of the underlying Oidc object to use. - */ - constructor(oidc: Oidc); - - /** - * Subscribes a function to events emitted by the underlying Oidc object. - * @param func The function to be called when an event is emitted. - * @returns A string that identifies the subscription and can be used to unsubscribe later. - */ - subscribeEvents(func: EventSubscriber): string; - - /** - * Removes a subscription to a specified event. - * @param id The identifier of the subscription to remove, obtained during the initial subscription. - */ - removeEventSubscription(id: string): void; - - /** - * Publishes an event with the specified name and associated data. - * @param eventName The name of the event to publish. - * @param data The data associated with the event. - */ - publishEvent(eventName: string, data: any): void; - - /** - * Creates a new instance of OidcClient using a fetch retrieval function `getFetch`, with a given OIDC configuration and an optional name. - * @param getFetch The function to retrieve the `Fetch` object. - * @param configuration The OIDC configuration to use for creating the OidcClient instance. - * @param name The optional name for the created OidcClient instance. - * @returns A new instance of OidcClient with the specified configuration. - */ - static getOrCreate(getFetch: () => Fetch)(configuration: OidcConfiguration, name?: string): OidcClient; - - /** - * Retrieves an existing OidcClient instance with the specified name. - * Since issue #1679, this returns `null` when no instance has been - * initialized for the given name (instead of throwing). Use - * `OidcClient.getOrThrow` to preserve the previous fail-fast behaviour. - * @param name The name of the OidcClient instance to retrieve. - * @returns The existing OidcClient instance, or null if none exists. - */ - static get(name?: string): OidcClient | null; - - /** - * Same as `OidcClient.get` but throws an explicit error when no instance - * has been initialized for the given name. Useful when you want to fail - * fast on misconfiguration. - * @param name The name of the OidcClient instance to retrieve. - * @returns The existing OidcClient instance. - */ - static getOrThrow(name?: string): OidcClient; - - /** - * The names of the events supported by the Oidc class. - */ - static eventNames: Oidc.eventNames; - - /** - * Attempts to keep the existing user session by calling the function of the underlying Oidc object. - * @returns A promise resolved with `true` if the user session was kept, otherwise `false`. - */ - tryKeepExistingSessionAsync(): Promise; - - /** - * Starts the OIDC login process with specified options. - * @param callbackPath The callback path for authentication. - * @param extras Additional parameters to send to the OIDC server during the login request. - * @param isSilentSignin Indicates if the login is silent. - * @param scope The OIDC scope for the login request. - * @param silentLoginOnly Indicates if only silent login is allowed. - * @returns A promise resolved with the login information, or rejected with an error. - */ - loginAsync(callbackPath?: string, extras?: StringMap, isSilentSignin?: boolean, scope?: string, silentLoginOnly?: boolean): Promise; - - /** - * Starts the OIDC logout process with specified options. - * @param callbackPathOrUrl The callback path or URL to use after logout. - * @param extras Additional parameters to send to the OIDC server during the logout request. - * {"no_reload:oidc":"true"} to avoid the page reload after logout. - * you can add extras like {"client_secret:revoke_refresh_token":"secret"} to revoke the refresh token with extra client secret. Any key ending with ":revoke_refresh_token" will be used to revoke the refresh token. - * you can add extras like {"client_secret:revoke_access_token":"secret"} to revoke the access token with extra client secret. Any key ending with ":revoke_access_token" will be used to revoke the access token. - * @returns A promise resolved when the logout is completed. - */ - logoutAsync(callbackPathOrUrl?: string | null | undefined, extras?: StringMap): Promise; - - /** - * Performs the silent login process and retrieves user information. - * @returns A promise resolved when the silent login process is completed. - */ - silentLoginCallbackAsync(): Promise; - - /** - * Renews the user's OIDC tokens. - * @param extras Additional parameters to send to the OIDC server during the token renewal request. - * @returns A promise resolved when the token renewal is completed. - */ - renewTokensAsync(extras?: StringMap): Promise; - - /** - * Performs the callback process after a successful login and automatically renews tokens. - * @returns A promise resolved with the callback information, or rejected with an error. - */ - loginCallbackAsync(): Promise; - - /** - * Retrieves the current OIDC tokens for the user. - */ - get tokens(): Tokens; - - /** - * Retrieves the current OIDC configuration used by the OidcClient instance. - */ - get configuration(): OidcConfiguration; - - /** - * Retrieves the valid OIDC token for the user. - * @param waitMs The maximum wait time in milliseconds to obtain a valid token. - * @param numberWait The number of attempts to obtain a valid token. - * @returns A promise resolved with the valid token, or rejected with an error. - */ - async getValidTokenAsync(waitMs = 200, numberWait = 50): Promise; - - /** - * Retrieves a new fetch function that inject bearer tokens (also DPOP tokens). - * @param fetch The current fetch function to use - * @param demonstrating_proof_of_possession Indicates whether the demonstration of proof of possession should be used. - * @returns Fetch A new fectch function that inject bearer tokens (also DPOP tokens). - */ - fetchWithTokens(fetch: Fetch, demonstrating_proof_of_possession=false): Fetch; - - /** - * Retrieves OIDC user information. - * @param noCache Indicates whether user information should be retrieved bypassing the cache. - * @param demonstrating_proof_of_possession Indicates whether the demonstration of proof of possession should be used. - * @returns A promise resolved with the user information, or rejected with an error. - */ - async userInfoAsync(noCache = false, demonstrating_proof_of_possession=false): Promise; - - /** - * Generate Demonstration of proof of possession. - * @param accessToken The access token to use. - * @param url The url to use. - * @param method The method to use. - * @param extras Additional parameters to send to the OIDC server during the demonstration of proof of possession request. - * @returns A promise resolved with the proof of possession. - */ - async generateDemonstrationOfProofOfPossessionAsync(accessToken:string, url:string, method:string, extras:StringMap= {}): Promise; -} +Failures use `PushedAuthorizationRequestError`, with codes from `PushedAuthorizationRequestErrorCode`: `ENDPOINT_UNAVAILABLE`, `REQUEST_FAILED`, or `INVALID_RESPONSE`. Use `isPushedAuthorizationRequestError(error)` and inspect `code`, plus `status`, `oauthError`, and `oauthErrorDescription` when available. -``` +The PAR endpoint must allow CORS from your application and accept public clients without a client secret. If discovery is unavailable, configure `pushed_authorization_request_endpoint` and, where applicable, `require_pushed_authorization_requests` in `authority_configuration`. -## Run The Demo +## DPoP -```sh -git clone https://github.com/AxaFrance/oidc-client.git -cd oidc-client +[Demonstrating Proof of Possession (RFC 9449)](https://www.rfc-editor.org/rfc/rfc9449.html) binds supported tokens to a key and uses signed proofs for requests. It requires support from the authorization server and resource server. It reduces the usefulness of a stolen token without its key; it does not make an application immune to XSS. -# oidc client demo -cd /examples/oidc-client-demo -pnpm install -pnpm start -# then navigate to http://localhost:5174 +For client-side DPoP, set `demonstrating_proof_of_possession: true` in the OIDC configuration and opt in for protected requests: +```javascript +const dpopFetch = oidcClient.fetchWithTokens(fetch, true); +const response = await dpopFetch('https://api.example.com/profile', { method: 'GET' }); ``` -## Strongly typed OIDC errors +Similarly, pass `true` as the second argument to `userInfoAsync(false, true)` if the user-info endpoint requires DPoP. For worker-side DPoP, configure `demonstratingProofOfPossession` in the matching trusted-domain entry and review `demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent`. + +The default cryptographic configuration uses ECDSA P-256, SHA-256, and the `ES256` JWT algorithm. Override algorithms through `demonstrating_proof_of_possession_configuration` (client) or `demonstratingProofOfPossessionConfiguration` (worker). See [`DemonstratingProofOfPossessionConfiguration`](./src/types.ts). -Known authentication, callback, refresh and network failures are exposed as -`OidcError`. Its stable `code` and `phase` fields can be inspected without -matching the human-readable `message`; existing messages remain unchanged. +## API -```ts +See [`OidcClient`](./src/oidcClient.ts) for full TypeScript signatures. + +| API | Use | +| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `OidcClient.getOrCreate(getFetch, location?)(configuration, name?)` | Create or reuse a named client. Pass `() => fetch` for the browser fetch implementation; the default name is `'default'`. | +| `OidcClient.get(name?)` | Retrieve an existing client, or `null` if it has not been initialized. | +| `OidcClient.getOrThrow(name?)` | Retrieve an existing client, or throw on missing initialization. | +| `tryKeepExistingSessionAsync()` | Restore an existing session; returns whether it was kept. | +| `loginAsync(callbackPath?, extras?, isSilentSignin?, scope?, silentLoginOnly?)` | Start authentication. `callbackPath` is the application destination after the callback, not the registered `redirect_uri`. | +| `loginCallbackAsync()` | Complete interactive authentication, start automatic renewal, and return `{ callbackPath }`. | +| `silentLoginCallbackAsync()` | Complete the iframe silent-login callback. | +| `logoutAsync(callbackPathOrUrl?, extras?)` | Clear the session, revoke configured tokens, and use the provider's logout endpoint when available. | +| `clearSessionAsync()` | Clear the local session without provider logout or token revocation. | +| `isLoggingOut` | Indicates logout is in progress; avoid starting a competing login flow. | +| `renewTokensAsync(extras?, scope?)` | Request token renewal. | +| `renewTokensOrThrowAsync(extras?, scope?)` | Request renewal with a rejected promise on failure. | +| `getValidTokenAsync(waitMs?, numberWait?)` | Wait for usable tokens; also supports on-demand renewal. | +| `fetchWithTokens(fetch, demonstratingProofOfPossession?)` | Wrap fetch for protected API requests. | +| `userInfoAsync(noCache?, demonstratingProofOfPossession?)` | Load user information, optionally bypassing the cache. | +| `userInfo()` | Read cached user information. | +| `tokens`, `configuration` | Inspect current session data and effective configuration. Tokens can contain worker placeholders; do not display or log them. | +| `subscribeEvents(handler)` | Subscribe to `(eventName, data)` and receive a subscription ID. | +| `removeEventSubscription(id)` | Remove an event subscription. | +| `OidcClient.eventNames` | Discover supported event names. | +| `publishEvent(name, data)` | Publish an event to the client's subscribers. | +| `generateDemonstrationOfProofOfPossessionAsync(accessToken, url, method, extras?)` | Low-level proof generation; prefer the fetch wrapper for normal requests. | +| `signalServiceWorker(message, options?)` | Send a typed worker-protocol message. | + +You can inject a custom location adapter as the second argument to `getOrCreate`, using the exported `ILOidcLocation` interface and `OidcLocation` implementation. + +## Errors and events + +Known authentication, callback, renewal, and network failures use `OidcError`. Inspect stable `code` and `phase` fields rather than parsing messages. Other fields include `retryable`, optional `status`, `oauthError`, `oauthErrorDescription`, and `cause`. + +```typescript import { OidcError, OidcErrorCode } from '@axa-fr/oidc-client'; try { - await oidcClient.loginCallbackAsync(); + await oidcClient.renewTokensOrThrowAsync(); } catch (error) { if (error instanceof OidcError && error.code === OidcErrorCode.LOGIN_REQUIRED) { - await oidcClient.loginAsync(); + await oidcClient.loginAsync('/'); + } else { + throw error; } } ``` -Automatic renewal and the existing `renewTokensAsync` method remain -non-throwing for terminal OIDC failures. Use the strict variant when the caller -needs a rejected promise: +`retryable` means a retry without user interaction may succeed, not that one is always performed automatically. Network failures, HTTP 408/429/5xx responses, and DPoP nonce challenges can be retryable; `LOGIN_REQUIRED` needs an interactive login. -```ts -try { - const tokens = await oidcClient.renewTokensOrThrowAsync(); -} catch (error) { - if (error instanceof OidcError) { - console.error(error.code, error.phase, error.retryable); - } -} -``` +Non-throwing flows also expose errors through events. Refresh event payloads include an `error` field; user-info, logout, and protected API requests have dedicated error events. Log only selected diagnostic fields, not complete event payloads: -Failures from intentionally non-throwing flows are also provided to event -subscribers. Existing event payload fields are preserved; refresh payloads add -an `error` field, while user-info, logout and protected API failures use their -dedicated error events. - -```ts -oidcClient.subscribeEvents((name, data) => { +```typescript +const subscriptionId = oidcClient.subscribeEvents((name, data) => { const error = data instanceof OidcError ? data : data?.error; if (error instanceof OidcError) { - console.error(name, error.code, error.status); + console.warn(name, error.code, error.phase, error.status); } }); + +// When the subscriber is no longer needed: +oidcClient.removeEventSubscription(subscriptionId); ``` -`retryable` means that retrying automatically, without user interaction, may -succeed. For example, network failures, HTTP 408/429/5xx responses and DPoP -nonce challenges are retryable; `login_required` requires an interactive -login and is therefore not. +### Missing or mismatched login state -## Handling missing or corrupted login state +`OidcStateError` extends `OidcError` and identifies callback-state failures: -When the OIDC state or nonce is missing from storage at callback time (for -example because the user is in a private browsing tab, cleared storage -manually, or because the browser evicted the entry between the authorize -redirect and the callback), the library now throws a typed -`OidcStateError` instead of letting a generic `TypeError` escape. +- `OidcStateErrorCode.STATE_MISSING`: stored authorization state is missing. +- `OidcStateErrorCode.STATE_MISMATCH`: returned state does not match stored state. +- `OidcStateErrorCode.NONCE_MISSING`: stored nonce is missing. -```ts -import { isOidcStateError, OidcStateError, OidcStateErrorCode } from '@axa-fr/oidc-client'; +Use `isOidcStateError(error)` and inspect `error.code`, especially for errors passed through silent-login handling. Storage clearing, eviction, and competing login attempts can cause these failures. Do not bypass state or nonce checks; offer a fresh login. During silent renewal, a missing nonce is reported through the session-lost flow. -try { - await oidcClient.loginCallbackAsync(); -} catch (error) { - if (isOidcStateError(error)) { - switch (error.code) { - case OidcStateErrorCode.STATE_MISSING: - // The stored state was not found at callback time. - break; - case OidcStateErrorCode.STATE_MISMATCH: - // The state returned by the server does not match the stored one. - break; - case OidcStateErrorCode.NONCE_MISSING: - // The stored nonce was not found at callback time. - break; - } - } -} +## Named configurations and routing + +Use distinct names for separate providers or sessions with different scopes: + +```javascript +const paymentsClient = OidcClient.getOrCreate(() => fetch)(paymentsConfiguration, 'payments'); +const existingClient = OidcClient.get('payments'); ``` -`OidcStateError` is an `Error` subclass, exposes a stable `code` field, and is -also re-exported from `@axa-fr/react-oidc`. When errors cross the silent-renew -iframe boundary, prefer `isOidcStateError(error)` plus `error.code` over a -plain `instanceof` check. For silent renewal, a missing nonce no longer throws -a `TypeError` — it is reported through the existing `SESSION_LOST` status so -consumers can recover via the normal re-login flow. - -## Service worker protocol - -The `postMessage` protocol used between `OidcClient` and the service worker -is publicly documented and versioned. Typed message constants, payload -helpers and storage key conventions are exported from -`@axa-fr/oidc-client` (and from -`@axa-fr/oidc-client-service-worker/protocol`): - -```ts -import { - OidcClient, - PROTOCOL_VERSION, - ServiceWorkerMessageType, - buildSecuredTokenPlaceholder, - TOKEN_PLACEHOLDERS, -} from '@axa-fr/oidc-client'; - -const oidcClient = OidcClient.get(); - -const { state } = await oidcClient.signalServiceWorker<{ state: string }>({ +Each name reuses its initialized configuration. Give configurations distinct callback routes and matching keys in `OidcTrustedDomains.js`. + +The library retains hash-route callback matching for legacy integrations. However, OAuth redirect URIs must not contain a fragment: use path-based callback URLs, as in the quick start, for new deployments. Existing hash-callback setups depend on provider-specific behavior and need matching application routing. Interactive and silent callback URLs must be different. + +## Service-worker protocol + +The worker's versioned `postMessage` protocol is documented in [`PROTOCOL.md`](../oidc-client-service-worker/PROTOCOL.md). Constants and helpers such as `PROTOCOL_VERSION`, `ServiceWorkerMessageType`, `TOKEN_PLACEHOLDERS`, and `buildSecuredTokenPlaceholder` are exported from `@axa-fr/oidc-client` and `@axa-fr/oidc-client-service-worker/protocol`. + +```typescript +import { OidcClient, ServiceWorkerMessageType } from '@axa-fr/oidc-client'; + +const client = OidcClient.getOrThrow(); +const result = await client.signalServiceWorker<{ state: string }>({ type: ServiceWorkerMessageType.GET_STATE, configurationName: 'default', data: null, }); ``` -See [`PROTOCOL.md`](../oidc-client-service-worker/PROTOCOL.md) in the -service-worker package for the full specification, including stability -guarantees and per-message payload shapes. +This requires an active worker. See the protocol reference for payloads, timeouts, and compatibility guarantees; avoid logging protocol responses containing session state. -## How It Works +## Examples and further reading -This component is a pure vanilla JS OIDC client library agnostic to any framework. -It is a real alternative to existing oidc-client libraries. +- [Vanilla JavaScript demo](../../examples/oidc-client-demo/README.md) — complete application and local development instructions. +- [React guide](../react-oidc/README.md) and [React demo](../../examples/react-oidc-demo/README.md). +- [FAQ and deployment guidance](../../FAQ.md). +- [Service-worker source and protocol](../oidc-client-service-worker/PROTOCOL.md). +- [Service-worker package guide](../oidc-client-service-worker/README.md). -More information about OIDC - -- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) -- [English : Increase the security and simplicity of your information system with openid connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) -- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) - -## Hash route - -`@axa-fr/oidc-client` work also with hash route. - -```javascript -export const configurationIdentityServerWithHash = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '#authentication-callback', - silent_redirect_uri: window.location.origin + '#authentication-silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', - refresh_time_before_tokens_expiration_in_second: 70, - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; -``` +The demos belong to the pnpm monorepo. Follow their READMEs rather than installing each workspace independently. diff --git a/packages/react-oidc/README.md b/packages/react-oidc/README.md index f9adf5f19..f469334c9 100644 --- a/packages/react-oidc/README.md +++ b/packages/react-oidc/README.md @@ -1,749 +1,374 @@ # @axa-fr/react-oidc -[![Continuous Integration](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/AxaFrance/react-oidc/actions/workflows/npm-publish.yml) -[![npm downloads](https://img.shields.io/npm/dw/@axa-fr/react-oidc)](https://www.npmjs.com/package/@axa-fr/react-oidc) +React components and hooks for OpenID Connect (OIDC), built on [`@axa-fr/oidc-client`](../oidc-client/README.md). The provider handles browser authentication callbacks, session restoration, and token renewal; your components use hooks to sign in, read user information, and call protected APIs. -**@axa-fr/oidc-client** the lightest and securest library to manage authentication with OpenID Connect (OIDC) and OAuth2 protocol. It is compatible with all OIDC providers. -**@axa-fr/oidc-client** is a pure javascript library. It works with any JavaScript framework or library. +The library supports Authorization Code Flow with PKCE, multiple named configurations, optional service-worker token isolation, PAR, and DPoP. It is a browser-side authentication library, not a server-side session or authorization system. -We provide a wrapper **@axa-fr/react-oidc** for **React** (compatible next.js) and we expect soon to provide one for **Vue**, **Angular** and **Svelte**. +- [Quick start](#quick-start) +- [Protect components](#protect-components) +- [Call protected APIs](#call-protected-apis) +- [User information and token hooks](#user-information-and-token-hooks) +- [Service worker](#service-worker) +- [Configuration, renewal, PAR, and DPoP](#configuration-renewal-par-and-dpop) +- [Custom components and provider options](#custom-components-and-provider-options) +- [Routing and Next.js](#routing-and-nextjs) +- [Named configurations](#named-configurations) +- [Errors and missing providers](#errors-and-missing-providers) +- [Examples and further reading](#examples-and-further-reading) -- Try the React demo at https://black-rock-0dc6b0d03.1.azurestaticapps.net/ (most advanced) -- Try the pure javascript demo at https://icy-glacier-004ab4303.2.azurestaticapps.net/ + -Sample React Oicd - -- [About](#about) -- [Getting Started](#getting-started) -- [Run The Demo](#run-the-demo) -- [Examples](#examples) -- [How It Works](#how-it-works) -- [NextJS](#NextJS) -- [Hash route](#Hash-route) -- [Service Worker Support](#service-worker-support) - -## About - -@axa-fr/react is: - -- **Secure** : - - With Demonstrating Proof of Possession (DPoP), your access_token and refresh_token are not usable outside your browser context (big protection) - - With the use of Service Worker, your tokens (refresh_token and/or access_token) are not accessible to the JavaScript client code (if you follow good practices from [`FAQ`](https://github.com/AxaFrance/oidc-client/blob/main/FAQ.md) section) - - OIDC using client side Code Credential Grant with pkce only -- **Lightweight** : Unpacked Size on npm is **274 kB** -- **Simple** - - refresh_token and access_token are auto refreshed in background - - with the use of the Service Worker, you do not need to inject the access_token in every fetch, you have only to configure OidcTrustedDomains.js file -- **Multiple Authentication** : - - You can authenticate many times to the same provider with different scope (for example you can acquire a new 'payment' scope for a payment) - - You can authenticate to multiple different providers inside the same SPA (single page application) website -- **Flexible** : - - Work with Service Worker (more secure) and without for older browser (less secure). - - You can disable Service Worker if you want (but less secure) and just use SessionStorage or LocalStorage mode. - -![](https://github.com/AxaGuilDEv/react-oidc/blob/master/docs/img/schema_pcke_client_side_with_service_worker.png?raw=true) - -The service worker catch **access_token** and **refresh_token** that will never be accessible to the client. - -## Getting Started - -```sh -npm install @axa-fr/react-oidc --save - -# To install or update OidcServiceWorker.js file, you can run -node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public - -# If you have a "public" folder, the 2 files will be created : -# ./public/OidcServiceWorker.js <-- will be updated at each "npm install" -# ./public/OidcTrustedDomains.js <-- won't be updated if already exist -``` - -WARNING : If you use Service Worker mode, the OidcServiceWorker.js file should always be up to date with the version of the library. You may setup a postinstall script in your package.json file to update it at each npm install. For example : +## Quick start ```sh - "scripts": { - ... - "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" - }, +npm install @axa-fr/react-oidc ``` -If you need a very secure mode where refresh_token and access_token will be hide behind a service worker that will proxify requests. -The only file you should edit is "OidcTrustedDomains.js". - -```javascript -// OidcTrustedDomains.js +Register a public browser client with your identity provider using Authorization Code Flow with PKCE. Register the exact callback URL and post-logout URL, and allow the application's origin through CORS. Never embed a client secret in a browser application. -// Add bellow trusted domains, access tokens will automatically injected to be send to -// trusted domain can also be a path like https://www.myapi.com/users, -// then all subroute like https://www.myapi.com/useers/1 will be authorized to send access_token to. +Replace the issuer and client ID below with your own settings. This example assumes a client-rendered React application with an HTML element named `root`. Your web server must serve the application on `/authentication/callback` as well as `/`. -// Domains used by OIDC server must be also declared here -const trustedDomains = { - default: { - oidcDomains: ['https://demo.duendesoftware.com'], - accessTokenDomains: ['https://www.myapi.com/users'], - }, -}; - -// Service worker will continue to give access token to the JavaScript client -// Ideal to hide refresh token from client JavaScript, but to retrieve access_token for some -// scenarios which require it. For example, to send it via websocket connection. -trustedDomains.config_show_access_token = { - oidcDomains: ['https://demo.duendesoftware.com'], - accessTokenDomains: ['https://www.myapi.com/users'], - showAccessToken: true, - // convertAllRequestsToCorsExceptNavigate: false, // default value is false - // setAccessTokenToNavigateRequests: true, // default value is true - // bypassAllNonOidcRequests: false, // default value is false; when true, requests outside OIDC and accessTokenDomains are handled by the browser -}; - -// DPoP (Demonstrating Proof of Possession) will be activated for the following domains -trustedDomains.config_with_dpop = { - domains: ['https://demo.duendesoftware.com'], - demonstratingProofOfPossession: true, - demonstratingProofOfPossessionOnlyWhenDpopHeaderPresent: true, // default value is false, inject DPOP token only when DPOP header is present - // Optional, more details bellow - /*demonstratingProofOfPossessionConfiguration: { - importKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256', - hash: {name: 'ES256'} - }, - signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, - generateKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256' - }, - digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' - }*/ -}; +```tsx +import { useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { OidcProvider, useOidc, type OidcConfiguration } from '@axa-fr/react-oidc'; -// Setting allowMultiTabLogin to true will enable storing login-specific parameters (state, nonce, code verifier) -// separately for each tab. This will prevent errors when logins are initiated from multiple tabs. -// IMPORTANT: When allowMultiTabLogin is true, you MUST use the OIDC fetch provided by useOidcFetch() -// or withOidcFetch() for API requests. The service worker embeds a tab-specific token placeholder -// in the Authorization header, which it then replaces with the real access token. -// Using a plain fetch or axios without the OIDC fetch wrapper will result in requests being sent -// without an Authorization header (401 errors), because the service worker cannot determine which -// tab's token to inject without the placeholder. -// Example with axios: configure it to use the OIDC fetch as its adapter or use the OIDC fetch directly. -trustedDomains.config_multi_tab_login = { - domains: ['https://demo.duendesoftware.com'], - allowMultiTabLogin: true, +const configuration: OidcConfiguration = { + client_id: 'your-public-client', + authority: 'https://issuer.example.com', + redirect_uri: `${window.location.origin}/authentication/callback`, + scope: 'openid profile', }; -``` - -## Run The Demo -```sh -git clone https://github.com/AxaFrance/oidc-client.git -cd oidc-client -pnpm install -cd /examples/react-oidc-demo -pnpm install -pnpm start -# then navigate to http://localhost:4200 -``` - -## Examples - -### Application startup - -The library is router agnostic and will use native History API. +function Account(): React.JSX.Element { + const { login, logout, isAuthenticated } = useOidc(); + const [hasError, setHasError] = useState(false); + + const changeSession = async (): Promise => { + setHasError(false); + try { + if (isAuthenticated) { + await logout('/'); + } else { + await login('/'); + } + } catch { + setHasError(true); + } + }; -The default routes used internally : + return ( +
+

{isAuthenticated ? 'Signed in' : 'Not signed in'}

+ + {hasError &&

Authentication failed. Please try again.

} +
+ ); +} -- www.your-app.fr/authentication/callback +const root = document.getElementById('root'); +if (!root) throw new Error('Missing root element'); -```javascript -import React from 'react'; -import { render } from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { OidcProvider } from '@axa-fr/react-oidc'; -import Header from './Layout/Header'; -import Routes from './Router'; - -// This configuration use hybrid mode -// ServiceWorker are used if available (more secure) else tokens are given to the client -// You need to give inside your code the "access_token" when using fetch -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/authentication/callback', - silent_redirect_uri: window.location.origin + '/authentication/silent-callback', - scope: 'openid profile email api offline_access', // offline_access scope allow your client to retrieve the refresh_token - authority: 'https://demo.duendesoftware.com', - par: 'auto', - service_worker_relative_url: '/OidcServiceWorker.js', // just comment that line to disable service worker mode - service_worker_only: false, - demonstrating_proof_of_possession: false, -}; - -const App = () => ( +createRoot(root).render( - -
- - - + + , ); - -render(, document.getElementById('root')); ``` -> [!WARNING] -> If you have both `redirect_uri` and `silent_redirect_uri` configured, their value must be different. - -```javascript -const configuration = { - loadingComponent: ReactComponent, // you can inject your own loading component - sessionLostComponent: ReactComponent, // you can inject your own session lost component - authenticating: ReactComponent, // you can inject your own authenticating component - authenticatingErrorComponent: ReactComponent, - callbackSuccessComponent: ReactComponent, // you can inject your own call back success component - serviceWorkerNotSupportedComponent: ReactComponent, // you can inject your page that explains you require a more modern browser - onSessionLost: Function, // If set, "sessionLostComponent" is not displayed, and onSessionLost callback is called instead - configuration: { - client_id: String.isRequired, // oidc client id - redirect_uri: String.isRequired, // oidc redirect url - silent_redirect_uri: String, // Optional activate silent-signin that use cookies between OIDC server and client javascript to restore sessions - silent_login_uri: String, // Optional, route that triggers the signin - silent_login_timeout: Number, // Optional, default is 12000 milliseconds - scope: String.isRequired, // oidc scope (you need to set "offline_access") - authority: String.isRequired, - storage: Storage, // Default sessionStorage, you can set localStorage, but it is not secure - login_state_storage: Storage, // Optional. Storage used only for authorization flow state (state, code_verifier, nonce, login params). Defaults to the value of `storage`. Set to sessionStorage when using storage: localStorage to prevent race conditions when multiple tabs start the login flow simultaneously. - authority_configuration: { - // Optional for providers that do not implement OIDC server auto-discovery via a .wellknown URL - authorization_endpoint: String, - token_endpoint: String, - userinfo_endpoint: String, - end_session_endpoint: String, - revocation_endpoint: String, - pushed_authorization_request_endpoint: String, - require_pushed_authorization_requests: Boolean, - check_session_iframe: String, - issuer: String, - }, - refresh_time_before_tokens_expiration_in_second: Number, // default is 120 seconds - service_worker_relative_url: String, - service_worker_keep_alive_path: String, // default is "/" - service_worker_only: Boolean, // default false - service_worker_activate: () => boolean, // you can take the control of the service worker default activation which use user agent string - service_worker_register: (url: string) => Promise, // Optional, you can take the control of the service worker registration - extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server (more info: https://github.com/openid/AppAuth-JS) - token_request_extras: StringMap | undefined, // ex: {'prompt': 'consent', 'access_type': 'offline'} list of key/value that is sent to the OIDC server during token request (more info: https://github.com/openid/AppAuth-JS) - withCustomHistory: Function, // Override history modification, return an instance with replaceState(url, stateHistory) implemented (like History.replaceState()) - authority_time_cache_wellknowurl_in_second: 60 * 60, // Time to cache in seconds of the openid well-known URL, default is 1 hour - authority_timeout_wellknowurl_in_millisecond: 10000, // Timeout in milliseconds of the openid well-known URL, default is 10 seconds, then an error is thrown - par: 'disabled' | 'auto' | 'required', // Pushed Authorization Requests mode, default is 'disabled' - par_request_timeout: Number, // PAR endpoint timeout in milliseconds, default is 10000 - monitor_session: Boolean, // Add OpenID monitor session, default is false (more information https://openid.net/specs/openid-connect-session-1_0.html), if you need to set it to true consider https://infi.nl/nieuws/spa-necromancy/ - onLogoutFromAnotherTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user with the same subject is logged out from another tab when session_monitor is active - onLogoutFromSameTab: Function, // Optional, can be set to override the default behavior, this function is triggered when a user is logged out from the same tab when session_monitor is active - token_renew_mode: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" - token_automatic_renew_mode: TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted, // Optional, default is TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration - // TokenAutomaticRenewMode.AutomaticBeforeTokensExpiration: renew tokens automatically before they expire - // TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted: renew tokens automatically only when fetch is executed - // It requires you to use fetch given by hook useOidcFetch(fetch) or HOC withOidcFetch(fetch)(Component) - logout_tokens_to_invalidate: Array, // Optional tokens to invalidate during logout, default: ['access_token', 'refresh_token'] - location: ILOidcLocation, // Optional, default is window.location, you can inject your own location object respecting the ILOidcLocation interface - demonstrating_proof_of_possession: Boolean, // Optional, default is false, if true, the the Demonstrating Proof of Possession will be activated //https://www.rfc-editor.org/rfc/rfc9449.html#name-protected-resource-access - demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow - }, -}; - -demonstrating_proof_of_possession_configuration: DemonstratingProofOfPossessionConfiguration // Optional, more details bellow -}; - -interface DemonstratingProofOfPossessionConfiguration -{ - generateKeyAlgorithm: RsaHashedKeyGenParams | EcKeyGenParams, - digestAlgorithm: AlgorithmIdentifier, - importKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, - signAlgorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, - jwtHeaderAlgorithm: string -}; - -// default value of demonstrating_proof_of_possession_configuration -const defaultDemonstratingProofOfPossessionConfiguration: DemonstratingProofOfPossessionConfiguration ={ - importKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256', - hash: {name: 'ES256'} - }, - signAlgorithm: {name: 'ECDSA', hash: {name: 'SHA-256'}}, - generateKeyAlgorithm: { - name: 'ECDSA', - namedCurve: 'P-256' - }, - digestAlgorithm: { name: 'SHA-256' }, - jwtHeaderAlgorithm : 'ES256' -}; +`OidcProvider` processes the callback route; do not call `loginCallbackAsync()` yourself inside this React setup. `login('/')` selects the application destination after authentication, not the registered callback URL. +This example uses browser storage. For optional token isolation, follow the [service-worker setup](#service-worker). +```mermaid +flowchart LR + UI["React components and hooks"] --> Provider["OidcProvider"] + Provider --> Client["@axa-fr/oidc-client"] + Client --> IdP["OIDC identity provider"] + Client --> SW["Optional service worker"] + SW --> API["Trusted API"] + Client --> Fetch["OIDC fetch without worker"] + Fetch --> API ``` -### Pushed Authorization Requests (PAR) +## Protect components -PAR is configured on the nested OIDC `configuration` object: +`OidcSecure` starts login when there is no authenticated session and renders its children only after authentication: ```tsx -const configuration = { - client_id: 'spa-client', - redirect_uri: `${window.location.origin}/authentication/callback`, - scope: 'openid profile', - authority: 'https://issuer.example.com', - par: 'auto', // 'disabled' (default), 'auto', or 'required' -}; -``` - -`auto` uses the discovered `pushed_authorization_request_endpoint` when it is -available. `required` fails before navigation if no endpoint is available. -Once PAR is selected, a PAR endpoint error is surfaced and never silently -downgraded. Browser deployments require the issuer's PAR endpoint to allow -CORS from the application origin. See the -[`@axa-fr/oidc-client` PAR documentation](../oidc-client/README.md#pushed-authorization-requests-par) -for complete mode semantics, custom authority metadata, error handling, and -security guidance. - -## How to consume - -> **Note (issue #1679):** `useOidc`, `useOidcUser`, `useOidcAccessToken` and -> `useOidcIdToken` are safe to call **outside** of an `` (e.g. -> in unit tests or Storybook stories). When no provider is mounted, they -> emit a single `console.warn` per configuration name and return stable -> default values (`isAuthenticated: false`, `oidcUser: null`, -> `accessToken: null`, `idToken: null`, with no-op `login`/`logout`/ -> `renewTokens`/`reloadOidcUser`). Use `OidcClient.getOrThrow(name)` if you -> prefer the previous fail-fast behaviour. - -"useOidc" returns all props from the Hook : - -```javascript -import React from 'react'; -import { useOidc } from './oidc'; - -export const Home = () => { - const { login, logout, renewTokens, isAuthenticated } = useOidc(); +import { OidcSecure } from '@axa-fr/react-oidc'; +export function PrivatePage(): React.JSX.Element { return ( -
-
-
-
Welcome !!!
-

React Demo Application protected by OpenId Connect

- {!isAuthenticated && ( - - )} - {isAuthenticated && ( - - )} - {isAuthenticated && ( - - )} -
-
-
+ +

Account

+
); -}; +} ``` -The Hook method exposes : - -- isAuthenticated : if the user is logged in or not -- logout: logout function (return a promise) -- login: login function 'return a promise' -- renewTokens: renew tokens function 'return a promise' - -## How to secure a component +Place it beneath `OidcProvider`. You can protect the whole application, a route element, or a smaller component. Optional props are `callbackPath`, authorization `extras`, and `configurationName`. -`OidcSecure` component trigger authentication in case user is not authenticated. So, the children of that component can be accessible only once you are connected. +The higher-order component (HOC) equivalent is: -```javascript -import React from 'react'; -import { OidcSecure } from '@axa-fr/react-oidc'; +```tsx +import { withOidcSecure } from '@axa-fr/react-oidc'; -const AdminSecure = () => ( - -

My sub component

-
-); +function AccountDetails(): React.JSX.Element { + return

Account details

; +} -// adding the oidc user in the props -export default AdminSecure; +export const ProtectedAccountDetails = withOidcSecure(AccountDetails, '/account'); ``` -## How to secure a component: HOC method - -`withOidcSecure` will act the same as `OidcSecure`,it will also trigger authentication in case the user is not authenticated. - -```javascript -import React from 'react'; -import { Switch, Route } from 'react-router-dom'; -import { withOidcSecure } from '@axa-fr/react-oidc'; -import Home from '../Pages/Home'; -import Dashboard from '../Pages/Dashboard'; -import Admin from '../Pages/Admin'; - -const Routes = () => ( - - - - - - -); +Its signature is `withOidcSecure(Component, callbackPath?, extras?, configurationName?)`. -export default Routes; -``` +These components gate the UI; your APIs must independently validate tokens and enforce authorization. -## How to get "Access Token": Hook method +## Call protected APIs -```javascript -import { useOidcAccessToken } from '@axa-fr/react-oidc'; +`useOidcFetch()` returns a fetch wrapper that attaches the access token (or a service-worker placeholder) and integrates with renewal. Use it only for trusted API URLs, not arbitrary user-supplied destinations. -const DisplayAccessToken = () => { - const { accessToken, accessTokenPayload } = useOidcAccessToken(); +```tsx +import { useState } from 'react'; +import { useOidcFetch } from '@axa-fr/react-oidc'; + +export function ProfileRequest(): React.JSX.Element { + const { fetch: oidcFetch } = useOidcFetch(); + const [status, setStatus] = useState('Ready'); + + const loadProfile = async (): Promise => { + setStatus('Loading…'); + try { + const response = await oidcFetch('https://api.example.com/profile'); + if (!response.ok) { + throw new Error(`API request failed with status ${response.status}`); + } + setStatus('Profile request succeeded'); + } catch { + setStatus('Could not load the profile'); + } + }; - if (!accessToken) { - return

you are not authentified

; - } return ( -
-
-
Access Token
-

- Please consider to configure the ServiceWorker in order to protect your application from - XSRF attacks. ""access_token" and "refresh_token" will never be accessible from your - client side javascript. -

- {

{JSON.stringify(accessToken)}

} - {accessTokenPayload != null && ( -

{JSON.stringify(accessTokenPayload)}

- )} -
-
+ <> + +

{status}

+ ); -}; +} ``` -## How to get IDToken: Hook method +Render protected API consumers beneath `OidcSecure`, or wait until `useOidc().isAuthenticated` is true. Check `response.ok`: ordinary HTTP error responses do not automatically reject. -```javascript -import { useOidcIdToken } from '@axa-fr/react-oidc'; +| API | Arguments / result | +| --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `useOidcFetch(fetch?, configurationName?, demonstratingProofOfPossession?)` | Returns `{ fetch }`; defaults to browser fetch and configuration `'default'`. | +| `withOidcFetch(fetch?, configurationName?, demonstratingProofOfPossession?)(Component)` | Injects a `fetch` prop into a component. | -const DisplayIdToken = () => { - const { idToken, idTokenPayload } = useOidcIdToken(); +For example, `withOidcFetch()(ProfileComponent)` supplies the same wrapper through props instead of a hook. - if (!idToken) { - return

you are not authentified

; - } +## User information and token hooks - return ( -
-
-
ID Token
- {

{JSON.stringify(idToken)}

} - {idTokenPayload != null &&

{JSON.stringify(idTokenPayload)}

} -
-
- ); -}; -``` +### User information -## How to get User Information: Hook method +`useOidcUser()` reads the provider's user-info endpoint and exposes loading state. The exported enum is **`OidcUserStatus`**: -```javascript -import { useOidcUser, UserStatus } from '@axa-fr/react-oidc'; +```tsx +import { OidcUserStatus, useOidcUser } from '@axa-fr/react-oidc'; -const DisplayUserInfo = () => { +export function UserGreeting(): React.JSX.Element { const { oidcUser, oidcUserLoadingState } = useOidcUser(); switch (oidcUserLoadingState) { - case UserStatus.Loading: - return

User Information are loading

; - case UserStatus.Unauthenticated: - return

you are not authenticated

; - case UserStatus.LoadingError: - return

Fail to load user information

; + case OidcUserStatus.Loading: + return

Loading profile…

; + case OidcUserStatus.Unauthenticated: + return

Please sign in.

; + case OidcUserStatus.LoadingError: + return

Could not load your profile.

; default: - return ( -
-
-
User information
-

{JSON.stringify(oidcUser)}

-
-
- ); + return

Hello, {oidcUser?.name ?? 'there'}.

; } -}; +} ``` -## How to get a fetch that inject Access_Token: Hook method +The hook also returns `reloadOidcUser()`. Use `useOidcUser(configurationName?, demonstratingProofOfPossession?)` for custom claims, where `MyUserInfo` extends `OidcUserInfo`. -If you are not using the service worker. The Fetch function needs to send AccessToken. -This hook will give you a wrapped fetch that adds the access token for you. +### Hook reference -```javascript -import React, { useEffect, useState } from 'react'; -import { useOidcFetch, OidcSecure } from '@axa-fr/react-oidc'; +| Hook | Return values | +| --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `useOidc(configurationName?)` | `isAuthenticated`, `login`, `logout`, `renewTokens`. | +| `useOidcUser(configurationName?, demonstratingProofOfPossession?)` | `oidcUser`, `oidcUserLoadingState`, `reloadOidcUser`. | +| `useOidcAccessToken(configurationName?)` | `accessToken`, `accessTokenPayload`, and, when enabled, `generateDemonstrationOfProofOfPossessionAsync`. | +| `useOidcIdToken(configurationName?)` | `idToken`, `idTokenPayload`. | -const DisplayUserInfo = ({ fetch }) => { - const [oidcUser, setOidcUser] = useState(null); - const [isLoading, setLoading] = useState(true); +`login(callbackPath?, extras?, silentLoginOnly?, scope?)`, `logout(callbackPath?, extras?)`, and `renewTokens(extras?)` return promises. - useEffect(() => { - const fetchUserInfoAsync = async () => { - const res = await fetch('https://demo.duendesoftware.com/connect/userinfo'); - if (res.status != 200) { - return null; - } - return res.json(); - }; - let isMounted = true; - fetchUserInfoAsync().then(userInfo => { - if (isMounted) { - setLoading(false); - setOidcUser(userInfo); - } - }); - return () => { - isMounted = false; - }; - }, []); - - if (isLoading) { - return <>Loading; - } +Prefer `useOidcFetch` over manually building authorization headers. When worker token hiding is enabled, `accessToken` is a placeholder rather than the real token. Do not render or log raw tokens, and treat user claims as personal data. An ID token identifies the user to the client; it is not a replacement for an API access token. - return ( -
-
-
-
User information
- {oidcUser != null &&

{JSON.stringify(oidcUser)}

} -
-
-
- ); -}; +## Service worker -export const FetchUserHook = () => { - const { fetch } = useOidcFetch(); - return ( - - - - ); -}; +Ensure your application's static-assets directory exists (`public` below), then install the worker assets: + +```sh +node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public ``` -## How to get a fetch that inject Access_Token : HOC method +Keep the generated `OidcServiceWorker.js` synchronized with package updates. For example, merge this into your application's `package.json`: -If your are not using the service worker. Fetch function need to send AccessToken. -This HOC give you a wrapped fetch that add the access token for you. +```json +{ + "scripts": { + "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public" + } +} +``` -```javascript -import React, { useEffect, useState } from 'react'; -import { useOidcFetch, OidcSecure } from '@axa-fr/react-oidc'; +Then: -const DisplayUserInfo = ({ fetch }) => { - const [oidcUser, setOidcUser] = useState(null); - const [isLoading, setLoading] = useState(true); +1. Configure `public/OidcTrustedDomains.js` with your provider and API destinations. +2. Add `service_worker_relative_url: '/OidcServiceWorker.js'` to the OIDC configuration. +3. Set `service_worker_only: true` if login must not fall back to browser token storage. +4. Serve the worker over HTTPS (or localhost) with a scope that covers the application. - useEffect(() => { - const fetchUserInfoAsync = async () => { - const res = await fetch('https://demo.duendesoftware.com/connect/userinfo'); - if (res.status != 200) { - return null; - } - return res.json(); - }; - let isMounted = true; - fetchUserInfoAsync().then(userInfo => { - if (isMounted) { - setLoading(false); - setOidcUser(userInfo); - } - }); - return () => { - isMounted = false; - }; - }, []); - - if (isLoading) { - return <>Loading; - } +Follow the [core service-worker guide](../oidc-client/README.md#service-worker) for a trusted-domain example, all options, token-exposure choices, and fallback behavior. - return ( -
-
-
-
User information
- {oidcUser != null &&

{JSON.stringify(oidcUser)}

} -
-
-
- ); -}; +**Multi-tab login:** when `allowMultiTabLogin: true` is set in a trusted-domain entry, use `useOidcFetch()` or `withOidcFetch()` for protected API calls. Their tab-specific placeholder identifies the session to the worker. Plain fetch or a default Axios request cannot supply that marker and may result in HTTP 401. -const UserInfoWithFetchHoc = withOidcFetch(fetch)(DisplayUserInfo); -export const FetchUserHoc = () => ( - - - -); -``` +The worker can hide access and refresh tokens from application JavaScript, but it does **not** prevent XSS or stop injected code from making requests through your application. It does not hide all identity information. Keep normal XSS defenses and avoid broad trusted-domain rules. -## Components override +## Configuration, renewal, PAR, and DPoP -You can inject your own components. -All components definition receive props `configurationName`. Please checkout the demo for more complete example. +`OidcProvider` accepts the same `OidcConfiguration` as the vanilla client. Keep provider props, such as custom components and routing callbacks, outside that configuration object. -```javascript -import React from 'react'; -import { render } from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { OidcProvider } from '@axa-fr/react-oidc'; -import Header from './Layout/Header'; -import Routes from './Router'; - -// This configuration use hybrid mode -// ServiceWorker are used if available (more secure) else tokens are given to the client -// You need to give inside your code the "access_token" when using fetch -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:4200/authentication/callback', - silent_redirect_uri: 'http://localhost:4200/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.identityserver.io', - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; +- **Configuration:** see the [core configuration reference](../oidc-client/README.md#configuration) for required fields, storage, discovery, timeouts, logout, and session monitoring. +- **Renewal:** automatic renewal is enabled by default. For `TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted`, use `useOidcFetch`/`withOidcFetch` so requests trigger renewal. See [renewal behavior and strict renewal](../oidc-client/README.md#token-renewal). +- **Silent login:** add a distinct `silent_redirect_uri` if required. The provider handles its silent-login routes. Provider and browser cookie policies can prevent iframe login. +- **PAR:** set `par: 'auto'` or `'required'` in `configuration`; the default is `'disabled'`. `auto` uses PAR when an endpoint is advertised; missing required endpoints fail before navigation. Once selected, PAR errors never silently downgrade. See [full PAR semantics, errors, and CORS requirements](../oidc-client/README.md#pushed-authorization-requests-par). +- **DPoP:** enable `demonstrating_proof_of_possession` and use `useOidcFetch(undefined, 'default', true)` or `withOidcFetch(undefined, 'default', true)`. For user info, use `useOidcUser('default', true)`. See [DPoP and worker-specific settings](../oidc-client/README.md#dpop). Both the identity provider and resource server must support it. -const Loading = () =>

Loading

; -const AuthenticatingError = () =>

Authenticating error

; -const Authenticating = () =>

Authenticating

; -const SessionLost = () =>

Session Lost

; -const ServiceWorkerNotSupported = () =>

Not supported

; -const CallBackSuccess = () =>

Success

; - -//const [isSessionLost, setIsSessionLost] = useState(false); - -//const onSessionLost = ()=>{ -// setIsSessionLost(true); -//} - -const App = () => ( - - {/* isSessionLost && */} - -
- - - +## Custom components and provider options + +Replace built-in status screens with your own components. These are **provider props**, not fields inside `configuration`: + +```tsx +const Loading = (): React.JSX.Element =>

Restoring your session…

; +const AuthenticationError = (): React.JSX.Element => ( +

Sign-in failed. Please return to the sign-in page and try again.

); -render(, document.getElementById('root')); + + +; ``` -## How It Works +| Provider prop | Purpose | +| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `configuration`, `configurationName` | Client configuration and its name (`'default'` by default). | +| `loadingComponent` | Session restoration/loading screen. | +| `loadingTimeoutComponent` | Screen shown when the loading watchdog expires. | +| `authenticatingComponent` | Screen shown while starting login. | +| `authenticatingErrorComponent` | Login or callback failure screen. | +| `callbackSuccessComponent` | Screen shown after a successful callback. | +| `sessionLostComponent` | Session-loss screen. | +| `serviceWorkerNotSupportedComponent` | Unavailable-worker screen when worker-only mode is required. | +| `onSessionLost` | Handles session loss instead of displaying the built-in session-loss flow. | +| `onLogoutFromAnotherTab`, `onLogoutFromSameTab` | React to logout events. | +| `onEvent(configurationName, eventName, data)` | Observe client events; avoid logging complete payloads. | +| `withCustomHistory` | Returns a history adapter with `replaceState(url, stateHistory?)`. | +| `navigateAfterCallback(callbackPath)` | Async callback to perform post-login navigation; takes precedence over the history adapter for this navigation. | +| `getFetch` | Supplies a custom fetch implementation for the underlying client. | +| `location` | Custom `ILOidcLocation` adapter. | -These components encapsulate the use of "@axa-fr/vanilla-oidc" in order to hide workflow complexity. -Internally, native History API is used to be router library agnostic. +Custom status components receive `configurationName`. Set `configuration.loading_timeout_ms` to change the default 30-second loading watchdog, or a nonpositive value to disable it. See [`OidcProviderProps`](./src/OidcProvider.tsx) for the full type. -More information about OIDC +## Routing and Next.js -- [French : Augmentez la sécurité et la simplicité de votre Système d’Information OpenID Connect](https://medium.com/just-tech-it-now/augmentez-la-s%C3%A9curit%C3%A9-et-la-simplicit%C3%A9-de-votre-syst%C3%A8me-dinformation-avec-oauth-2-0-cf0732d71284) -- [English : Increase the security and simplicity of your information system with openid connect](https://medium.com/just-tech-it-now/increase-the-security-and-simplicity-of-your-information-system-with-openid-connect-fa8c26b99d6d) -- [English: youtube OIDC](https://www.youtube.com/watch?v=frIJfavZkUE&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=1) -- [French: youtube OIDC](https://www.youtube.com/watch?v=H-mLMGzQ_y0&list=PL8EMdIH6Mzxy2kHtsVOEWqNz-OaM_D_fB&index=2) +### Client-side routers -## NextJS +The default navigation uses the browser History API and dispatches `popstate`. Keep `OidcProvider` mounted on callback URLs. Protect route elements with `OidcSecure`; no particular router package is required. -To work with NextJS you need to inject your own history surcharge like the sample below. +For a router-specific integration, provide `navigateAfterCallback` to perform and await the router's navigation, or `withCustomHistory` to replace the default history adapter. These options belong on `OidcProvider`. -**component/layout.js** +The library retains hash-route callback matching for legacy integrations, but OAuth redirect URIs must not contain a fragment. Prefer path-based callback URLs for new deployments, even if the rest of the application uses a hash router. Existing hash-callback setups depend on provider-specific behavior. Interactive and silent callback URLs must be different. -```javascript -import { OidcProvider } from '@axa-fr/react-oidc'; -import { useRouter } from 'next/router'; +### Next.js -const configuration = { - client_id: 'interactive.public.short', - redirect_uri: 'http://localhost:3001/#authentication/callback', - silent_redirect_uri: 'http://localhost:3001/#authentication/silent-callback', // Optional activate silent-login that use cookies between OIDC server and client javascript to restore the session - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', -}; +Keep this browser library behind a client-only boundary: do not access `window` or initialize the OIDC client while rendering on the server. In the App Router, `'use client'` alone does not disable prerendering; use an appropriate client-only mounting or dynamic-import strategy. -const onEvent = (configurationName, eventName, data) => { - console.log(`oidc:${configurationName}:${eventName}`, data); -}; +The repository's [Next.js demo](../../examples/nextjs-demo/README.md) uses the **Pages Router** and a custom history adapter. For an initialized client-only provider using `next/router`, a post-login navigation adapter can look like this: + +```tsx +import { useRouter } from 'next/router'; +import { OidcProvider } from '@axa-fr/react-oidc'; -export default function Layout({ children }) { +function ClientAuth({ children }: React.PropsWithChildren): React.JSX.Element { const router = useRouter(); - const withCustomHistory = () => { - return { - replaceState: url => { - router - .replace({ - pathname: url, - }) - .then(() => { - window.dispatchEvent(new Event('popstate')); - }); - }, - }; - }; return ( - <> - -
{children}
-
- + => { + await router.replace(path); + window.dispatchEvent(new Event('popstate')); + }} + > + {children} + ); } ``` -For more information checkout the [NextJS React OIDC demo](https://github.com/AxaGuilDEv/react-oidc/tree/master/packages/nextjs-demo) +Here `configuration` is your browser-side OIDC configuration. Do not copy `next/router` into an App Router application; adapt to that router's APIs and navigation lifecycle. This package does not provide server-side route protection or a server session. -## Hash route +## Named configurations -`react-oidc` work also with hash router. +Use names to separate identity providers or sessions with different scopes. Give each configuration distinct callback URLs and, for worker mode, a matching trusted-domain entry. -```javascript -export const configurationIdentityServerWithHash = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '#authentication-callback', - silent_redirect_uri: window.location.origin + '#authentication-silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - par: 'auto', - refresh_time_before_tokens_expiration_in_second: 70, - service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; +```tsx + + + + + +``` + +Select the name explicitly; nesting does not change the hooks' default name: + +```tsx +const { login, isAuthenticated } = useOidc('payments'); +const { fetch: paymentsFetch } = useOidcFetch(undefined, 'payments'); ``` + +Use `` for that session's protected UI. Token and user hooks also accept a configuration name. + +## Errors and missing providers + +`OidcError`, `OidcErrorCode`, `isOidcError`, `OidcStateError`, `OidcStateErrorCode`, `isOidcStateError`, and the PAR error classes/guards are re-exported from this package. Use stable codes and phases, not string matching, for error handling. + +See the [core errors and events guide](../oidc-client/README.md#errors-and-events) for renewal errors, missing/mismatched state, missing nonces, retryability, and recovery. The provider's custom error/session-loss screens and `onEvent` callback are the React integration points. For strict renewal outside a hook, use `OidcClient.getOrThrow(name).renewTokensOrThrowAsync()`. + +When no client has been initialized for a name, `useOidc`, `useOidcUser`, `useOidcAccessToken`, and `useOidcIdToken` warn once per name and return unauthenticated/null defaults. This is useful in tests and Storybook, but does not initialize authentication. + +`OidcClient.get(name)` returns `null` for a missing client; `getOrThrow(name)` fails explicitly. `OidcSecure` and requests made through `useOidcFetch` require initialization and remain fail-fast. Mount a matching provider before using them. + +## Examples and further reading + +- [React demo](../../examples/react-oidc-demo/README.md) — routes, hooks, worker options, and named configurations. +- [Next.js demo](../../examples/nextjs-demo/README.md) — Pages Router integration. +- [Core client guide and API](../oidc-client/README.md). +- [Service-worker protocol](../oidc-client-service-worker/PROTOCOL.md). +- [Service-worker package guide](../oidc-client-service-worker/README.md). +- [FAQ and deployment guidance](../../FAQ.md). + +The demos use the repository's pnpm workspace. Follow their READMEs for setup rather than installing each package separately. From 58ff7b539e340b315dda2a30ee884cdd2e07a9c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Sep 2026 07:50:49 +0000 Subject: [PATCH 558/565] [skip ci] Update to version 7.29.4 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index c6641ea22..392686626 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.3", + "version": "7.29.4", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 34a9d9fcf..a67348f72 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.3'; +export default '7.29.4'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 197c58dd9..790584174 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.3", + "version": "7.29.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 34a9d9fcf..a67348f72 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.3'; +export default '7.29.4'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9c4a4e854..9fdcc50ed 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.3", + "version": "7.29.4", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 29ae343c169003b0b515cb106c6df9b6527ac357 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Sep 2026 07:50:51 +0000 Subject: [PATCH 559/565] [skip ci] Generate changelog to version 7.29.4 --- CHANGELOG.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b87d033fa..f985b36f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ # Changelog +## v7.29.4 + +- [58ff7b53](https://github.com/AxaFrance/oidc-client/commit/58ff7b539e340b315dda2a30ee884cdd2e07a9c0) - [skip ci] Update to version 7.29.4 in package.json, 2026-09-19 by *github-actions[bot]* +- [95ab5aa4](https://github.com/AxaFrance/oidc-client/commit/95ab5aa41904bf837c97c2c876e0d26892b2c3e2) - Clarify package documentation and replace architecture images with Mermaid (#1730) (release), 2026-09-19 by *Copilot* + + ## v7.29.3 +- [e470a539](https://github.com/AxaFrance/oidc-client/commit/e470a539874b0f8521718a3ad85764dd50d1da08) - [skip ci] Generate changelog to version 7.29.3, 2026-09-15 by *github-actions[bot]* - [84649474](https://github.com/AxaFrance/oidc-client/commit/846494746b2bba4571aa8b4f60e3c7ccd5f2fbe4) - [skip ci] Update to version 7.29.3 in package.json, 2026-09-15 by *github-actions[bot]* - [3b18c50d](https://github.com/AxaFrance/oidc-client/commit/3b18c50d5fa7ab61522a7d962cfac7748fb7b638) - Make React Oidc publish reruns idempotent when versions already exist on npm (#1728) (release), 2026-09-15 by *Copilot* - [eb0f40a1](https://github.com/AxaFrance/oidc-client/commit/eb0f40a1a5c4740be3ec13d4e83b716110bdd327) - chore(deps): update all pnpm workspace dependencies (#1727) (release), 2026-09-15 by *Guillaume Chervet* @@ -326,8 +333,3 @@ - [3fe05117](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* -## v7.24.0 - -- [de5da362](https://github.com/AxaFrance/oidc-client/commit/de5da362de4e3f10d46ffdfafd324e14e173b78c) - feat(scope): scope can be change dynamically (release) (#1489), 2025-01-03 by *Guillaume Chervet* - - From 0a9dcf847eba12f63e97a9fd471d2cc2db9ade4b Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 14:40:42 +0200 Subject: [PATCH 560/565] refactor: Add package regression tests and streamline token parsing and fetch hooks (#1732) (release) * Initial plan * test: cover package token parsing and React fetch behavior Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * refactor: avoid redundant token parsing and fetch wrappers Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * test and refactor client caching, OAuth forms, and URL parsing Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * test and simplify worker endpoint matching and utilities Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * expand React hook, route, guard, and demo regression coverage Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- .../react-oidc-demo/src/FetchUser.spec.tsx | 76 ++++++ examples/react-oidc-demo/src/FetchUser.tsx | 37 +-- .../src/__tests__/oidcConfig.spec.ts | 48 ++++ .../src/oidcConfig.ts | 2 +- .../src/utils/__tests__/codeVerifier.spec.ts | 34 ++- .../utils/__tests__/serializeHeaders.spec.ts | 38 ++- .../src/utils/__tests__/tokens.spec.ts | 40 +++- .../src/utils/codeVerifier.ts | 10 +- .../src/utils/serializeHeaders.ts | 7 +- .../src/utils/tokens.ts | 8 +- packages/oidc-client/src/cache.spec.ts | 118 ++++++++++ packages/oidc-client/src/cache.ts | 27 +-- packages/oidc-client/src/parseTokens.spec.ts | 60 ++++- packages/oidc-client/src/parseTokens.ts | 11 +- .../oidc-client/src/requests.form.spec.ts | 139 +++++++++++ packages/oidc-client/src/requests.ts | 41 +--- packages/oidc-client/src/route-utils.spec.ts | 57 ++++- packages/oidc-client/src/route-utils.ts | 36 +-- packages/react-oidc/src/FetchToken.spec.tsx | 135 +++++++++++ packages/react-oidc/src/FetchToken.tsx | 21 +- packages/react-oidc/src/OidcSecure.spec.tsx | 84 +++++++ packages/react-oidc/src/ReactOidc.spec.tsx | 222 ++++++++++++++++++ packages/react-oidc/src/ReactOidc.tsx | 34 +-- .../SilentLogin.component.spec.tsx | 71 ++++++ .../SilentLogin.component.tsx | 4 +- .../core/routes/OidcRoutes.behavior.spec.tsx | 123 ++++++++++ .../react-oidc/src/core/routes/OidcRoutes.tsx | 36 ++- 27 files changed, 1343 insertions(+), 176 deletions(-) create mode 100644 examples/react-oidc-demo/src/FetchUser.spec.tsx create mode 100644 packages/oidc-client/src/cache.spec.ts create mode 100644 packages/oidc-client/src/requests.form.spec.ts create mode 100644 packages/react-oidc/src/FetchToken.spec.tsx create mode 100644 packages/react-oidc/src/OidcSecure.spec.tsx create mode 100644 packages/react-oidc/src/ReactOidc.spec.tsx create mode 100644 packages/react-oidc/src/core/default-component/SilentLogin.component.spec.tsx create mode 100644 packages/react-oidc/src/core/routes/OidcRoutes.behavior.spec.tsx diff --git a/examples/react-oidc-demo/src/FetchUser.spec.tsx b/examples/react-oidc-demo/src/FetchUser.spec.tsx new file mode 100644 index 000000000..e3373cddf --- /dev/null +++ b/examples/react-oidc-demo/src/FetchUser.spec.tsx @@ -0,0 +1,76 @@ +// @vitest-environment jsdom +import type { Fetch } from '@axa-fr/react-oidc'; +import { OidcSecure, useOidcFetch } from '@axa-fr/react-oidc'; +import { act, cleanup, render, screen } from '@testing-library/react'; +import type { ComponentType, PropsWithChildren } from 'react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { FetchUserHook } from './FetchUser'; + +vi.mock('@axa-fr/react-oidc', () => ({ + OidcSecure: vi.fn(({ children }: PropsWithChildren) => <>{children}), + useOidcFetch: vi.fn(), + withOidcFetch: (fetch: Fetch) => (Component: ComponentType<{ fetch: Fetch }>) => + function WithFetch() { + return ; + }, +})); + +describe('user-info fetch demo', () => { + const authenticatedFetch = vi.fn(); + + beforeEach(() => { + vi.clearAllMocks(); + authenticatedFetch.mockReset(); + vi.mocked(useOidcFetch).mockReturnValue({ fetch: authenticatedFetch }); + }); + + afterEach(() => { + cleanup(); + }); + + it('shows loading until the response arrives, then displays the user', async () => { + let resolveResponse: (response: Response) => void; + authenticatedFetch.mockReturnValue( + new Promise(resolve => { + resolveResponse = resolve; + }), + ); + const user = { sub: 'example', name: 'Example user' }; + + render(); + expect(screen.getByText('Loading')).toBeDefined(); + expect(useOidcFetch).toHaveBeenCalledWith(window.fetch, 'custom', true); + expect(vi.mocked(OidcSecure).mock.calls[0][0].configurationName).toBe('custom'); + expect(authenticatedFetch).toHaveBeenCalledExactlyOnceWith( + 'https://demo.duendesoftware.com/connect/userinfo', + ); + + await act(async () => resolveResponse(new Response(JSON.stringify(user)))); + + expect(screen.queryByText('Loading')).toBeNull(); + expect(screen.getByText(JSON.stringify(user))).toBeDefined(); + }); + + it.each([201, 400, 401, 500])('does not display user data for HTTP %i', async status => { + const user = { sub: 'example' }; + authenticatedFetch.mockResolvedValue(new Response(JSON.stringify(user), { status })); + + render(); + + await screen.findByText('User information'); + expect(screen.queryByText('Loading')).toBeNull(); + expect(screen.queryByText(JSON.stringify(user))).toBeNull(); + }); + + it('defaults proof of possession to false and does not refetch on rerender', async () => { + authenticatedFetch.mockResolvedValue(new Response('{}')); + const { rerender } = render(); + await screen.findByText('User information'); + + rerender(); + + expect(useOidcFetch).toHaveBeenCalledWith(window.fetch, undefined, false); + expect(authenticatedFetch).toHaveBeenCalledOnce(); + }); +}); diff --git a/examples/react-oidc-demo/src/FetchUser.tsx b/examples/react-oidc-demo/src/FetchUser.tsx index ba250352d..81e6e91ba 100644 --- a/examples/react-oidc-demo/src/FetchUser.tsx +++ b/examples/react-oidc-demo/src/FetchUser.tsx @@ -1,22 +1,26 @@ -import { OidcSecure, useOidcFetch, withOidcFetch } from '@axa-fr/react-oidc'; -import React, { useEffect, useState } from 'react'; +import { + type Fetch, + OidcSecure, + type OidcUserInfo, + useOidcFetch, + withOidcFetch, +} from '@axa-fr/react-oidc'; +import React, { type ReactElement, useEffect, useState } from 'react'; -const DisplayUserInfo = ({ fetch }) => { - const [oidcUser, setOidcUser] = useState(null); - const [isLoading, setLoading] = useState(true); +const fetchUserInfoAsync = async (fetch: Fetch): Promise => { + const response = await fetch('https://demo.duendesoftware.com/connect/userinfo'); + return response.status === 200 ? response.json() : null; +}; + +const DisplayUserInfo = ({ fetch }: { fetch: Fetch }): ReactElement => { + const [oidcUser, setOidcUser] = useState(null); + const [isLoading, setIsLoading] = useState(true); useEffect(() => { - const fetchUserInfoAsync = async () => { - const res = await fetch('https://demo.duendesoftware.com/connect/userinfo'); - if (res.status !== 200) { - return null; - } - return res.json(); - }; let isMounted = true; - fetchUserInfoAsync().then(userInfo => { + fetchUserInfoAsync(fetch).then(userInfo => { if (isMounted) { - setLoading(false); + setIsLoading(false); setOidcUser(userInfo); } }); @@ -49,7 +53,10 @@ export const FetchUserHoc = () => ( ); -export const FetchUserHook = (props: any) => { +export const FetchUserHook = (props: { + configurationName?: string; + demonstratingProofOfPossession?: boolean; +}): ReactElement => { const { fetch } = useOidcFetch( window.fetch, props.configurationName, diff --git a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts index 3ac09c610..2fa07829b 100644 --- a/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts +++ b/packages/oidc-client-service-worker/src/__tests__/oidcConfig.spec.ts @@ -35,6 +35,54 @@ const oidcServerConfigDefault = { }; describe('getCurrentDatabasesTokenEndpoint', () => { + it.each([ + ['https://EXAMPLE.com:443/token?code=example', 'https://example.com/token'], + ['http://example.com:80/token', 'http://EXAMPLE.com/token'], + ['https://example.com/token/child', 'https://example.com/token'], + ['https://example.com/token2', 'https://example.com/token'], + ['not-a-url', 'not-a-url'], + ])('preserves normalization and prefix matching for %s', (url, endpoint) => { + const database: Database = { + uninitialized: { ...oidcConfigDefaults, oidcServerConfiguration: null }, + token: { + ...oidcConfigDefaults, + oidcServerConfiguration: { ...oidcServerConfigDefault, tokenEndpoint: endpoint }, + }, + revocation: { + ...oidcConfigDefaults, + oidcServerConfiguration: { ...oidcServerConfigDefault, revocationEndpoint: endpoint }, + }, + emptyEndpoints: { + ...oidcConfigDefaults, + oidcServerConfiguration: { ...oidcServerConfigDefault }, + }, + }; + + const result = getCurrentDatabasesTokenEndpoint(database, url); + + expect(result).toEqual([database.token, database.revocation]); + expect(result[0]).toBe(database.token); + expect(result[1]).toBe(database.revocation); + }); + + it('returns no matches for an empty database', () => { + expect(getCurrentDatabasesTokenEndpoint({}, 'https://example.com/token')).toEqual([]); + }); + + it('keeps non-default ports distinct', () => { + const database: Database = { + config: { + ...oidcConfigDefaults, + oidcServerConfiguration: { + ...oidcServerConfigDefault, + tokenEndpoint: 'https://example.com:8443/token', + }, + }, + }; + + expect(getCurrentDatabasesTokenEndpoint(database, 'https://example.com/token')).toEqual([]); + }); + it('should return configs with matching token endpoint', () => { const database: Database = { config1: { diff --git a/packages/oidc-client-service-worker/src/oidcConfig.ts b/packages/oidc-client-service-worker/src/oidcConfig.ts index 307668db1..2aab2bade 100644 --- a/packages/oidc-client-service-worker/src/oidcConfig.ts +++ b/packages/oidc-client-service-worker/src/oidcConfig.ts @@ -82,11 +82,11 @@ const shouldBypassNonOidcRequest = ( }; const getMatchingOidcConfigurations = (database: Database, url: string): OidcConfig[] => { + const normalizedUrl = normalizeUrl(url); return Object.values(database).filter(config => { const { oidcServerConfiguration } = config || {}; const { tokenEndpoint, revocationEndpoint } = oidcServerConfiguration || {}; - const normalizedUrl = normalizeUrl(url); return ( (tokenEndpoint && normalizedUrl.startsWith(normalizeUrl(tokenEndpoint))) || (revocationEndpoint && normalizedUrl.startsWith(normalizeUrl(revocationEndpoint))) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts index e5ab148c1..8e6f7b605 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/codeVerifier.spec.ts @@ -3,6 +3,18 @@ import { describe, expect, it } from 'vitest'; import { extractConfigurationNameFromCodeVerifier, replaceCodeVerifier } from '../codeVerifier'; describe('replaceCodeVerifier should', () => { + it.each([ + ['?code_verifier=old&state=example', '&code_verifier=new&state=example'], + ['&CODE_VERIFIER=old', '&code_verifier=new'], + ['&code_verifier=first&code_verifier=second', '&code_verifier=new&code_verifier=second'], + ['code_verifier=old', 'code_verifier=old'], + ['&code_verifier=&state=example', '&code_verifier=&state=example'], + ['&other=example', '&other=example'], + ['', ''], + ])('preserve replacement boundaries for %s', (body, expected) => { + expect(replaceCodeVerifier(body, 'new')).toBe(expected); + }); + it.each([ { body: 'code=F5CDCDB9AADB9ADA59560DE80CAAA6688BC5C8BA1CC1C1F9839F7E7B32171B3D-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauthentication%2Fcallback&code_verifier=ONskPfcbfAYPp5xqhpMstHSz017896R7sy3wqrRdqC8lYB8yQciCCNLooqLC9qHFTF2FFhDQP4m8PEFNSry8eoCbQ9baYcoWjF1bEH6vGWExdTIMqauicjeVxqz58FO8', @@ -21,6 +33,27 @@ describe('replaceCodeVerifier should', () => { }); describe('extractConfigurationNameFromCodeVerifier should', () => { + it.each([ + ['?code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_team%20one&state=x', 'team one'], + ['&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_team%23tab', 'team#tab'], + ['&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_team+one', 'team+one'], + ['code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default', ''], + ['&CODE_VERIFIER=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default', ''], + ['&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_', ''], + ['&code_verifier=ordinary', ''], + ['', ''], + ])('preserve extraction boundaries and decoding for %s', (body, expected) => { + expect(extractConfigurationNameFromCodeVerifier(body)).toBe(expected); + }); + + it('preserve malformed configuration escape errors', () => { + expect(() => + extractConfigurationNameFromCodeVerifier( + '&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_%ZZ', + ), + ).toThrow(URIError); + }); + it.each([ { body: 'code=56DB8E3592FBD48DCF6F65B38B12845FF0186ECF6D66ECB5425C0F7E658B7951-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=https%3A%2F%2Fblack-rock-0dc6b0d03.1.azurestaticapps.net%2Fauthentication%2Fcallback&code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_default_tab1', @@ -32,7 +65,6 @@ describe('extractConfigurationNameFromCodeVerifier should', () => { }, ])('inject new codeVerifier', async ({ body, expected }) => { const configurationName = extractConfigurationNameFromCodeVerifier(body); - console.log(configurationName); expect(configurationName).toEqual(expected); }); }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/serializeHeaders.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/serializeHeaders.spec.ts index 4b78f43c6..44d14c928 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/serializeHeaders.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/serializeHeaders.spec.ts @@ -4,7 +4,43 @@ import { serializeHeaders } from '..'; describe('serializeHeaders', () => { it('can serialize basic header', () => { - const result = serializeHeaders(new Headers({ 'Content-Type': 'application/json' })); // Error: Argument of type 'Headers' is not assignable to parameter of type 'Headers'.(2345 + const result = serializeHeaders(new Headers({ 'Content-Type': 'application/json' })); expect(result).toEqual({ 'content-type': 'application/json' }); }); + + it('returns an empty object for empty headers', () => { + expect(serializeHeaders(new Headers())).toEqual({}); + }); + + it('normalizes names and preserves empty and combined header values', () => { + const headers = new Headers({ + 'X-Empty': '', + 'X-Custom': 'first', + 'Content-Type': 'text/plain', + }); + headers.append('x-custom', 'second'); + + expect(serializeHeaders(headers)).toEqual({ + 'content-type': 'text/plain', + 'x-custom': 'first, second', + 'x-empty': '', + }); + expect(headers.get('x-custom')).toBe('first, second'); + }); + + it('preserves the combined value of repeated Set-Cookie headers', () => { + const headers = new Headers(); + headers.append('Set-Cookie', 'first=1'); + headers.append('Set-Cookie', 'second=2'); + + expect(serializeHeaders(headers)).toEqual({ 'set-cookie': 'first=1, second=2' }); + }); + + it('returns a detached object that can be changed without mutating the headers', () => { + const headers = new Headers({ 'X-Custom': 'original' }); + const serialized = serializeHeaders(headers); + serialized['x-custom'] = 'changed'; + + expect(headers.get('X-Custom')).toBe('original'); + }); }); diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 11de6dedf..02fb887cd 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, it } from 'vitest'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { OidcServerConfiguration } from '../../types'; import { _hideTokens, extractTokenPayload, isTokensOidcValid, isTokensValid, parseJwt } from '..'; @@ -56,6 +56,44 @@ describe('tokens', () => { }); describe('extractTokenPayload', () => { + const payload = { sub: 'unit-test', name: 'Test user' }; + const encodedPayload = btoa(JSON.stringify(payload)); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it.each([`header.${encodedPayload}.signature`, `.${encodedPayload}.`])( + 'extracts the payload from a three-part token: %s', + token => { + expect(extractTokenPayload(token)).toEqual(payload); + }, + ); + + it.each([ + undefined, + '', + 'opaque-token', + `header.${encodedPayload}`, + `header.${encodedPayload}.signature.extra`, + `header.${encodedPayload}.signature.`, + ])('returns null for a token without exactly three parts: %s', token => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined); + + expect(extractTokenPayload(token)).toBeNull(); + expect(warn).not.toHaveBeenCalled(); + }); + + it.each(['header..signature', 'header.!.signature', 'header.bm90IGpzb24=.signature'])( + 'warns and returns null when decoding fails: %s', + token => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined); + + expect(extractTokenPayload(token)).toBeNull(); + expect(warn).toHaveBeenCalledExactlyOnceWith(expect.any(Error)); + }, + ); + it('can extract token payload', () => { const result = extractTokenPayload( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', diff --git a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts index 46abc8882..8cecf4b81 100644 --- a/packages/oidc-client-service-worker/src/utils/codeVerifier.ts +++ b/packages/oidc-client-service-worker/src/utils/codeVerifier.ts @@ -3,13 +3,9 @@ export function replaceCodeVerifier(codeVerifier: string, newCodeVerifier: strin return codeVerifier.replace(regex, `&code_verifier=${newCodeVerifier}`); } -export const extractConfigurationNameFromCodeVerifier = (chaine: string): string => { +export const extractConfigurationNameFromCodeVerifier = (body: string): string => { const regex = /[?&]code_verifier=CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER_([^&]+)/; - const match = chaine.match(regex); + const match = body.match(regex); - if (match && match.length > 0) { - return decodeURIComponent(match[1]); - } else { - return ''; - } + return match ? decodeURIComponent(match[1]) : ''; }; diff --git a/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts b/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts index 58f2ae3eb..894514743 100644 --- a/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts +++ b/packages/oidc-client-service-worker/src/utils/serializeHeaders.ts @@ -1,8 +1,9 @@ -function serializeHeaders(headers: Headers) { +function serializeHeaders(headers: Headers): Record { const headersObj: Record = {}; for (const key of headers.keys()) { - if (headers.has(key)) { - headersObj[key] = headers.get(key) as string; + const value = headers.get(key); + if (value !== null) { + headersObj[key] = value; } } return headersObj; diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 21a8ec1f5..29802458d 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -8,7 +8,6 @@ import { OidcServerConfiguration, Tokens, } from '../types'; -import { countLetter } from './strings'; export const parseJwt = (payload: string) => { return JSON.parse(b64DecodeUnicode(payload.replaceAll(/-/g, '+').replaceAll(/_/g, '/'))); @@ -38,11 +37,8 @@ const extractTokenPayload = (token?: string) => { if (!token) { return null; } - if (countLetter(token, '.') === 2) { - return parseJwt(token.split('.')[1]); - } else { - return null; - } + const parts = token.split('.'); + return parts.length === 3 ? parseJwt(parts[1]) : null; } catch (e) { console.warn(e); } diff --git a/packages/oidc-client/src/cache.spec.ts b/packages/oidc-client/src/cache.spec.ts new file mode 100644 index 000000000..0dfd827ca --- /dev/null +++ b/packages/oidc-client/src/cache.spec.ts @@ -0,0 +1,118 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +describe('issuer configuration cache', () => { + let cache: typeof import('./cache'); + let storage: Storage; + const configuration = { issuer: 'https://issuer.example.com' }; + + beforeEach(async () => { + vi.resetModules(); + vi.useFakeTimers(); + vi.setSystemTime(10000); + storage = { + length: 0, + clear: vi.fn(), + key: vi.fn(), + removeItem: vi.fn(), + getItem: vi.fn().mockReturnValue(null), + setItem: vi.fn(), + }; + vi.stubGlobal('window', { sessionStorage: storage }); + cache = await import('./cache'); + }); + + afterEach(() => { + vi.useRealTimers(); + vi.unstubAllGlobals(); + vi.restoreAllMocks(); + }); + + it('returns null for a missing entry', () => { + expect(cache.getFromCache('issuer', storage, 60)).toBeNull(); + expect(storage.getItem).toHaveBeenCalledExactlyOnceWith('issuer'); + }); + + it('persists the same timestamp and result that are cached in memory', () => { + cache.setCache('issuer', configuration, storage); + + expect(storage.setItem).toHaveBeenCalledExactlyOnceWith( + 'issuer', + '{"result":{"issuer":"https://issuer.example.com"},"timestamp":10000}', + ); + expect(cache.getFromCache('issuer', storage, 60)).toBe(configuration); + expect(storage.getItem).not.toHaveBeenCalled(); + }); + + it('uses session storage when no storage is supplied', () => { + cache.setCache('issuer', configuration); + + expect(storage.setItem).toHaveBeenCalledOnce(); + expect(cache.getFromCache('issuer', undefined, 60)).toBe(configuration); + }); + + it('supports an in-memory cache without storage', () => { + expect(cache.getFromCache('issuer', null, 60)).toBeNull(); + cache.setCache('issuer', configuration, null); + + expect(cache.getFromCache('issuer', null, 60)).toBe(configuration); + expect(storage.setItem).not.toHaveBeenCalled(); + }); + + it('hydrates a persisted entry once and then uses the in-memory value', () => { + vi.mocked(storage.getItem).mockReturnValue( + '{"result":{"issuer":"https://issuer.example.com"},"timestamp":10000}', + ); + + const result = cache.getFromCache('issuer', storage, 60); + expect(result).toEqual(configuration); + expect(cache.getFromCache('issuer', storage, 60)).toBe(result); + expect(storage.getItem).toHaveBeenCalledOnce(); + }); + + it.each([ + [10999, 1, true], + [11000, 1, false], + [11001, 1, false], + [10000, 0, false], + [10000, -1, false], + ])('honors the expiry boundary at %i with a TTL of %i seconds', (now, ttl, isValid) => { + cache.setCache('issuer', configuration, storage); + vi.setSystemTime(now); + + expect(cache.getFromCache('issuer', storage, ttl)).toEqual(isValid ? configuration : null); + }); + + it('keeps issuer entries independent and replaces an existing entry', () => { + const replacement = { issuer: 'https://replacement.example.com' }; + cache.setCache('first', configuration, storage); + cache.setCache('second', replacement, storage); + cache.setCache('first', replacement, storage); + + expect(cache.getFromCache('first', storage, 60)).toBe(replacement); + expect(cache.getFromCache('second', storage, 60)).toBe(replacement); + }); + + it('does not rehydrate an expired in-memory entry', () => { + cache.setCache('issuer', configuration, storage); + vi.setSystemTime(70000); + + expect(cache.getFromCache('issuer', storage, 60)).toBeNull(); + expect(storage.getItem).not.toHaveBeenCalled(); + }); + + it('preserves JSON parsing failures for malformed persisted data', () => { + vi.mocked(storage.getItem).mockReturnValue('{'); + + expect(() => cache.getFromCache('issuer', storage, 60)).toThrow(SyntaxError); + }); + + it('preserves storage write failures while keeping the memory entry', () => { + const error = new Error('Storage unavailable'); + vi.mocked(storage.setItem).mockImplementation(() => { + throw error; + }); + + expect(() => cache.setCache('issuer', configuration, storage)).toThrow(error); + expect(cache.getFromCache('issuer', storage, 60)).toBe(configuration); + }); +}); diff --git a/packages/oidc-client/src/cache.ts b/packages/oidc-client/src/cache.ts index 7a49cc16f..c39c087f5 100644 --- a/packages/oidc-client/src/cache.ts +++ b/packages/oidc-client/src/cache.ts @@ -1,29 +1,24 @@ const fetchFromIssuerCache = {}; export const getFromCache = (localStorageKey, storage = window.sessionStorage, timeCacheSecond) => { - if (!fetchFromIssuerCache[localStorageKey]) { - if (storage) { - const cacheJson = storage.getItem(localStorageKey); - if (cacheJson) { - fetchFromIssuerCache[localStorageKey] = JSON.parse(cacheJson); - } + if (!fetchFromIssuerCache[localStorageKey] && storage) { + const cacheJson = storage.getItem(localStorageKey); + if (cacheJson) { + fetchFromIssuerCache[localStorageKey] = JSON.parse(cacheJson); } } - const oneHourMinisecond = 1000 * timeCacheSecond; - // @ts-ignore - if ( - fetchFromIssuerCache[localStorageKey] && - fetchFromIssuerCache[localStorageKey].timestamp + oneHourMinisecond > Date.now() - ) { - return fetchFromIssuerCache[localStorageKey].result; + const cachedEntry = fetchFromIssuerCache[localStorageKey]; + const cacheDurationMilliseconds = 1000 * timeCacheSecond; + if (cachedEntry && cachedEntry.timestamp + cacheDurationMilliseconds > Date.now()) { + return cachedEntry.result; } return null; }; export const setCache = (localStorageKey, result, storage = window.sessionStorage) => { - const timestamp = Date.now(); - fetchFromIssuerCache[localStorageKey] = { result, timestamp }; + const cachedEntry = { result, timestamp: Date.now() }; + fetchFromIssuerCache[localStorageKey] = cachedEntry; if (storage) { - storage.setItem(localStorageKey, JSON.stringify({ result, timestamp })); + storage.setItem(localStorageKey, JSON.stringify(cachedEntry)); } }; diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 3e71b8b42..00651fbac 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; import { sleepAsync } from './initWorker'; import { @@ -13,6 +13,64 @@ import { synchroniseTokensStatus } from './renewTokens'; import { StringMap, TokenAutomaticRenewMode } from './types'; describe('ParseTokens test Suite', () => { + describe.each(['accessToken', 'idToken'])('%s payload extraction', tokenProperty => { + const payload = { sub: 'unit-test', name: 'Test user' }; + const encodedPayload = btoa(JSON.stringify(payload)); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it.each([`header.${encodedPayload}.signature`, `.${encodedPayload}.`])( + 'extracts the payload from a three-part token: %s', + token => { + const tokens = setTokens( + { [tokenProperty]: token, issuedAt: 1000, expiresIn: 60 }, + null, + TokenRenewMode.access_token_invalid, + ); + + expect(tokens[`${tokenProperty}Payload`]).toEqual(payload); + expect(tokens[tokenProperty]).toBe(token); + }, + ); + + it.each([ + undefined, + null, + '', + 'opaque-token', + `header.${encodedPayload}`, + `header.${encodedPayload}.signature.extra`, + `header.${encodedPayload}.signature.`, + ])('returns a null payload for a token without exactly three parts: %s', token => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined); + const tokens = setTokens( + { [tokenProperty]: token, issuedAt: 1000, expiresIn: 60 }, + null, + TokenRenewMode.access_token_invalid, + ); + + expect(tokens[`${tokenProperty}Payload`]).toBeNull(); + expect(warn).not.toHaveBeenCalled(); + }); + + it.each(['header..signature', 'header.!.signature', 'header.bm90IGpzb24=.signature'])( + 'warns and returns a null payload when decoding fails: %s', + token => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined); + const tokens = setTokens( + { [tokenProperty]: token, issuedAt: 1000, expiresIn: 60 }, + null, + TokenRenewMode.access_token_invalid, + ); + + expect(tokens[`${tokenProperty}Payload`]).toBeNull(); + expect(warn).toHaveBeenCalledExactlyOnceWith(expect.any(Error)); + }, + ); + }); + const currentTimeUnixSecond = new Date().getTime() / 1000; describe.each([ [currentTimeUnixSecond + 120, currentTimeUnixSecond - 10, true], diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index ad1bfa802..f79c1f44a 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -16,21 +16,14 @@ const extractTokenPayload = (token: string) => { if (!token) { return null; } - if (countLetter(token, '.') === 2) { - return parseJwt(token.split('.')[1]); - } else { - return null; - } + const parts = token.split('.'); + return parts.length === 3 ? parseJwt(parts[1]) : null; } catch (e) { console.warn(e); } return null; }; -const countLetter = (str: string, find) => { - return str.split(find).length - 1; -}; - export type Tokens = { refreshToken: string; idTokenPayload: any; diff --git a/packages/oidc-client/src/requests.form.spec.ts b/packages/oidc-client/src/requests.form.spec.ts new file mode 100644 index 000000000..36cfe0a29 --- /dev/null +++ b/packages/oidc-client/src/requests.form.spec.ts @@ -0,0 +1,139 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { TokenRenewMode } from './parseTokens'; +import { + performFirstTokenRequestAsync, + performPushedAuthorizationRequestAsync, + performRevocationRequestAsync, + performTokenRequestAsync, +} from './requests'; +import type { Fetch, StringMap } from './types'; + +describe('OAuth request form encoding', () => { + afterEach(() => { + vi.unstubAllGlobals(); + }); + + it.each(['revocation', 'token', 'first token', 'PAR'])( + 'preserves encoding and parameters for %s requests', + async requestType => { + const fetch = vi + .fn() + .mockResolvedValue( + new Response( + JSON.stringify( + requestType === 'PAR' + ? { request_uri: 'urn:request:example', expires_in: 60 } + : { access_token: 'opaque', issued_at: 1000, expires_in: 60 }, + ), + { status: requestType === 'PAR' ? 201 : 200 }, + ), + ); + const parameters = { + 'custom key': 'a+b &c=値', + scope: 'openid profile', + empty: '', + }; + const endpoint = 'https://issuer.example.com/endpoint'; + const expectedParameters: StringMap = { ...parameters }; + + if (requestType === 'revocation') { + await performRevocationRequestAsync(fetch)( + endpoint, + 'opaque', + 'access_token', + 'client', + parameters, + ); + Object.assign(expectedParameters, { + token: 'opaque', + token_type_hint: 'access_token', + client_id: 'client', + }); + } else if (requestType === 'token') { + await performTokenRequestAsync(fetch)( + endpoint, + { grant_type: 'refresh_token' }, + parameters, + null, + {}, + TokenRenewMode.access_token_invalid, + ); + expectedParameters.grant_type = 'refresh_token'; + } else if (requestType === 'first token') { + vi.stubGlobal('fetch', fetch); + const storage = { + getCodeVerifierAsync: vi.fn().mockResolvedValue('test-verifier'), + setCodeVerifierAsync: vi.fn(), + setStateAsync: vi.fn(), + }; + await performFirstTokenRequestAsync(storage)( + endpoint, + parameters, + {}, + TokenRenewMode.access_token_invalid, + ); + expectedParameters.code_verifier = 'test-verifier'; + expect(storage.setCodeVerifierAsync).toHaveBeenCalledWith(null); + expect(storage.setStateAsync).toHaveBeenCalledWith(null); + } else { + await performPushedAuthorizationRequestAsync(fetch)(endpoint, parameters); + } + + expect(fetch).toHaveBeenCalledOnce(); + const [url, request] = fetch.mock.calls[0]; + expect(url).toBe(endpoint); + expect(request.method).toBe('POST'); + expect(request.headers).toEqual({ + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + }); + expect(request.body).toContain('custom%20key=a%2Bb%20%26c%3D%E5%80%A4'); + expect(request.body).toContain('scope=openid%20profile'); + expect(Object.fromEntries(new URLSearchParams(request.body as string))).toEqual( + expectedParameters, + ); + expect(parameters).toEqual({ + 'custom key': 'a+b &c=値', + scope: 'openid profile', + empty: '', + }); + }, + ); + + it('does not let revocation extras override existing parameters', async () => { + const fetch = vi.fn().mockResolvedValue(new Response(null, { status: 200 })); + + await performRevocationRequestAsync(fetch)( + 'https://issuer.example.com/revoke', + 'original', + 'access_token', + 'client', + { token: 'replacement', client_id: 'other', token_type_hint: 'refresh_token' }, + ); + + expect(fetch.mock.calls[0][1].body).toBe( + 'token=original&token_type_hint=access_token&client_id=client', + ); + }); + + it('preserves enumerable inherited parameters in token requests', async () => { + const fetch = vi.fn().mockResolvedValue(new Response('{}', { status: 400 })); + const details: StringMap = Object.assign(Object.create({ inherited: 'value' }), { + grant_type: 'refresh_token', + }); + + await performTokenRequestAsync(fetch)( + 'https://issuer.example.com/token', + details, + { grant_type: 'ignored', extra: 'added' }, + null, + {}, + TokenRenewMode.access_token_invalid, + ); + + expect(fetch.mock.calls[0][1].body).toBe( + 'grant_type=refresh_token&extra=added&inherited=value', + ); + expect(details.extra).toBe('added'); + }); +}); diff --git a/packages/oidc-client/src/requests.ts b/packages/oidc-client/src/requests.ts index 3e62d3d00..ae523c34e 100644 --- a/packages/oidc-client/src/requests.ts +++ b/packages/oidc-client/src/requests.ts @@ -69,6 +69,14 @@ export const TOKEN_TYPE = { access_token: 'access_token', }; +const encodeFormBody = (details: StringMap): string => { + const formBody: string[] = []; + for (const property in details) { + formBody.push(`${encodeURIComponent(property)}=${encodeURIComponent(details[property])}`); + } + return formBody.join('&'); +}; + export const performRevocationRequestAsync = fetch => async ( @@ -90,13 +98,7 @@ export const performRevocationRequestAsync = } } - const formBody = []; - for (const property in details) { - const encodedKey = encodeURIComponent(property); - const encodedValue = encodeURIComponent(details[property]); - formBody.push(`${encodedKey}=${encodedValue}`); - } - const formBodyString = formBody.join('&'); + const formBodyString = encodeFormBody(details); const response = await internalFetch(fetch)( url, @@ -161,12 +163,7 @@ export const performPushedAuthorizationRequestAsync = ); } - const formBody = []; - for (const property in details) { - const encodedKey = encodeURIComponent(property); - const encodedValue = encodeURIComponent(details[property]); - formBody.push(`${encodedKey}=${encodedValue}`); - } + const formBodyString = encodeFormBody(details); let response: Response; try { @@ -177,7 +174,7 @@ export const performPushedAuthorizationRequestAsync = headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', }, - body: formBody.join('&'), + body: formBodyString, }, timeoutMs, ); @@ -244,13 +241,7 @@ export const performTokenRequestAsync = } } - const formBody = []; - for (const property in details) { - const encodedKey = encodeURIComponent(property); - const encodedValue = encodeURIComponent(details[property]); - formBody.push(`${encodedKey}=${encodedValue}`); - } - const formBodyString = formBody.join('&'); + const formBodyString = encodeFormBody(details); const response = await internalFetch(fetch)( url, @@ -354,13 +345,7 @@ export const performFirstTokenRequestAsync = ): Promise => { formBodyExtras = formBodyExtras ? { ...formBodyExtras } : {}; formBodyExtras.code_verifier = await storage.getCodeVerifierAsync(); - const formBody = []; - for (const property in formBodyExtras) { - const encodedKey = encodeURIComponent(property); - const encodedValue = encodeURIComponent(formBodyExtras[property]); - formBody.push(`${encodedKey}=${encodedValue}`); - } - const formBodyString = formBody.join('&'); + const formBodyString = encodeFormBody(formBodyExtras); const response = await internalFetch(fetch)( url, { diff --git a/packages/oidc-client/src/route-utils.spec.ts b/packages/oidc-client/src/route-utils.spec.ts index 46434afbc..ca4c3e397 100644 --- a/packages/oidc-client/src/route-utils.spec.ts +++ b/packages/oidc-client/src/route-utils.spec.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { getPath } from './route-utils'; +import { getLocation, getParseQueryStringFromLocation, getPath } from './route-utils'; describe('Route test Suite', () => { it.each([ @@ -17,6 +17,61 @@ describe('Route test Suite', () => { expect(path).toBe(expected); }); + describe('URL parsing', () => { + it('preserves the original URL and separates its components', () => { + const href = 'https://example.com:8443/path/?state=abc#section'; + + expect(getLocation(href)).toEqual({ + href, + protocol: 'https:', + host: 'example.com:8443', + hostname: 'example.com', + port: '8443', + path: '/path/', + search: 'state=abc', + hash: '#section', + }); + }); + + it.each([ + ['https://example.com/path?outer=value#route?inner=value', 'inner=value', '#route'], + ['https://example.com/path?outer=value#route?a?b', 'outer=value', '#route?a?b'], + ['https://example.com/path', '', ''], + ])('preserves query and fragment precedence for %s', (href, search, hash) => { + expect(getLocation(href)).toMatchObject({ search, hash }); + }); + + it.each([ + ['https://example.com/path/#_=_', '/path'], + ['https://example.com/path//#', '/path/'], + ['https://example.com/path/#/route/', '/path#/route/'], + ])( + 'normalizes only the existing trailing slash and sentinel fragments for %s', + (href, path) => { + expect(getPath(href)).toBe(path); + }, + ); + + it.each([ + ['?name=Jane%20Doe&scope=openid%2Bprofile', { name: 'Jane Doe', scope: 'openid+profile' }], + ['?scope=openid+profile', { scope: 'openid+profile' }], + ['?key=first&key=last', { key: 'last' }], + ['?empty=&flag', { empty: '', flag: 'undefined' }], + ['?value=a=b', { value: 'a' }], + ['', { '': 'undefined' }], + ['?outer=value#route?inner=value', { inner: 'value' }], + ['?%E5%90%8D=%E5%80%A4', { 名: '値' }], + ])('preserves query decoding behavior for %s', (suffix, expected) => { + expect(getParseQueryStringFromLocation(`https://example.com/${suffix}`)).toEqual(expected); + }); + + it.each(['?key=%', '?%ZZ=value'])('preserves malformed escape errors for %s', suffix => { + expect(() => getParseQueryStringFromLocation(`https://example.com/${suffix}`)).toThrow( + URIError, + ); + }); + }); + it('wrong uri format', () => { expect(() => getPath('urimybad/toto.com')).toThrowError(); }); diff --git a/packages/oidc-client/src/route-utils.ts b/packages/oidc-client/src/route-utils.ts index 56d9c4bec..64d2a0c44 100644 --- a/packages/oidc-client/src/route-utils.ts +++ b/packages/oidc-client/src/route-utils.ts @@ -22,18 +22,16 @@ export const getLocation = (href: string) => { search = search.slice(1); } - return ( - match && { - href, - protocol: match[1], - host: match[2], - hostname: match[3], - port: match[4], - path: match[5], - search, - hash, - } - ); + return { + href, + protocol: match[1], + host: match[2], + hostname: match[3], + port: match[4], + path: match[5], + search, + hash, + }; }; export const getPath = (href: string) => { @@ -65,17 +63,9 @@ export const getParseQueryStringFromLocation = (href: string) => { const parseQueryString = (queryString: string) => { const params: any = {}; - let temp; - let i; - let l; - - // Split into key/value pairs - const queries = queryString.split('&'); - - // Convert the array of strings into an object - for (i = 0, l = queries.length; i < l; i++) { - temp = queries[i].split('='); - params[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); + for (const query of queryString.split('&')) { + const [key, value] = query.split('='); + params[decodeURIComponent(key)] = decodeURIComponent(value); } return params; diff --git a/packages/react-oidc/src/FetchToken.spec.tsx b/packages/react-oidc/src/FetchToken.spec.tsx new file mode 100644 index 000000000..997805679 --- /dev/null +++ b/packages/react-oidc/src/FetchToken.spec.tsx @@ -0,0 +1,135 @@ +import type { Fetch } from '@axa-fr/oidc-client'; +import { renderHook } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { useOidcFetch } from './FetchToken'; + +const { getOrThrow, fetchWithTokens } = vi.hoisted(() => ({ + getOrThrow: vi.fn(), + fetchWithTokens: vi.fn(), +})); + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { getOrThrow }, +})); + +describe('useOidcFetch', () => { + const originalFetch = vi.fn(); + const authenticatedFetch = vi.fn(); + const response = new Response('response'); + + beforeEach(() => { + vi.resetAllMocks(); + getOrThrow.mockReturnValue({ fetchWithTokens }); + fetchWithTokens.mockReturnValue(authenticatedFetch); + authenticatedFetch.mockResolvedValue(response); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + }); + + it('looks up the default configuration only when a request is made', async () => { + const { result } = renderHook(() => useOidcFetch(originalFetch)); + + expect(getOrThrow).not.toHaveBeenCalled(); + await expect(result.current.fetch('/resource')).resolves.toBe(response); + expect(getOrThrow).toHaveBeenCalledExactlyOnceWith('default'); + expect(fetchWithTokens).toHaveBeenCalledExactlyOnceWith(originalFetch, false); + expect(authenticatedFetch).toHaveBeenCalledExactlyOnceWith('/resource', undefined); + }); + + it('defaults to the browser fetch implementation', async () => { + vi.stubGlobal('fetch', originalFetch); + const { result } = renderHook(() => useOidcFetch()); + + await result.current.fetch('/resource'); + + expect(fetchWithTokens).toHaveBeenCalledExactlyOnceWith(originalFetch, false); + }); + + it.each([new URL('https://example.com/resource'), new Request('https://example.com/resource')])( + 'forwards request objects and options unchanged: %s', + async input => { + const init: RequestInit = { method: 'POST', headers: { 'X-Custom': 'value' }, body: 'body' }; + const { result } = renderHook(() => useOidcFetch(originalFetch, 'custom', true)); + + await expect(result.current.fetch(input, init)).resolves.toBe(response); + + expect(getOrThrow).toHaveBeenCalledWith('custom'); + expect(fetchWithTokens).toHaveBeenCalledWith(originalFetch, true); + expect(authenticatedFetch.mock.calls[0][0]).toBe(input); + expect(authenticatedFetch.mock.calls[0][1]).toBe(init); + }, + ); + + it('uses the current client for each request rather than caching it', async () => { + const nextFetchWithTokens = vi.fn().mockReturnValue(authenticatedFetch); + const { result } = renderHook(() => useOidcFetch(originalFetch)); + await result.current.fetch('/first'); + + getOrThrow.mockReturnValue({ fetchWithTokens: nextFetchWithTokens }); + await result.current.fetch('/second'); + + expect(getOrThrow).toHaveBeenCalledTimes(2); + expect(fetchWithTokens).toHaveBeenCalledTimes(1); + expect(nextFetchWithTokens).toHaveBeenCalledExactlyOnceWith(originalFetch, false); + }); + + it('keeps the callback stable when its dependencies are unchanged', () => { + const { result, rerender } = renderHook(() => useOidcFetch(originalFetch)); + const callback = result.current.fetch; + + rerender(); + + expect(result.current.fetch).toBe(callback); + }); + + it.each([ + { fetch: vi.fn(), configurationName: 'default', isDpop: false }, + { fetch: originalFetch, configurationName: 'custom', isDpop: false }, + { fetch: originalFetch, configurationName: 'default', isDpop: true }, + ])('updates the callback when a dependency changes: %s', async nextProps => { + const { result, rerender } = renderHook( + ({ fetch, configurationName, isDpop }) => useOidcFetch(fetch, configurationName, isDpop), + { initialProps: { fetch: originalFetch, configurationName: 'default', isDpop: false } }, + ); + const callback = result.current.fetch; + + rerender(nextProps); + expect(result.current.fetch).not.toBe(callback); + await result.current.fetch('/resource'); + + expect(getOrThrow).toHaveBeenCalledWith(nextProps.configurationName); + expect(fetchWithTokens).toHaveBeenCalledWith(nextProps.fetch, nextProps.isDpop); + }); + + it('rejects the request rather than throwing synchronously when configuration is missing', async () => { + const error = new Error('Missing configuration'); + getOrThrow.mockImplementation(() => { + throw error; + }); + const { result } = renderHook(() => useOidcFetch(originalFetch)); + + await expect(result.current.fetch('/resource')).rejects.toBe(error); + expect(fetchWithTokens).not.toHaveBeenCalled(); + }); + + it('preserves errors thrown while constructing the authenticated fetch', async () => { + const error = new Error('Cannot construct fetch'); + fetchWithTokens.mockImplementation(() => { + throw error; + }); + const { result } = renderHook(() => useOidcFetch(originalFetch)); + + await expect(result.current.fetch('/resource')).rejects.toBe(error); + }); + + it('preserves rejected fetch errors', async () => { + const error = new Error('Network failure'); + authenticatedFetch.mockRejectedValue(error); + const { result } = renderHook(() => useOidcFetch(originalFetch)); + + await expect(result.current.fetch('/resource')).rejects.toBe(error); + }); +}); diff --git a/packages/react-oidc/src/FetchToken.tsx b/packages/react-oidc/src/FetchToken.tsx index abfb2777f..204f35eac 100644 --- a/packages/react-oidc/src/FetchToken.tsx +++ b/packages/react-oidc/src/FetchToken.tsx @@ -7,18 +7,6 @@ export interface ComponentWithOidcFetchProps { const defaultConfigurationName = 'default'; -const fetchWithToken = - ( - fetch: Fetch, - getOidcWithConfigurationName: () => OidcClient | null, - demonstratingProofOfPossession: boolean = false, - ) => - async (...params: Parameters) => { - const oidc = getOidcWithConfigurationName(); - const newFetch = oidc.fetchWithTokens(fetch, demonstratingProofOfPossession); - return await newFetch(...params); - }; - export const withOidcFetch = ( fetch: Fetch = null, @@ -46,14 +34,13 @@ export const useOidcFetch = ( const getOidc = OidcClient.getOrThrow; const memoizedFetchCallback = useCallback( - (input: RequestInfo | URL, init?: RequestInit) => { - const getOidcWithConfigurationName = () => getOidc(configurationName); - const newFetch = fetchWithToken( + async (input: RequestInfo | URL, init?: RequestInit): Promise => { + const oidc = getOidc(configurationName); + const authenticatedFetch = oidc.fetchWithTokens( previousFetch, - getOidcWithConfigurationName, demonstratingProofOfPossession, ); - return newFetch(input, init); + return await authenticatedFetch(input, init); }, [previousFetch, configurationName, demonstratingProofOfPossession], ); diff --git a/packages/react-oidc/src/OidcSecure.spec.tsx b/packages/react-oidc/src/OidcSecure.spec.tsx new file mode 100644 index 000000000..653c57775 --- /dev/null +++ b/packages/react-oidc/src/OidcSecure.spec.tsx @@ -0,0 +1,84 @@ +import { render, screen } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { OidcSecure, withOidcSecure } from './OidcSecure'; + +const { getOrThrow, loginAsync } = vi.hoisted(() => ({ + getOrThrow: vi.fn(), + loginAsync: vi.fn(), +})); + +vi.mock('@axa-fr/oidc-client', () => ({ OidcClient: { getOrThrow } })); + +describe('OidcSecure', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + it('renders children without logging in when tokens are present', () => { + getOrThrow.mockReturnValue({ tokens: {}, loginAsync }); + + render(Protected content); + + expect(screen.getByText('Protected content')).toBeDefined(); + expect(getOrThrow).toHaveBeenCalledWith('default'); + expect(loginAsync).not.toHaveBeenCalled(); + }); + + it('hides children and starts login with the supplied configuration and arguments', () => { + getOrThrow.mockReturnValue({ tokens: null, loginAsync }); + const extras = { prompt: 'login' }; + + render( + + Protected content + , + ); + + expect(screen.queryByText('Protected content')).toBeNull(); + expect(getOrThrow).toHaveBeenCalledWith('custom'); + expect(loginAsync).toHaveBeenCalledExactlyOnceWith('/private', extras); + }); + + it('does not restart login while logout is in progress', () => { + getOrThrow.mockReturnValue({ tokens: null, isLoggingOut: true, loginAsync }); + + render(Protected content); + + expect(screen.queryByText('Protected content')).toBeNull(); + expect(loginAsync).not.toHaveBeenCalled(); + }); + + it('does not repeat login on an unchanged render', () => { + getOrThrow.mockReturnValue({ tokens: null, loginAsync }); + const { rerender } = render(Protected content); + + rerender(Protected content); + + expect(loginAsync).toHaveBeenCalledExactlyOnceWith(null, null); + }); + + it('preserves the fail-fast behavior for a missing configuration', () => { + const error = new Error('Missing configuration'); + getOrThrow.mockImplementation(() => { + throw error; + }); + + expect(() => render(Protected content)).toThrow(error); + }); + + it('passes props through the higher-order component', () => { + getOrThrow.mockReturnValue({ tokens: {}, loginAsync }); + const Component = withOidcSecure( + ({ children }) => {children}, + '/callback', + null, + 'custom', + ); + + render(Wrapped content); + + expect(screen.getByText('Wrapped content')).toBeDefined(); + expect(getOrThrow).toHaveBeenCalledWith('custom'); + }); +}); diff --git a/packages/react-oidc/src/ReactOidc.spec.tsx b/packages/react-oidc/src/ReactOidc.spec.tsx new file mode 100644 index 000000000..08b9eb876 --- /dev/null +++ b/packages/react-oidc/src/ReactOidc.spec.tsx @@ -0,0 +1,222 @@ +import type { Tokens } from '@axa-fr/oidc-client'; +import { act, renderHook } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { useOidc, useOidcAccessToken, useOidcIdToken } from './ReactOidc'; + +const { get, subscribeEvents, removeEventSubscription, generateProof } = vi.hoisted(() => ({ + get: vi.fn(), + subscribeEvents: vi.fn<(listener: (name: string) => void) => string>(), + removeEventSubscription: vi.fn(), + generateProof: vi.fn(), +})); + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { + get, + eventNames: { + token_renewed: 'token_renewed', + token_acquired: 'token_acquired', + logout_from_another_tab: 'logout_from_another_tab', + logout_from_same_tab: 'logout_from_same_tab', + refreshTokensAsync_error: 'refreshTokensAsync_error', + syncTokensAsync_error: 'syncTokensAsync_error', + }, + }, +})); + +const initialTokens = { + accessToken: 'access-example', + accessTokenPayload: { sub: 'user' }, + idToken: 'id-example', + idTokenPayload: { sub: 'user' }, +}; + +const client = { + tokens: null as Pick< + Tokens, + 'accessToken' | 'accessTokenPayload' | 'idToken' | 'idTokenPayload' + > | null, + configuration: { demonstrating_proof_of_possession: false }, + subscribeEvents, + removeEventSubscription, + generateDemonstrationOfProofOfPossessionAsync: generateProof, + loginAsync: vi.fn(), + logoutAsync: vi.fn(), + renewTokensAsync: vi.fn(), +}; + +beforeEach(() => { + vi.resetAllMocks(); + client.tokens = { ...initialTokens }; + client.configuration.demonstrating_proof_of_possession = false; + get.mockReturnValue(client); + subscribeEvents.mockReturnValue('subscription'); +}); + +describe.each([ + { + name: 'access token', + useToken: useOidcAccessToken, + initial: { + accessToken: initialTokens.accessToken, + accessTokenPayload: initialTokens.accessTokenPayload, + generateDemonstrationOfProofOfPossessionAsync: null, + }, + empty: { accessToken: null, accessTokenPayload: null }, + }, + { + name: 'ID token', + useToken: useOidcIdToken, + initial: { + idToken: initialTokens.idToken, + idTokenPayload: initialTokens.idTokenPayload, + }, + empty: { idToken: null, idTokenPayload: null }, + }, +])('$name hook', ({ useToken, initial, empty }) => { + it('initializes from the configured client', () => { + const { result } = renderHook(() => useToken('custom')); + + expect(result.current).toEqual(initial); + expect(get).toHaveBeenCalledWith('custom'); + }); + + it('uses the empty state when the client has no tokens', () => { + client.tokens = null; + const { result } = renderHook(() => useToken()); + + expect(result.current).toEqual(empty); + }); + + it.each([ + 'token_renewed', + 'token_acquired', + 'logout_from_another_tab', + 'logout_from_same_tab', + 'refreshTokensAsync_error', + 'syncTokensAsync_error', + ])('refreshes token state on %s', eventName => { + const { result } = renderHook(() => useToken()); + const listener = subscribeEvents.mock.calls[0][0]; + + client.tokens = null; + act(() => listener(eventName)); + expect(result.current).toEqual(empty); + + client.tokens = { ...initialTokens }; + act(() => listener(eventName)); + expect(result.current).toEqual(initial); + }); + + it('ignores unrelated events', () => { + const { result } = renderHook(() => useToken()); + client.tokens = null; + + act(() => subscribeEvents.mock.calls[0][0]('unrelated')); + + expect(result.current).toEqual(initial); + }); + + it('cleans up subscriptions on configuration changes and unmount', () => { + subscribeEvents.mockReturnValueOnce('first').mockReturnValueOnce('second'); + const { rerender, unmount } = renderHook(({ name }) => useToken(name), { + initialProps: { name: 'first' }, + }); + + rerender({ name: 'second' }); + expect(removeEventSubscription).toHaveBeenCalledExactlyOnceWith('first'); + expect(subscribeEvents).toHaveBeenCalledTimes(2); + expect(get).toHaveBeenLastCalledWith('second'); + + unmount(); + expect(removeEventSubscription.mock.calls).toEqual([['first'], ['second']]); + }); +}); + +describe('access token proof generation', () => { + it('uses the initial access token when generating a proof', async () => { + client.configuration.demonstrating_proof_of_possession = true; + generateProof.mockResolvedValue('proof'); + const { result } = renderHook(() => useOidcAccessToken()); + + await expect( + result.current.generateDemonstrationOfProofOfPossessionAsync( + 'https://api.example.com', + 'GET', + ), + ).resolves.toBe('proof'); + expect(generateProof).toHaveBeenCalledExactlyOnceWith( + 'access-example', + 'https://api.example.com', + 'GET', + ); + }); + + it('uses refreshed tokens and forwards proof extras after a token event', async () => { + client.configuration.demonstrating_proof_of_possession = true; + const { result } = renderHook(() => useOidcAccessToken()); + client.tokens = { ...initialTokens, accessToken: 'renewed-example' }; + act(() => subscribeEvents.mock.calls[0][0]('token_renewed')); + const extras = { nonce: 'example-nonce' }; + + await result.current.generateDemonstrationOfProofOfPossessionAsync( + 'https://api.example.com', + 'POST', + extras, + ); + + expect(generateProof).toHaveBeenCalledExactlyOnceWith( + 'renewed-example', + 'https://api.example.com', + 'POST', + extras, + ); + }); +}); + +describe('useOidc', () => { + it('tracks authentication on login and logout events', () => { + client.tokens = null; + const { result } = renderHook(() => useOidc('custom')); + const listener = subscribeEvents.mock.calls[0][0]; + expect(result.current.isAuthenticated).toBe(false); + + client.tokens = { ...initialTokens }; + act(() => listener('token_acquired')); + expect(result.current.isAuthenticated).toBe(true); + + client.tokens = null; + act(() => listener('logout_from_same_tab')); + expect(result.current.isAuthenticated).toBe(false); + }); + + it('forwards login and logout arguments and returns their promises', () => { + const loginPromise = Promise.resolve(); + const logoutPromise = Promise.resolve(); + client.loginAsync.mockReturnValue(loginPromise); + client.logoutAsync.mockReturnValue(logoutPromise); + const { result } = renderHook(() => useOidc('custom')); + const extras = { prompt: 'login' }; + + expect(result.current.login('/callback', extras, true, 'openid')).toBe(loginPromise); + expect(client.loginAsync).toHaveBeenCalledExactlyOnceWith( + '/callback', + extras, + false, + 'openid', + true, + ); + expect(result.current.logout('/logout', extras)).toBe(logoutPromise); + expect(client.logoutAsync).toHaveBeenCalledExactlyOnceWith('/logout', extras); + }); + + it('returns renewed token data without adding internal fields', async () => { + client.renewTokensAsync.mockResolvedValue({ ...initialTokens, internal: 'not exposed' }); + const { result } = renderHook(() => useOidc()); + const extras = { scope: 'openid' }; + + await expect(result.current.renewTokens(extras)).resolves.toEqual(initialTokens); + expect(client.renewTokensAsync).toHaveBeenCalledExactlyOnceWith(extras); + }); +}); diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 340b211ac..12a7e0f92 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -9,15 +9,19 @@ type GetOidcFn = { (configurationName?: string): any; }; -const defaultIsAuthenticated = (getOidc: GetOidcFn, configurationName: string) => { - let isAuthenticated = false; +const defaultIsAuthenticated = (getOidc: GetOidcFn, configurationName: string): boolean => { const oidc = getOidc(configurationName); - if (oidc) { - isAuthenticated = oidc.tokens != null; - } - return isAuthenticated; + return oidc ? oidc.tokens != null : false; }; +const isTokenStateEvent = (name: string): boolean => + name === OidcClient.eventNames.token_renewed || + name === OidcClient.eventNames.token_acquired || + name === OidcClient.eventNames.logout_from_another_tab || + name === OidcClient.eventNames.logout_from_same_tab || + name === OidcClient.eventNames.refreshTokensAsync_error || + name === OidcClient.eventNames.syncTokensAsync_error; + export const useOidc = (configurationName = defaultConfigurationName) => { const getOidc = OidcClient.get; const [isAuthenticated, setIsAuthenticated] = useState(() => @@ -149,14 +153,7 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) } const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { - if ( - name === OidcClient.eventNames.token_renewed || - name === OidcClient.eventNames.token_acquired || - name === OidcClient.eventNames.logout_from_another_tab || - name === OidcClient.eventNames.logout_from_same_tab || - name === OidcClient.eventNames.refreshTokensAsync_error || - name === OidcClient.eventNames.syncTokensAsync_error - ) { + if (isTokenStateEvent(name)) { if (isMounted) { const tokens = oidc.tokens; setAccessToken( @@ -215,14 +212,7 @@ export const useOidcIdToken = (configurationName = defaultConfigurationName) => } const newSubscriptionId = oidc.subscribeEvents((name: string, data: any) => { - if ( - name === OidcClient.eventNames.token_renewed || - name === OidcClient.eventNames.token_acquired || - name === OidcClient.eventNames.logout_from_another_tab || - name === OidcClient.eventNames.logout_from_same_tab || - name === OidcClient.eventNames.refreshTokensAsync_error || - name === OidcClient.eventNames.syncTokensAsync_error - ) { + if (isTokenStateEvent(name)) { if (isMounted) { const tokens = oidc.tokens; setIDToken( diff --git a/packages/react-oidc/src/core/default-component/SilentLogin.component.spec.tsx b/packages/react-oidc/src/core/default-component/SilentLogin.component.spec.tsx new file mode 100644 index 000000000..17bb10da8 --- /dev/null +++ b/packages/react-oidc/src/core/default-component/SilentLogin.component.spec.tsx @@ -0,0 +1,71 @@ +import { render } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import SilentLogin from './SilentLogin.component'; + +const { getOrThrow, getParseQueryStringFromLocation, loginAsync } = vi.hoisted(() => ({ + getOrThrow: vi.fn(), + getParseQueryStringFromLocation: vi.fn(), + loginAsync: vi.fn(), +})); + +vi.mock('@axa-fr/oidc-client', () => ({ + OidcClient: { getOrThrow }, + getParseQueryStringFromLocation, +})); + +describe('silent login', () => { + beforeEach(() => { + vi.resetAllMocks(); + getOrThrow.mockReturnValue({ tokens: null, loginAsync }); + }); + + it.each([{}, { state: 'state' }, { state: 'state', scope: 'openid' }])( + 'passes null extras when the query contains only reserved parameters: %s', + query => { + getParseQueryStringFromLocation.mockReturnValue(query); + + render(); + + expect(getOrThrow).toHaveBeenCalledWith('custom'); + expect(loginAsync).toHaveBeenCalledExactlyOnceWith(null, null, true, query.scope); + }, + ); + + it('forwards non-reserved parameters without changing the query data', () => { + const query = Object.freeze({ + state: 'state', + scope: 'openid profile', + prompt: 'none', + login_hint: 'example', + }); + getParseQueryStringFromLocation.mockReturnValue(query); + + render(); + + expect(loginAsync).toHaveBeenCalledExactlyOnceWith( + null, + { prompt: 'none', login_hint: 'example' }, + true, + 'openid profile', + ); + }); + + it('does not start login when already authenticated', () => { + getParseQueryStringFromLocation.mockReturnValue({}); + getOrThrow.mockReturnValue({ tokens: {}, loginAsync }); + + render(); + + expect(loginAsync).not.toHaveBeenCalled(); + }); + + it('only starts silent login on the initial mount', () => { + getParseQueryStringFromLocation.mockReturnValue({ prompt: 'none' }); + const { rerender } = render(); + + rerender(); + + expect(loginAsync).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx index e35ea6387..8baebbd97 100644 --- a/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx +++ b/packages/react-oidc/src/core/default-component/SilentLogin.component.tsx @@ -13,9 +13,7 @@ const SilentLogin: ComponentType = ({ configurationName }) => { if (key === 'state' || key === 'scope') { continue; } - if (extras === null) { - extras = {}; - } + extras ??= {}; extras[key] = value; } diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.behavior.spec.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.behavior.spec.tsx new file mode 100644 index 000000000..22084db43 --- /dev/null +++ b/packages/react-oidc/src/core/routes/OidcRoutes.behavior.spec.tsx @@ -0,0 +1,123 @@ +import { act, render, screen } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import Callback from '../default-component/Callback.component'; +import SilentCallback from '../default-component/SilentCallback.component'; +import SilentLogin from '../default-component/SilentLogin.component'; +import OidcRoutes from './OidcRoutes'; + +vi.mock('../default-component/Callback.component', () => ({ + default: vi.fn(() => Callback), +})); +vi.mock('../default-component/SilentCallback.component', () => ({ + default: vi.fn(() => Silent callback), +})); +vi.mock('../default-component/SilentLogin.component', () => ({ + default: vi.fn(() => Silent login), +})); + +const props = { + configurationName: 'custom', + redirect_uri: new URL('/callback', window.location.href).href, + silent_redirect_uri: new URL('/silent-callback', window.location.href).href, + silent_login_uri: new URL('/silent-login', window.location.href).href, + location: { + getCurrentHref: () => window.location.href, + getPath: () => window.location.pathname, + getOrigin: () => window.location.origin, + open: vi.fn(), + reload: vi.fn(), + }, +}; + +describe('OIDC route selection', () => { + beforeEach(() => { + vi.clearAllMocks(); + window.history.replaceState(null, '', '/'); + }); + + afterEach(() => { + window.history.replaceState(null, '', '/'); + vi.restoreAllMocks(); + }); + + it('renders application content on a non-OIDC route', () => { + render(Application); + + expect(screen.getByText('Application')).toBeDefined(); + expect(Callback).not.toHaveBeenCalled(); + expect(SilentCallback).not.toHaveBeenCalled(); + expect(SilentLogin).not.toHaveBeenCalled(); + }); + + it.each([ + ['/callback?code=example#', 'Callback', Callback], + ['/silent-callback', 'Silent callback', SilentCallback], + ['/silent-login', 'Silent login', SilentLogin], + ])('renders the matching handler for %s', (path, text, handler) => { + window.history.replaceState(null, '', path); + + render(Application); + + expect(screen.getByText(text)).toBeDefined(); + expect(screen.queryByText('Application')).toBeNull(); + expect(vi.mocked(handler).mock.calls[0][0]).toMatchObject({ configurationName: 'custom' }); + }); + + it('gives the silent callback priority when configured paths overlap', () => { + window.history.replaceState(null, '', '/callback'); + + render( + , + ); + + expect(screen.getByText('Silent callback')).toBeDefined(); + expect(Callback).not.toHaveBeenCalled(); + expect(SilentLogin).not.toHaveBeenCalled(); + }); + + it('forwards custom callback components and navigation callbacks unchanged', () => { + window.history.replaceState(null, '', '/callback'); + const success = (): null => null; + const error = (): null => null; + const history = vi.fn(); + const navigate = vi.fn(); + + render( + , + ); + + expect(vi.mocked(Callback).mock.calls[0][0]).toMatchObject({ + callBackSuccess: success, + callBackError: error, + withCustomHistory: history, + navigateAfterCallback: navigate, + }); + }); + + it('updates the route on popstate and removes its listener on unmount', () => { + const addEventListener = vi.spyOn(window, 'addEventListener'); + const removeEventListener = vi.spyOn(window, 'removeEventListener'); + const { unmount } = render(Application); + const listener = addEventListener.mock.calls.find(([name]) => name === 'popstate')[1]; + + act(() => { + window.history.replaceState(null, '', '/silent-login'); + window.dispatchEvent(new PopStateEvent('popstate')); + }); + expect(screen.getByText('Silent login')).toBeDefined(); + + unmount(); + expect(removeEventListener).toHaveBeenCalledWith('popstate', listener, false); + }); +}); diff --git a/packages/react-oidc/src/core/routes/OidcRoutes.tsx b/packages/react-oidc/src/core/routes/OidcRoutes.tsx index 1fad9bf2d..9bb20d185 100644 --- a/packages/react-oidc/src/core/routes/OidcRoutes.tsx +++ b/packages/react-oidc/src/core/routes/OidcRoutes.tsx @@ -44,32 +44,26 @@ const OidcRoutes: FC> = ({ const callbackPath = getPath(redirect_uri); - if (silent_redirect_uri) { - if (path === getPath(silent_redirect_uri)) { - return ; - } + if (silent_redirect_uri && path === getPath(silent_redirect_uri)) { + return ; } - if (silent_login_uri) { - if (path === getPath(silent_login_uri)) { - return ; - } + if (silent_login_uri && path === getPath(silent_login_uri)) { + return ; } - switch (path) { - case callbackPath: - return ( - - ); - default: - return <>{children}; + if (path === callbackPath) { + return ( + + ); } + return <>{children}; }; export default React.memo(OidcRoutes); From 9c9fefb1080a8b059a3b67f7f8030e2b0e2a018d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Sep 2026 13:42:06 +0000 Subject: [PATCH 561/565] [skip ci] Update to version 7.29.5 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 392686626..6a68d6828 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.4", + "version": "7.29.5", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index a67348f72..7bbb64ccb 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.4'; +export default '7.29.5'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 790584174..80d5b1c30 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.4", + "version": "7.29.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index a67348f72..7bbb64ccb 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.4'; +export default '7.29.5'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 9fdcc50ed..00818a668 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.4", + "version": "7.29.5", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 722e93f4ba24a81149d5e08d324eb47381c233bf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Sep 2026 13:42:08 +0000 Subject: [PATCH 562/565] [skip ci] Generate changelog to version 7.29.5 --- CHANGELOG.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f985b36f7..32016a724 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ # Changelog +## v7.29.5 + +- [9c9fefb1](https://github.com/AxaFrance/oidc-client/commit/9c9fefb1080a8b059a3b67f7f8030e2b0e2a018d) - [skip ci] Update to version 7.29.5 in package.json, 2026-09-19 by *github-actions[bot]* +- [0a9dcf84](https://github.com/AxaFrance/oidc-client/commit/0a9dcf847eba12f63e97a9fd471d2cc2db9ade4b) - refactor: Add package regression tests and streamline token parsing and fetch hooks (#1732) (release), 2026-09-19 by *Copilot* + + ## v7.29.4 +- [29ae343c](https://github.com/AxaFrance/oidc-client/commit/29ae343c169003b0b515cb106c6df9b6527ac357) - [skip ci] Generate changelog to version 7.29.4, 2026-09-19 by *github-actions[bot]* - [58ff7b53](https://github.com/AxaFrance/oidc-client/commit/58ff7b539e340b315dda2a30ee884cdd2e07a9c0) - [skip ci] Update to version 7.29.4 in package.json, 2026-09-19 by *github-actions[bot]* - [95ab5aa4](https://github.com/AxaFrance/oidc-client/commit/95ab5aa41904bf837c97c2c876e0d26892b2c3e2) - Clarify package documentation and replace architecture images with Mermaid (#1730) (release), 2026-09-19 by *Copilot* @@ -328,8 +335,3 @@ - [2c083735](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* -## v7.24.1 - -- [3fe05117](https://github.com/AxaFrance/oidc-client/commit/3fe05117c29704f9be56604eb9ffa7195bcdc517) - refactor(react-oidc): react 19 compatibility (#1493) (release), 2025-01-10 by *Guillaume Chervet* - - From 7463acfc45589823a47fad470ad07839ef1f1684 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 20 Sep 2026 10:06:58 +0200 Subject: [PATCH 563/565] Rework FAQ with verified troubleshooting guidance and Mermaid diagrams (release) (#1734) * Initial plan * Rewrite FAQ with verified user guidance and Mermaid diagrams Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * Clarify service-worker-only fallback limitation in FAQ Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> * Add concise English-language agent guidance Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: guillaume-chervet <52236059+guillaume-chervet@users.noreply.github.com> --- AGENTS.md | 10 ++ FAQ.md | 516 +++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 369 insertions(+), 157 deletions(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..0c57ba501 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,10 @@ +# Agent instructions + +- Always write code, comments, documentation, and responses in English. +- Keep changes focused and follow the existing TypeScript and pnpm conventions. +- Always keep the root and relevant package `README.md` files and `FAQ.md` up to + date when changing behavior, configuration, APIs, or setup instructions. + Document only verified behavior and clearly state limitations. +- Add or update tests for behavior changes. +- Before submitting, run `pnpm lint-fix`, `pnpm lint`, and `pnpm test:ci`. + Run `pnpm build` when changing code or build configuration. diff --git a/FAQ.md b/FAQ.md index 5b871fa28..f046c6c75 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,200 +1,402 @@ -# FAQ (Frequently Asked Questions) - -## Why is the Bearer token not injected when `allowMultiTabLogin: true`? - -When `allowMultiTabLogin: true` is set in `OidcTrustedDomains.js`, each browser tab stores its own access token in the service worker, keyed by a unique tab identifier (e.g. `default#tabId=8d903cd1-...`). - -The service worker identifies which tab's token to inject by reading a tab-specific placeholder value from the incoming request's `Authorization` header. This placeholder is automatically set by the **OIDC fetch** wrapper (`useOidcFetch` / `withOidcFetch` in React, or `oidcClient.fetchWithTokens(fetch)` in vanilla JS). - -If you use a plain `fetch` call or a library like **axios** without configuring it to use the OIDC fetch, requests will arrive at the service worker with no `Authorization` header. The service worker has no way to determine which tab's token to use, so no token is injected and your API calls return 401 errors. - -**Solution**: always use the OIDC fetch wrapper for API requests when `allowMultiTabLogin: true`. - -### React example +# Frequently asked questions + +Start with the [React guide](./packages/react-oidc/README.md) or +[vanilla JavaScript guide](./packages/oidc-client/README.md) for installation. +These answers describe the current source; check the documentation for your +installed version when an option is unavailable. Linked issues provide context, +not guarantees that every reported problem is resolved. + +## Contents + +- [Do I need a service worker?](#do-i-need-a-service-worker) +- [Why is my access token a placeholder?](#why-is-my-access-token-a-placeholder) +- [Why does my API return 401, especially with multiple tabs?](#why-does-my-api-return-401-especially-with-multiple-tabs) +- [Why does login fail when two tabs sign in together?](#why-does-login-fail-when-two-tabs-sign-in-together) +- [How are tokens renewed?](#how-are-tokens-renewed) +- [Why are tokens renewed every few seconds?](#why-are-tokens-renewed-every-few-seconds) +- [Why does silent sign-in fail in some browsers?](#why-does-silent-sign-in-fail-in-some-browsers) +- [Will I stay signed in after sleep or a browser restart?](#will-i-stay-signed-in-after-sleep-or-a-browser-restart) +- [Does logout sign me out of every application?](#does-logout-sign-me-out-of-every-application) +- [What does session monitoring require?](#what-does-session-monitoring-require) +- [Why is the worker unavailable or outdated?](#why-is-the-worker-unavailable-or-outdated) +- [Can I use an existing PWA worker or a mobile WebView?](#can-i-use-an-existing-pwa-worker-or-a-mobile-webview) +- [Why is window.crypto.subtle unavailable?](#why-is-windowcryptosubtle-unavailable) +- [How do I use multiple identity providers?](#how-do-i-use-multiple-identity-providers) +- [Should I use this client or a Backend for Frontend?](#should-i-use-this-client-or-a-backend-for-frontend) +- [Does the service worker protect me from XSS?](#does-the-service-worker-protect-me-from-xss) +- [What should I include in a bug report?](#what-should-i-include-in-a-bug-report) + +## Do I need a service worker? + +No. Omit `service_worker_relative_url` and leave `service_worker_only: false` +(the default) to use browser storage: ```javascript -import { useOidcFetch } from '@axa-fr/react-oidc'; - -const MyComponent = () => { - const { fetch } = useOidcFetch(); - - const callApi = async () => { - const res = await fetch('https://my-api.example.com/data'); - return res.json(); - }; - // ... +const configuration = { + client_id: 'your-public-client', + authority: 'https://issuer.example.com', + redirect_uri: `${window.location.origin}/authentication/callback`, + scope: 'openid profile', + service_worker_only: false, }; ``` -### Vanilla JS example +Without a worker, token storage defaults to `sessionStorage`. You can choose +`localStorage`, but both are readable by same-origin JavaScript. -```javascript -const oidcFetch = oidcClient.fetchWithTokens(fetch); -const res = await oidcFetch('https://my-api.example.com/data'); -``` - -### Using axios - -Axios can be configured to use a custom fetch adapter or you can wrap axios calls to use the OIDC fetch instead: - -```javascript -import { useOidcFetch } from '@axa-fr/react-oidc'; - -const MyComponent = () => { - const { fetch } = useOidcFetch(); - - const callApi = async () => { - // Use the OIDC fetch directly instead of axios when allowMultiTabLogin is true - const res = await fetch('https://my-api.example.com/data', { - method: 'GET', - headers: { 'Content-Type': 'application/json' }, - }); - return res.json(); - }; - // ... -}; -``` +Worker mode keeps access and refresh tokens in worker memory by default. +Follow the [worker setup guide](./packages/oidc-client-service-worker/README.md#getting-started); +installing the package alone does not serve or configure the worker files. -## Condition to make silent signing work +In React, `service_worker_only: true` makes the provider show its unsupported-worker +screen when it receives the worker-unavailable event. **This is not a core-client +guarantee against browser-storage fallback:** the vanilla client can still use +browser storage when worker initialization returns no worker. If token isolation +is mandatory, do not rely on this flag alone; verify worker availability and +prevent authentication from proceeding without it in your integration. -Third-party cookies are blocked by default on Safari and will be blocked on all browsers soon. -Today, silent signing works on Safari only if the OIDC provider and the client application are on the same domain. +When testing a switch away from worker mode, unregister the application's old +OIDC worker in browser developer tools and reload the page. Removing the +configuration does not unregister an already installed worker. -To guarantee that silent signing functions on all browsers, place your OIDC provider on the same domain as your client application. +## Why is my access token a placeholder? -Example domains that work: +In worker mode, values such as `ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER_...` +are expected when access-token hiding is enabled. The worker holds the real +token and replaces the placeholder on matching trusted requests. Refresh tokens +are also hidden; the ID token and decoded claims can still be available to +application code. -https://oidc-provider.axa.fr -https://my-app.axa.fr +Use `useOidcFetch()` in React or `oidcClient.fetchWithTokens(fetch)` in vanilla +JavaScript rather than trying to decode or send the placeholder yourself. +`showAccessToken: true` in the matching `OidcTrustedDomains.js` entry exposes +the access token to application JavaScript; use it only if your integration +requires that trade-off. It does not expose the refresh token. -Silent signing uses cookies from your OIDC provider to restore the session and retrieve tokens. -It opens an IFrame in the background, directed to a specific page on your OIDC provider. +Developer tools can show the application request and the worker's outgoing +request. Inspect which request actually failed: duplicate-looking entries do +not by themselves prove a bug, but a failed token exchange is not something to +ignore. See [#1703](https://github.com/AxaFrance/oidc-client/issues/1703). -## Condition to make Single Logout to work +## Why does my API return 401, especially with multiple tabs? -The same domain constraint for "silent signing" applies to Single Logout. +Check these separately: -Single Logout allows you to disconnect from multiple OIDC Client sessions in one action, even if you are connected to different applications. +1. Wait for authentication before calling a protected API. +2. Use the OIDC fetch wrapper and select the correct configuration name. +3. In worker mode, check that the worker controls the page and that the API URL + matches `accessTokenDomains` for that configuration in `OidcTrustedDomains.js`. + Follow the [trusted-domain rules](./packages/oidc-client-service-worker/README.md#trusted-domains); + do not broaden the allowlist to arbitrary destinations. +4. Check the API's expected issuer, audience, and scopes. Attaching a token does + not guarantee that the API will accept it. -## Condition to make Monitor Session to work +With `allowMultiTabLogin: true` in `OidcTrustedDomains.js`, the worker uses the +tab-specific placeholder in the `Authorization` header to select the session. +A plain `fetch` or default Axios call without that marker cannot select the +tab's token. -Same domain constraint for "silent signing" applies to "monitorSession". +In a React component beneath the matching `OidcProvider`, obtain the wrapper +with `useOidcFetch` imported from `@axa-fr/react-oidc`: -Monitor session notifies you when your session expires or when you are disconnected from your OIDC provider. +```javascript +const { fetch: oidcFetch } = useOidcFetch(); +``` -## Does Service Worker is mandatory ? +For an initialized vanilla client: -Service Worker can be disable. -You can use classic mode without Service Worker. +```javascript +const oidcFetch = oidcClient.fetchWithTokens(fetch); +``` -Just comment "service_worker_relative_url" like bellow: +Then use it after authentication: ```javascript -export const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/#/authentication/callback', - silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - // service_worker_relative_url: '/OidcServiceWorker.js', - service_worker_only: false, -}; +const response = await oidcFetch('https://api.example.com/data'); +if (!response.ok) { + throw new Error(`API request failed with status ${response.status}`); +} +const data = await response.json(); ``` -If your Service Worker file is already registered on your browser, your need to unregister it. For example from chrome dev tool. +React also provides `withOidcFetch`. For Axios, use an integration that actually +routes requests through the OIDC fetch wrapper, or use the wrapper directly; +changing libraries alone does not supply the tab marker. Only call trusted URLs +with the wrapper: it is not itself a destination allowlist. -## Two tabs race condition during login with localStorage +## Why does login fail when two tabs sign in together? -When `storage: localStorage` is used without a service worker and two tabs initiate the login flow at the same time, they write the authorization state (`state`, `code_verifier`, `nonce`, login params) to the same `localStorage` keys. Each tab can overwrite the other's values, causing the callback in one tab to fail with a state mismatch error. +Without a worker, `storage: localStorage` shares authorization state, the PKCE +verifier, and nonce between tabs using the same configuration. Concurrent login +flows can overwrite one another and cause state-validation failures. -The recommended fix is to use the `login_state_storage` option to store authorization flow state in `sessionStorage` (which is isolated per tab) while keeping tokens in `localStorage` so they persist across tabs: +If you deliberately want shared token storage, merge these options into your +configuration to keep authorization-flow state isolated per tab: ```javascript -export const configuration = { - client_id: 'interactive.public.short', - redirect_uri: window.location.origin + '/authentication/callback', - scope: 'openid profile email api offline_access', - authority: 'https://demo.duendesoftware.com', - service_worker_only: false, - storage: localStorage, // tokens persist across tabs - login_state_storage: sessionStorage, // authorization state is isolated per tab +const storageOptions = { + storage: localStorage, + login_state_storage: sessionStorage, }; ``` -This option has no effect when using a service worker, which already handles multi-tab isolation internally. - -## Tokens are always refreshed in background every seconds - -The @axa-fr/oidc-client automatically refreshes tokens in the background. -It refreshes tokens before expiration to maintain valid tokens at all times. - -If your token session lifetime is too short, frequent refreshes will occur. -Token refreshing starts 120 seconds before expiration. - -Setting a session validity longer than 3 minutes is advisable. - -By default, @axa-fr/oidc-client chooses the shorter lifetime between access_token and id_token. -Use the "token_renew_mode" option to change this behavior. - -- **token_renew_mode**: String, // Optional, update tokens based on the selected token(s) lifetime: "access_token_or_id_token_invalid" (default), "access_token_invalid", "id_token_invalid" +This changes browser-storage behavior, not worker storage. For independent +worker-mode logins, configure `allowMultiTabLogin: true` and use the OIDC fetch +wrapper as described above. -## window.crypto.subtle is unavailable over HTTP +Do not disable state or nonce validation to work around a callback failure. +For other causes, see the [errors guide](./packages/oidc-client/README.md#errors-and-events). -The library doesn't work over HTTP. Use HTTPS. -Setting up HTTPS is relatively easy, even for local development. +## How are tokens renewed? -https://github.com/AxaFrance/react-oidc/issues/1028 +By default, the client schedules renewal before expiry. Normal renewal uses a +refresh token when one is available; otherwise it attempts the configured +iframe-based silent-login flow. -## Why OIDC at Client side instead of BFF (Backend for Frontend) ? - -We recommend @axa-fr/oidc-client for these reasons: - -Secure by default: Uses Service Worker. Server-side OIDC can be insecure if poorly configured. Client-side reuses server-side configurations, usually set by experts. -Fine-grained scope control: Easier to tailor token scope and lifetime for specific scenarios when using client-side OIDC. -No server needed: Client-side OIDC eliminates the need for a separate authentication server, saving money. -Quick time-to-market: Start with client-side OIDC, migrate to server-side if needed. Both are compatible. - -

- @axa-fr/oidc-client is one of the securest way to Authenticate. -
- @axa-fr/oidc-client is one of the securest way to Authenticate. -

- -

- Service Worker lifetime drawback. -
- Service Worker lifetime drawback. -

- -

- @axa-fr/oidc-client is the simplest and cheapest. -
- @axa-fr/oidc-client is the simplest and cheapest. -

- -## Good Security Practices : does a Hacker can unregister the Service Worker and retrieve tokens via an Iframe ? +```mermaid +flowchart TD + Due["Tokens need renewal"] --> Refresh{"Refresh token available?"} + Refresh -->|Yes| Endpoint["Request tokens from the token endpoint"] + Refresh -->|No| Silent["Attempt configured silent sign-in"] + Endpoint --> Result{"Renewal succeeds?"} + Silent --> Result + Result -->|Yes| Continue["Continue with renewed tokens"] + Result -->|No| Recovery["Handle the error; interactive sign-in may be needed"] +``` -To block token retrieval via an Iframe call and prevent Service Worker unregistration, comply with these practices: +Your provider controls whether it issues refresh tokens, their lifetime, and +rotation policy. Some providers require `offline_access` and additional client +settings or consent; adding that scope alone is not a guarantee. + +Silent login requires separate silent-login/callback routes and a usable +provider session. See the [silent-login setup](./packages/oidc-client/README.md#silent-login). +The React provider handles these routes; vanilla applications must implement them. + +For renewal only when a protected request needs it, use +`TokenAutomaticRenewMode.AutomaticOnlyWhenFetchExecuted` with the OIDC fetch +wrapper or `getValidTokenAsync()`. See [token renewal](./packages/oidc-client/README.md#token-renewal). +This is not a user-inactivity detector. If you need an idle logout, implement +activity tracking in your application and enforce appropriate session limits +at the provider/server. + +Related questions: [#1368](https://github.com/AxaFrance/oidc-client/issues/1368) +and [#1070](https://github.com/AxaFrance/oidc-client/issues/1070). + +## Why are tokens renewed every few seconds? + +Compare your token lifetimes with `refresh_time_before_tokens_expiration_in_second`. +Its default is 120 seconds, with a random reduction of up to 39 seconds when +the configured value exceeds 60. A token whose lifetime is near or below the +renewal margin can trigger frequent renewal. + +The default `token_renew_mode`, `'access_token_or_id_token_invalid'`, uses the +earlier access-token or ID-token expiry. Check both lifetimes, not just the +access token. The other modes are `'access_token_invalid'` and +`'id_token_invalid'`; choose one only if it matches your application's needs. + +Adjust the renewal margin or provider-issued lifetimes together. No client-side +setting can extend a token's server-defined validity or guarantee timely +background execution. + +## Why does silent sign-in fail in some browsers? + +Silent sign-in loads the provider in a hidden iframe with `prompt=none`. It +depends on an existing provider session, cookies being available in that iframe, +and the provider allowing the flow and framing. + +Browser privacy settings and third-party-cookie restrictions can prevent this. +Hosting the application and provider on the same site can help with cookie +restrictions, but **does not guarantee success**. For example, +`https://app.example.com` and `https://login.example.com` are different origins, +even though they are normally same-site. + +Check the registered `silent_redirect_uri`, the iframe's network errors, +provider cookie settings, and CSP/frame restrictions. A provider response such +as `login_required` or `consent_required` may require interactive sign-in. +Refresh-token renewal does not use this iframe flow, although refresh tokens +can still expire or be revoked. + +## Will I stay signed in after sleep or a browser restart? + +Not necessarily. Browsers can suspend timers and terminate service workers; +worker tokens are held in memory, not durable token storage. Provider session +cookies may outlive the worker. If its tokens are lost, signing in again depends +on an available sign-in flow; silent sign-in also needs a usable provider session. + +```mermaid +flowchart TD + Session["Authenticated browser application"] --> Pause["Sleep, suspension, or browser restart"] + Pause --> Resume["Application resumes or starts"] + Resume --> Restore{"Existing session can be restored?"} + Restore -->|Yes| Use["Use or renew available tokens"] + Restore -->|No| SignIn["Sign in again"] +``` -1 - Correctly configure the CSP (Content Security Policy) on the server side. -Example: +Network reconnection, token expiry, and cookie restrictions can all affect +recovery. Worker keep-alive requests are not a persistence guarantee. +With browser storage, `localStorage` can persist across browser sessions, but +that neither extends token validity nor makes tokens inaccessible to JavaScript. + +Handle session loss with a clear sign-in action rather than an endless retry +loop. React offers `sessionLostComponent` and `onSessionLost`; vanilla clients +can subscribe to [client events](./packages/oidc-client/README.md#errors-and-events). +See [#1147](https://github.com/AxaFrance/oidc-client/issues/1147) for sleep/renewal +reports and [#1662](https://github.com/AxaFrance/oidc-client/issues/1662) for a +persistence proposal, not an implemented persistence option. + +## Does logout sign me out of every application? + +Not automatically. These are distinct operations: + +- **Local session clearing:** `clearSessionAsync()` removes this client's local + session without provider logout or token revocation. +- **Standard logout:** `logoutAsync()` (or React's `logout()`) attempts configured + token revocation when the provider exposes a revocation endpoint, uses its + end-session endpoint when available, and clears the local session. Register + the intended post-logout URL with the provider. +- **Single logout across applications:** propagation depends on the provider, + its logout/session protocols, and the other applications. Ending one local + session is not proof that every application or API token is now signed out. + +Check discovery metadata, provider logout requirements, and failed revocation +requests. Do not assume that serving all applications on one domain enables +single logout. See [#820](https://github.com/AxaFrance/oidc-client/issues/820) +for an example of provider-specific logout configuration. + +## What does session monitoring require? + +`monitor_session` defaults to `false`. When enabled, it needs the provider's +`check_session_iframe`, a `session_state`, and configured silent-login routes. +It checks for changes to the provider session; it is not a general token-expiry +or user-idle timer. + +This iframe-based mechanism is also subject to browser cookie/privacy policies +and provider support. It cannot guarantee immediate logout detection across +applications. Keep API authorization and session-expiry enforcement on the server. + +## Why is the worker unavailable or outdated? + +Check the deployment before changing authentication logic: + +1. Serve `OidcServiceWorker.js` and `OidcTrustedDomains.js` from your application's + origin as JavaScript, not the SPA HTML fallback. +2. Confirm that `service_worker_relative_url` points to the deployed file and + that its scope covers the application and callback pages. +3. Run the package's worker-copy command after upgrades. It replaces + `OidcServiceWorker.js` but preserves an existing `OidcTrustedDomains.js`; + maintain your trusted-domain entries yourself. +4. In browser developer tools, inspect the active registration and which worker + controls the tab. Already-open tabs and cached assets can complicate updates. +5. Check secure-context support and registration errors. Review the + [`service_worker_only` limitation](#do-i-need-a-service-worker) before relying + on that flag to prevent browser-storage fallback. + +For an application under a subpath, account for the worker URL and allowed +scope. `service_worker_register` allows custom registration, but does not bypass +browser scope restrictions. See the [deployment guide](./packages/oidc-client-service-worker/README.md#deployment-and-troubleshooting), +[#1181](https://github.com/AxaFrance/oidc-client/issues/1181) (scope), and +[#1648](https://github.com/AxaFrance/oidc-client/issues/1648) (updates). + +## Can I use an existing PWA worker or a mobile WebView? + +Do not assume either works without integration testing. + +A page has one controlling service worker at a time. An existing PWA worker and +the OIDC worker need a deliberate registration, scope, and fetch/message-handling +design. Custom registration is available, but blindly combining worker scripts +can cause conflicts. [#914](https://github.com/AxaFrance/oidc-client/issues/914) +discusses integration approaches, not a universal supported recipe. + +WebView capabilities and restrictions vary by platform and host application. +`service_worker_activate` can change the library's activation decision, but +cannot add missing browser APIs. Decide whether browser-storage fallback is +acceptable, then test login, API calls, renewal, and logout in your actual +environment. See [#1389](https://github.com/AxaFrance/oidc-client/issues/1389). + +## Why is window.crypto.subtle unavailable? + +The Web Crypto `crypto.subtle` API and service workers require a secure context. Use HTTPS in +production. Browsers generally treat `http://localhost` as trustworthy for local +development; an HTTP LAN IP address or remote hostname is not the same exception. +Check `window.isSecureContext` and the APIs available in your browser or WebView. +Do not disable PKCE or substitute insecure cryptography. + +Related report: [#1028](https://github.com/AxaFrance/oidc-client/issues/1028). + +## How do I use multiple identity providers? + +Use distinct configuration names rather than swapping settings under the same +name. Give each configuration its own callback URLs and, in worker mode, a +matching entry in `OidcTrustedDomains.js`. + +In React, pass `configurationName` consistently to the provider and protected +components, and select the name in hooks: -```bash -server: { - headers: { - "Content-Security-Policy": "script-src 'self';", - }, - } +```javascript +const { login, isAuthenticated } = useOidc('payments'); +const { fetch: paymentsFetch } = useOidcFetch(undefined, 'payments'); ``` -This blocks dynamic script injection into an iframe. +Nesting providers does not change the hooks' default configuration name. +Follow the [named-configuration examples](./packages/react-oidc/README.md#named-configurations). +Related questions: [#1590](https://github.com/AxaFrance/oidc-client/issues/1590) +and [#1283](https://github.com/AxaFrance/oidc-client/issues/1283). + +## Should I use this client or a Backend for Frontend? + +Choose based on your architecture and threat model, not a claim that either is +always safer, cheaper, or simpler. + +```mermaid +flowchart LR + subgraph ClientSide["Browser client with worker token hiding"] + App["Application JavaScript"] -->|"Token placeholders"| Worker["Service worker"] + Worker <-->|"Token exchange"| ProviderA["OIDC provider"] + Worker -->|"Access token"| APIA["API"] + end + subgraph ServerSide["Backend for Frontend"] + Browser["Browser"] -->|"Session cookie"| BFF["BFF server"] + BFF <-->|"Token exchange"| ProviderB["OIDC provider"] + BFF -->|"Access token"| APIB["API"] + end +``` -2 - Initialize `` for **React** or the redirect callback for **oidc-client** at the start of your application script. -Configure it before making any fetch calls to services. -This guards against XSS attacks. +This browser client can be used with a statically hosted application, without +adding a dedicated authentication backend. You still need an identity provider, +protected APIs, and appropriate CORS configuration. With worker token hiding +enabled, access and refresh tokens remain in the browser's worker context; +without the worker, they are accessible to application JavaScript. + +A BFF keeps OAuth tokens on the server and typically gives the browser a +session cookie. It requires backend hosting, session management, secure cookie +configuration, and CSRF defenses. XSS can still cause authenticated actions in +either architecture. This library does not implement a BFF or server-side access +control. + +## Does the service worker protect me from XSS? + +It reduces direct access to hidden tokens, but **does not prevent XSS or CSRF**. +Malicious code running in your application can still make authenticated +requests. Initializing `OidcProvider` early is not an XSS defense, and a CSP +such as `script-src 'self'` does not guarantee that worker unregistration or +iframe-based attacks are impossible. + +Use a restrictive CSP suited to your deployment, safe rendering and input +handling, reviewed dependencies, and narrowly scoped trusted destinations. +Never embed a client secret in browser code. Do not render or log tokens. +Your APIs must validate tokens and enforce authorization independently of +client-side route guards. + +## What should I include in a bug report? + +Include the package versions, browser/OS (and WebView host if applicable), +whether a worker is enabled, relevant configuration names, sanitized +configuration, reproduction steps, and expected versus actual behavior. +For worker problems, include registration/scope information and whether the +problem reproduces after a fresh registration in a test environment. + +Use React's `onEvent` or the vanilla client's `subscribeEvents` to identify the +failing phase. Record safe error codes and HTTP statuses, not complete event +payloads. Remove tokens, authorization headers, cookies, authorization codes, +PKCE verifiers, and personal data from screenshots, logs, or network exports +before posting an [issue](https://github.com/AxaFrance/oidc-client/issues). From 59afc43a04579293811563a9ebebb363357e0521 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Sep 2026 08:17:47 +0000 Subject: [PATCH 564/565] [skip ci] Update to version 7.29.6 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index 6a68d6828..264895178 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.29.5", + "version": "7.29.6", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index 7bbb64ccb..bcc50f8bf 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.29.5'; +export default '7.29.6'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 80d5b1c30..1143b81aa 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.29.5", + "version": "7.29.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index 7bbb64ccb..bcc50f8bf 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.29.5'; +export default '7.29.6'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index 00818a668..3e2abb445 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.29.5", + "version": "7.29.6", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From 67915c5db31c7e6048aef5cd1336e7a7adb2991a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Sep 2026 08:17:49 +0000 Subject: [PATCH 565/565] [skip ci] Generate changelog to version 7.29.6 --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32016a724..4bc6dcfd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ # Changelog +## v7.29.6 + +- [59afc43a](https://github.com/AxaFrance/oidc-client/commit/59afc43a04579293811563a9ebebb363357e0521) - [skip ci] Update to version 7.29.6 in package.json, 2026-09-20 by *github-actions[bot]* +- [7463acfc](https://github.com/AxaFrance/oidc-client/commit/7463acfc45589823a47fad470ad07839ef1f1684) - Rework FAQ with verified troubleshooting guidance and Mermaid diagrams (release) (#1734), 2026-09-20 by *Copilot* + + ## v7.29.5 +- [722e93f4](https://github.com/AxaFrance/oidc-client/commit/722e93f4ba24a81149d5e08d324eb47381c233bf) - [skip ci] Generate changelog to version 7.29.5, 2026-09-19 by *github-actions[bot]* - [9c9fefb1](https://github.com/AxaFrance/oidc-client/commit/9c9fefb1080a8b059a3b67f7f8030e2b0e2a018d) - [skip ci] Update to version 7.29.5 in package.json, 2026-09-19 by *github-actions[bot]* - [0a9dcf84](https://github.com/AxaFrance/oidc-client/commit/0a9dcf847eba12f63e97a9fd471d2cc2db9ade4b) - refactor: Add package regression tests and streamline token parsing and fetch hooks (#1732) (release), 2026-09-19 by *Copilot* @@ -329,9 +336,3 @@ - [f0641a6f](https://github.com/AxaFrance/oidc-client/commit/f0641a6ff21a7cf600ee5e782a3e3114b462551c) - fix(oidc): remove use of localStorage for cache (release), 2025-02-05 by *Guillaume Chervet* -## v7.25.0 - -- [07754f56](https://github.com/AxaFrance/oidc-client/commit/07754f5643cbe21e6e6eb248b8a6398bd0de2fd7) - fix(oidc): refresh silent signin scope=null (release) (#1503), 2025-01-24 by *Guillaume Chervet* -- [2c083735](https://github.com/AxaFrance/oidc-client/commit/2c0837357b341eeeabbe16b40857240e7d2a596b) - feat(all): update libraries (#1494), 2025-01-12 by *Guillaume Chervet* - -