From 68ef67199a4dc727e704c3c40c437c9494a51a5a Mon Sep 17 00:00:00 2001 From: Nicolas Macian <40004186+nmacianx@users.noreply.github.com> Date: Thu, 19 Sep 2024 13:47:55 +0300 Subject: [PATCH] chore: SSO Apps portal widget RELEASE (#780) ## Related Issues Related to https://github.com/descope/etc/issues/7215 --------- Co-authored-by: Nir Gur Arie Co-authored-by: nirgur --- .../src/AppsListDriver.ts | 21 + .../sdk-component-drivers/src/BaseDriver.ts | 3 +- .../libs/sdk-component-drivers/src/index.ts | 1 + .../applications-portal-widget/.eslintrc.json | 87 + .../applications-portal-widget/LICENSE | 21 + .../applications-portal-widget/README.md | 100 ++ .../e2e/applications-portal-widget.spec.ts | 81 + .../applications-portal-widget/jest.config.js | 42 + .../applications-portal-widget/package.json | 97 ++ .../playwright.config.ts | 101 ++ .../applications-portal-widget/project.json | 29 + .../rollup.config.app.mjs | 49 + .../rollup.config.app.serve.mjs | 8 + .../rollup.config.mjs | 96 ++ .../src/app/index.html | 97 ++ .../src/lib/index.ts | 10 + .../src/lib/widget/api/apiPaths.ts | 5 + .../lib/widget/api/sdk/createSsoAppsSdk.ts | 27 + .../src/lib/widget/api/sdk/helpers.ts | 14 + .../src/lib/widget/api/sdk/index.ts | 26 + .../src/lib/widget/api/sdk/mocks.ts | 45 + .../src/lib/widget/api/types.ts | 22 + .../src/lib/widget/index.ts | 7 + .../src/lib/widget/mixins/apiMixin.ts | 58 + .../widget/mixins/fetchWidgetPagesMixin.ts | 31 + .../src/lib/widget/mixins/initMixin/index.ts | 1 + .../initComponentsMixins/initAppsListMixin.ts | 30 + .../initWidgetRootMixin.ts | 55 + .../lib/widget/mixins/initMixin/initMixin.ts | 17 + .../lib/widget/mixins/stateManagementMixin.ts | 43 + .../lib/widget/state/asyncActions/helpers.ts | 86 + .../lib/widget/state/asyncActions/index.ts | 1 + .../widget/state/asyncActions/loadSSOApps.ts | 23 + .../src/lib/widget/state/initialState.ts | 9 + .../src/lib/widget/state/selectors.ts | 18 + .../src/lib/widget/state/types.ts | 23 + .../test/application-portal-widget.test.ts | 104 ++ .../test/mocks/mockSsoApps.ts | 34 + .../test/mocks/mockTheme.ts | 53 + .../test/mocks/rootMock.ts | 5 + .../applications-portal-widget/tsconfig.json | 22 + pnpm-lock.yaml | 1519 +++++++++++------ 42 files changed, 2610 insertions(+), 511 deletions(-) create mode 100644 packages/libs/sdk-component-drivers/src/AppsListDriver.ts create mode 100644 packages/widgets/applications-portal-widget/.eslintrc.json create mode 100644 packages/widgets/applications-portal-widget/LICENSE create mode 100644 packages/widgets/applications-portal-widget/README.md create mode 100644 packages/widgets/applications-portal-widget/e2e/applications-portal-widget.spec.ts create mode 100644 packages/widgets/applications-portal-widget/jest.config.js create mode 100644 packages/widgets/applications-portal-widget/package.json create mode 100644 packages/widgets/applications-portal-widget/playwright.config.ts create mode 100644 packages/widgets/applications-portal-widget/project.json create mode 100644 packages/widgets/applications-portal-widget/rollup.config.app.mjs create mode 100644 packages/widgets/applications-portal-widget/rollup.config.app.serve.mjs create mode 100644 packages/widgets/applications-portal-widget/rollup.config.mjs create mode 100644 packages/widgets/applications-portal-widget/src/app/index.html create mode 100644 packages/widgets/applications-portal-widget/src/lib/index.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/apiPaths.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/createSsoAppsSdk.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/helpers.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/index.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/mocks.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/api/types.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/index.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/apiMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/fetchWidgetPagesMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/index.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initAppsListMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/mixins/stateManagementMixin.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/helpers.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/index.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/loadSSOApps.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/initialState.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/selectors.ts create mode 100644 packages/widgets/applications-portal-widget/src/lib/widget/state/types.ts create mode 100644 packages/widgets/applications-portal-widget/test/application-portal-widget.test.ts create mode 100644 packages/widgets/applications-portal-widget/test/mocks/mockSsoApps.ts create mode 100644 packages/widgets/applications-portal-widget/test/mocks/mockTheme.ts create mode 100644 packages/widgets/applications-portal-widget/test/mocks/rootMock.ts create mode 100644 packages/widgets/applications-portal-widget/tsconfig.json diff --git a/packages/libs/sdk-component-drivers/src/AppsListDriver.ts b/packages/libs/sdk-component-drivers/src/AppsListDriver.ts new file mode 100644 index 000000000..f44ea20fc --- /dev/null +++ b/packages/libs/sdk-component-drivers/src/AppsListDriver.ts @@ -0,0 +1,21 @@ +import { BaseDriver } from './BaseDriver'; + +type Data = { name: string; icon: string; url: string }[]; + +export class AppsListDriver extends BaseDriver { + nodeName = 'descope-apps-list'; + + set data(data: Data) { + if (this.ele) this.ele.data = data; + } + + get data() { + return this.ele?.data; + } + + get ele() { + return super.ele as Element & { + data: Data; + }; + } +} diff --git a/packages/libs/sdk-component-drivers/src/BaseDriver.ts b/packages/libs/sdk-component-drivers/src/BaseDriver.ts index 732f22453..85e03eaae 100644 --- a/packages/libs/sdk-component-drivers/src/BaseDriver.ts +++ b/packages/libs/sdk-component-drivers/src/BaseDriver.ts @@ -29,8 +29,7 @@ export class BaseDriver { const ele = typeof this.#ele === 'function' ? this.#ele() : this.#ele; if (!ele) { this.logger?.debug( - `no element for driver `, - this.constructor.name, + `Driver element is not available for ${this.nodeName}`, new Error(), ); diff --git a/packages/libs/sdk-component-drivers/src/index.ts b/packages/libs/sdk-component-drivers/src/index.ts index 0e5a609b6..8a9ffbbe6 100644 --- a/packages/libs/sdk-component-drivers/src/index.ts +++ b/packages/libs/sdk-component-drivers/src/index.ts @@ -10,3 +10,4 @@ export * from './AvatarDriver'; export * from './UserAttributeDriver'; export * from './UserAuthMethodDriver'; export * from './FlowDriver'; +export * from './AppsListDriver'; diff --git a/packages/widgets/applications-portal-widget/.eslintrc.json b/packages/widgets/applications-portal-widget/.eslintrc.json new file mode 100644 index 000000000..563b5275b --- /dev/null +++ b/packages/widgets/applications-portal-widget/.eslintrc.json @@ -0,0 +1,87 @@ +{ + "root": true, + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "airbnb-base", + "airbnb-typescript", + "plugin:import/typescript", + "prettier", + "plugin:jest-dom/recommended" + ], + "parser": "@typescript-eslint/parser", + "ignorePatterns": ["build/*", "dist/*", "bundle/*", "coverage/*"], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module", + "project": "./tsconfig.json" + }, + "plugins": [ + "@typescript-eslint", + "prettier", + "import", + "prefer-arrow", + "jest-dom", + "jest", + "jest-formatting", + "no-only-tests" + ], + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"] + }, + "import/resolver": { + "typescript": { + "alwaysTryTypes": true + } + } + }, + "rules": { + // override airbnb-typescript rule + "react/jsx-filename-extension": 0, + "semi": [2, "always"], + "no-tabs": ["error", { "allowIndentationTabs": true }], + "@typescript-eslint/indent": ["off"], + "quotes": [ + "error", + "single", + { "avoidEscape": true, "allowTemplateLiterals": true } + ], + "@typescript-eslint/quotes": [ + "error", + "single", + { "avoidEscape": true, "allowTemplateLiterals": true } + ], + "@typescript-eslint/comma-dangle": ["off"], + "comma-dangle": ["off"], + "no-console": 2, + "no-only-tests/no-only-tests": 2, + "no-warning-comments": 2, + "import/no-unresolved": 2, + "import/named": 2, + "import/no-relative-packages": 2, + "import/no-cycle": 2, + "import/newline-after-import": 2, + "import/no-namespace": 2, + "import/no-duplicates": 2, + "import/first": 2, + "import/exports-last": 0, + "import/no-absolute-path": 2, + "import/no-dynamic-require": 2, + "import/no-self-import": 2, + "import/no-useless-path-segments": 2, + "import/prefer-default-export": 0, + "@typescript-eslint/dot-notation": 0, + "import/no-extraneous-dependencies": [ + 2, + { + "devDependencies": ["!./src/**/*"] + } + ] + } +} diff --git a/packages/widgets/applications-portal-widget/LICENSE b/packages/widgets/applications-portal-widget/LICENSE new file mode 100644 index 000000000..aec3fc69d --- /dev/null +++ b/packages/widgets/applications-portal-widget/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Descope + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/widgets/applications-portal-widget/README.md b/packages/widgets/applications-portal-widget/README.md new file mode 100644 index 000000000..af9cbebdd --- /dev/null +++ b/packages/widgets/applications-portal-widget/README.md @@ -0,0 +1,100 @@ +# @descope/applications-portal-widget + +## Setup + +### Create an `.env` file + +In the widget package create an `.env` file which includes; + +``` +DESCOPE_BASE_URL= # env base url +DESCOPE_PROJECT_ID= # project ID +DESCOPE_WIDGET_ID= # default: applications-portal-widget +DEBUG_MODE= # "true" / "false", default: "false" +DESCOPE_THEME= # "light" / "dark" / "os", default: "light" +``` + +### Example + +``` +// replace x.x.x with the latest release of the widget: https://www.npmjs.com/package/@descope/applications-portal-widget + + + + +``` + +### Authenticate + +In order to work with the widget, you must be logged in +In case you are not authenticated, a login flow will run first, and after logging in, the widget will be rendered + +### Start the widget + +run `npm start` to start the widget. + +## Architecture + +## Project Structure + +- `/app` - contains `index.html` +- `/lib` - widget's source code +- `lib/widget` - widget related implementations +- `lib/widget/api` - Logic related to API calls +- `lib/widget/mixins` - Widget specific logic +- `lib/widget/state` - State management logic + +### API + +--- + +### Mixins + +The widget is composed of mixins, each mixin contains specific logic parts, and sometime exposes an API that can be used in other mixins. + +Mixins can be composed on top of each other, so we can create new mixins by composing several mixins together. + +#### Mixins Creators + +Functions that create mixins, can get a configuration, and returns the mixin functions. + +#### Singleton Mixin + +Since mixins are composable, in some cases we want to make sure a mixin is loaded only once. For example: When there is no need for its logic to run multiple times when composed in different mixins. + +For this case we have a wrapper function (`createSingletonMixin`) to ensure that a mixin is loaded only once, regardless how many times it will be composed. + +Mixins should be wrapped with the `createSingletonMixin` wrapper function, unless there is a reason for running the mixin's logic multiple times. + +### State + +We're using several tools to handle the widget's state: + +- [Redux Toolkit](https://redux-toolkit.js.org/) for the widget's state management. +- [Redux Thunk](https://github.com/reduxjs/redux-thunk) for API calls and async operations we're using +- [Reselect](https://github.com/reduxjs/reselect) to compute derived data without hitting performance or triggering state recalculation when state is not mutated. + +### Drivers + +An abstraction layer that provides an API for components, and enables handling interactions with components within the widget. + +The motivation to use drivers is to decouple the widget's code from the component's implementation, and therefore it's important to interact with components only using drivers (and not relying on component's implementation details). + +## Dev + +### Use mock screens + +Since screen are fetched dynamically, when developing a new screen for the widget you will probably want to use mock templates. To do so, simply replace the call to `fetchWidgetPage` with a string which includes your HTML. diff --git a/packages/widgets/applications-portal-widget/e2e/applications-portal-widget.spec.ts b/packages/widgets/applications-portal-widget/e2e/applications-portal-widget.spec.ts new file mode 100644 index 000000000..1be1f0850 --- /dev/null +++ b/packages/widgets/applications-portal-widget/e2e/applications-portal-widget.spec.ts @@ -0,0 +1,81 @@ +import { test, expect } from '@playwright/test'; +import mockTheme from '../test/mocks/mockTheme'; +import { apiPaths } from '../src/lib/widget/api/apiPaths'; +import rootMock from '../test/mocks/rootMock'; +import { mockSsoApps } from '../test/mocks/mockSsoApps'; +import { SSOAppType } from '../src/lib/widget/api/types'; + +const configContent = { + flows: { + flow1: { version: 1 }, + }, + componentsVersion: '1.2.3', +}; + +const apiPath = (prop: 'ssoApps', path: string) => + `**/*${apiPaths[prop][path]}`; + +const samlApps = mockSsoApps.filter((app) => app.appType === SSOAppType.saml); + +test.describe('widget', () => { + test.beforeEach(async ({ page }) => { + await page.addInitScript(() => + window.localStorage.setItem( + 'base.ui.components.url', + 'http://localhost:8769/umd/index.js', + ), + ); + + await page.route('*/**/config.json', async (route) => + route.fulfill({ json: configContent }), + ); + + await page.route('*/**/theme.json', async (route) => + route.fulfill({ json: mockTheme }), + ); + + await page.route('*/**/root.html', async (route) => + route.fulfill({ body: rootMock }), + ); + + await page.route(apiPath('ssoApps', 'load'), async (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ apps: mockSsoApps }), + }), + ); + + await page.route('**/auth/me', async (route) => + route.fulfill({ + json: { + userTenants: [ + { + tenantId: 'tid', + roleNames: ['Tenant Admin'], + }, + ], + }, + }), + ); + + await page.goto('http://localhost:5560'); + }); + + test('saml apps are in the list', async ({ page }) => { + for (const app of samlApps) { + await expect(page.locator(`text=${app.name}`).first()).toBeVisible(); + } + }); + test('click app opens a new tab', async ({ page }) => { + const newTabPromise = page.waitForEvent('popup'); + + const app = page.locator(`text=${samlApps[0].name}`).first(); + await app.click(); + + const newTab = await newTabPromise; + await newTab.waitForLoadState(); + + await expect(newTab).toHaveURL(samlApps[0].samlSettings.idpInitiatedUrl); + }); +}); diff --git a/packages/widgets/applications-portal-widget/jest.config.js b/packages/widgets/applications-portal-widget/jest.config.js new file mode 100644 index 000000000..48e37f81e --- /dev/null +++ b/packages/widgets/applications-portal-widget/jest.config.js @@ -0,0 +1,42 @@ +const { pathsToModuleNameMapper } = require('ts-jest'); +const { compilerOptions } = require('./tsconfig.json'); + +module.exports = { + clearMocks: true, + + collectCoverage: true, + coverageDirectory: 'coverage', + collectCoverageFrom: ['src/lib/**/*.ts'], + coverageThreshold: { + global: { + branches: 0, + functions: 14, + lines: 38, + statements: 38, + }, + }, + globals: { + BUILD_VERSION: '1.2.3', + }, + transform: { + '^.+\\.ts?$': [ + 'ts-jest', + { + tsconfig: 'tsconfig.json', + }, + ], + }, + + preset: 'ts-jest', + testEnvironment: 'jsdom', + moduleDirectories: ['node_modules', 'src'], + + testTimeout: 5000, + + roots: ['src', 'test'], + + moduleNameMapper: { + '\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/test/config/fileMock.js', + }, +}; diff --git a/packages/widgets/applications-portal-widget/package.json b/packages/widgets/applications-portal-widget/package.json new file mode 100644 index 000000000..7feda6a54 --- /dev/null +++ b/packages/widgets/applications-portal-widget/package.json @@ -0,0 +1,97 @@ +{ + "name": "@descope/applications-portal-widget", + "version": "0.1.1", + "author": "Descope Team ", + "homepage": "https://github.com/descope/descope-js", + "bugs": { + "url": "https://github.com/descope/descope-js/issues", + "email": "help@descope.com" + }, + "main": "dist/index.js", + "module": "dist/esm/index.js", + "types": "dist/index.d.ts", + "description": "Descope applications portal widget", + "scripts": { + "start": "npx nx run applications-portal-widget:build && rollup -c rollup.config.app.serve.mjs -w", + "build:app": "rollup -c rollup.config.app.mjs", + "build": "rollup -c", + "test": "npm run test:unit", + "test:unit": "jest --silent", + "test:e2e": "DESCOPE_PROJECT_ID=pid DESCOPE_WIDGET_ID=wid npm run build:app && npx playwright test", + "test:e2e:ui": "npm run test:e2e -- --ui", + "lint": "eslint '+(src|test)/**/*.ts'" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/descope/descope-js.git" + }, + "files": [ + "dist" + ], + "devDependencies": { + "@descope/web-components-ui": "latest", + "@open-wc/rollup-plugin-html": "1.2.5", + "@playwright/test": "^1.41.1", + "@rollup/plugin-commonjs": "^26.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "@rollup/plugin-replace": "^5.0.0", + "@rollup/plugin-typescript": "^11.1.6", + "@testing-library/dom": "^10.0.0", + "@testing-library/jest-dom": "6.4.6", + "@types/jest": "^29.0.0", + "@types/node": "20.14.9", + "@types/testing-library__jest-dom": "5.14.9", + "dotenv": "^16.0.3", + "eslint": "8.57.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-airbnb-typescript": "18.0.0", + "eslint-config-prettier": "9.1.0", + "eslint-config-standard": "17.1.0", + "eslint-import-resolver-typescript": "3.6.1", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jest": "28.6.0", + "eslint-plugin-jest-dom": "5.4.0", + "eslint-plugin-jest-formatting": "3.1.0", + "eslint-plugin-n": "17.9.0", + "eslint-plugin-no-only-tests": "3.1.0", + "eslint-plugin-prefer-arrow": "1.2.3", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-promise": "6.2.0", + "jest": "^29.0.0", + "jest-environment-jsdom": "^29.0.0", + "lint-staged": "^15.0.0", + "prettier": "^3.0.0", + "pretty-quick": "^4.0.0", + "rollup": "^4.14.3", + "rollup-plugin-banner2": "^1.2.2", + "rollup-plugin-browsersync": "^1.3.3", + "rollup-plugin-define": "^1.0.1", + "rollup-plugin-delete": "^2.0.0", + "rollup-plugin-dts": "^6.0.0", + "rollup-plugin-livereload": "^2.0.5", + "rollup-plugin-svg-import": "3.0.0", + "rollup-plugin-terser": "7.0.2", + "shadow-dom-testing-library": "^1.2.0", + "string-to-arraybuffer": "^1.0.2", + "ts-jest": "^29.0.0", + "ts-node": "10.9.2", + "typescript": "^5.0.2", + "serve": "14.2.3" + }, + "dependencies": { + "@descope/web-js-sdk": "workspace:*", + "@descope/sdk-helpers": "workspace:*", + "@descope/sdk-mixins": "workspace:*", + "@descope/sdk-component-drivers": "workspace:*", + "tslib": "2.6.3", + "reselect": "5.1.1", + "@reduxjs/toolkit": "^2.0.1", + "redux": "5.0.1", + "redux-thunk": "3.1.0", + "immer": "^10.0.3" + }, + "overrides": { + "terser": "5.31.1" + } +} diff --git a/packages/widgets/applications-portal-widget/playwright.config.ts b/packages/widgets/applications-portal-widget/playwright.config.ts new file mode 100644 index 000000000..d8a866ebc --- /dev/null +++ b/packages/widgets/applications-portal-widget/playwright.config.ts @@ -0,0 +1,101 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ + +export default defineConfig({ + testDir: './e2e', + + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 4 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: process.env.CI ? 'html' : 'line', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://localhost:5560', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + snapshotPathTemplate: `{testDir}/__snapshots__/${ + process.env.CI ? 'ci' : 'local' + }/{testFileName}-snapshots/{arg}-{projectName}-{platform}{ext}`, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + browserName: 'chromium', + screenshot: 'only-on-failure', + }, + }, + + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'], + browserName: 'firefox', + screenshot: 'only-on-failure', + }, + }, + + { + name: 'webkit', + use: { + ...devices['Desktop Safari'], + browserName: 'webkit', + screenshot: 'only-on-failure', + }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // {f + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + webServer: [ + { + command: 'npx serve node_modules/@descope/web-components-ui/dist -p 8769', + }, + { + command: 'npx serve build -l 5560', + url: 'http://localhost:5560', + reuseExistingServer: !process.env.CI, + timeout: 120 * 1000, + }, + ], +}); diff --git a/packages/widgets/applications-portal-widget/project.json b/packages/widgets/applications-portal-widget/project.json new file mode 100644 index 000000000..307e47a64 --- /dev/null +++ b/packages/widgets/applications-portal-widget/project.json @@ -0,0 +1,29 @@ +{ + "name": "applications-portal-widget", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/widgets/applications-portal-widget/src", + "projectType": "library", + "targets": { + "version": { + "executor": "@jscutlery/semver:version", + "options": { + "trackDeps": true, + "push": false, + "preset": "conventional" + } + }, + "licenseCheck": { + "executor": "nx:run-commands", + "options": { + "commands": [ + "tools/scripts/licenseValidation/thirdPartyLicenseCollector_linux_amd64 -npm-project {projectRoot}" + ] + } + }, + "build:app": { + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + } + }, + "tags": [] +} diff --git a/packages/widgets/applications-portal-widget/rollup.config.app.mjs b/packages/widgets/applications-portal-widget/rollup.config.app.mjs new file mode 100644 index 000000000..8620d48b2 --- /dev/null +++ b/packages/widgets/applications-portal-widget/rollup.config.app.mjs @@ -0,0 +1,49 @@ +import html from '@open-wc/rollup-plugin-html'; +import typescript from '@rollup/plugin-typescript'; +import del from 'rollup-plugin-delete'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import replace from '@rollup/plugin-replace'; +import dotenv from 'dotenv'; +import define from 'rollup-plugin-define'; +import svg from 'rollup-plugin-svg-import'; + +import packageJson from './package.json' assert { type: 'json' }; + +dotenv.config(); + +export default { + preserveSymlinks: true, + input: 'src/app/index.html', + output: { dir: 'build', format: 'esm', sourcemap: true }, + plugins: [ + define({ + replacements: { + BUILD_VERSION: JSON.stringify(packageJson.version), + DESCOPE_PROJECT_ID: JSON.stringify( + process.env.DESCOPE_PROJECT_ID || '', + ), + DESCOPE_BASE_URL: JSON.stringify(process.env.DESCOPE_BASE_URL || ''), + DESCOPE_BASE_STATIC_URL: JSON.stringify( + process.env.DESCOPE_BASE_STATIC_URL || '', + ), + DESCOPE_WIDGET_ID: JSON.stringify(process.env.DESCOPE_WIDGET_ID || ''), + }, + }), + del({ targets: 'build' }), + typescript({ + declaration: false, + declarationDir: 'build', + }), + commonjs(), + nodeResolve(), + replace({ + preventAssignment: true, + 'process.env.NODE_ENV': JSON.stringify('development'), + }), + svg(), + html({ + minify: false, + }), + ], +}; diff --git a/packages/widgets/applications-portal-widget/rollup.config.app.serve.mjs b/packages/widgets/applications-portal-widget/rollup.config.app.serve.mjs new file mode 100644 index 000000000..d2ee8e474 --- /dev/null +++ b/packages/widgets/applications-portal-widget/rollup.config.app.serve.mjs @@ -0,0 +1,8 @@ +import browsersync from 'rollup-plugin-browsersync'; +import conf from './rollup.config.app.mjs'; + +// If TS type errors remove bs-recipes references in package-lock.json due to bad global React typings +export default { + ...conf, + plugins: [...conf.plugins, browsersync({ server: 'build' })], +}; diff --git a/packages/widgets/applications-portal-widget/rollup.config.mjs b/packages/widgets/applications-portal-widget/rollup.config.mjs new file mode 100644 index 000000000..b9832b394 --- /dev/null +++ b/packages/widgets/applications-portal-widget/rollup.config.mjs @@ -0,0 +1,96 @@ +import commonjs from '@rollup/plugin-commonjs'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import typescript from '@rollup/plugin-typescript'; +import banner from 'rollup-plugin-banner2'; +import define from 'rollup-plugin-define'; +import del from 'rollup-plugin-delete'; +import dts from 'rollup-plugin-dts'; +import svg from 'rollup-plugin-svg-import'; +import { terser } from 'rollup-plugin-terser'; + +import packageJson from './package.json' assert { type: 'json' }; + +const input = './src/lib/index.ts'; +const external = (id) => + !id.startsWith('\0') && !id.startsWith('.') && !id.startsWith('/'); + +const { PRODUCTION } = process.env; + +export default [ + { + input, + output: { + dir: 'dist', + format: 'iife', + sourcemap: true, + name: 'descope-applications-portal-widget', + extend: true, + inlineDynamicImports: true, + }, + plugins: [ + del({ targets: 'dist' }), + define({ + replacements: { + BUILD_VERSION: JSON.stringify(packageJson.version), + 'process.env.NODE_ENV': JSON.stringify( + PRODUCTION ? 'production' : 'development', + ), + }, + }), + typescript({ + rootDir: './src/lib', + }), + commonjs(), + nodeResolve(), + terser(), + svg(), + banner( + () => ` + /** + * ${packageJson.name} v${packageJson.version} + */ + `, + ), + ], + }, + { + input, + output: { + dir: 'dist/esm', + format: 'esm', + sourcemap: true, + }, + plugins: [ + typescript({ + rootDir: './src/lib', + declarationDir: 'dist/esm/dts', + }), + define({ + replacements: { + BUILD_VERSION: JSON.stringify(packageJson.version), + }, + }), + commonjs(), + nodeResolve(), + terser(), + svg(), + banner( + () => ` + /** + * ${packageJson.name} v${packageJson.version} + */ + `, + ), + ], + + external, + }, + { + input: './dist/dts/index.d.ts', + output: [{ file: 'dist/index.d.ts', format: 'esm' }], + plugins: [ + dts(), + del({ hook: 'buildEnd', targets: ['./dist/dts', './dist/esm/dts'] }), + ], + }, +]; diff --git a/packages/widgets/applications-portal-widget/src/app/index.html b/packages/widgets/applications-portal-widget/src/app/index.html new file mode 100644 index 000000000..e540344dd --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/app/index.html @@ -0,0 +1,97 @@ + + + + Descope Applications Portal Widget + + + + + + + + + + +
+ + + + diff --git a/packages/widgets/applications-portal-widget/src/lib/index.ts b/packages/widgets/applications-portal-widget/src/lib/index.ts new file mode 100644 index 000000000..15ce8e747 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/index.ts @@ -0,0 +1,10 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import type { Unsubscribe } from 'redux'; // workaround for https://github.com/microsoft/TypeScript/issues/42873 +import { ApplicationsPortalWidget } from './widget'; + +export default ApplicationsPortalWidget; + +customElements.define( + 'descope-applications-portal-widget', + ApplicationsPortalWidget, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/apiPaths.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/apiPaths.ts new file mode 100644 index 000000000..44c07d05c --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/apiPaths.ts @@ -0,0 +1,5 @@ +export const apiPaths = { + ssoApps: { + load: '/v1/mgmt/sso/idp/apps/load', + }, +}; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/createSsoAppsSdk.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/createSsoAppsSdk.ts new file mode 100644 index 000000000..c1c2256ad --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/createSsoAppsSdk.ts @@ -0,0 +1,27 @@ +import { apiPaths } from '../apiPaths'; +import { HttpClient } from '../types'; +import { withErrorHandler } from './helpers'; +import { ssoApps } from './mocks'; + +export const createSsoAppsSdk = ({ + httpClient, + mock, +}: { + httpClient: HttpClient; + mock: boolean; +}) => { + const load = async () => { + if (mock) { + return ssoApps.load(); + } + const res = await httpClient.get(apiPaths.ssoApps.load); + + await withErrorHandler(res); + + return res.json(); + }; + + return { + load, + }; +}; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/helpers.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/helpers.ts new file mode 100644 index 000000000..a4683190a --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/helpers.ts @@ -0,0 +1,14 @@ +export const withErrorHandler = async (res: Response) => { + const text = await res.text(); + const json = JSON.parse(text); + + if (!res.ok) { + const descopeErrorMsg = `${json.errorDescription}${ + json.errorMessage ? `: ${json.errorMessage}` : '' + }`; + throw Error(descopeErrorMsg || `${res.status} ${res.statusText}`); + } + + res.json = () => Promise.resolve(json); + res.text = () => Promise.resolve(text); +}; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/index.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/index.ts new file mode 100644 index 000000000..74b160355 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/index.ts @@ -0,0 +1,26 @@ +import createWebSdk from '@descope/web-js-sdk'; +import { createSsoAppsSdk } from './createSsoAppsSdk'; + +declare const BUILD_VERSION: string; + +export const createSdk = ( + config: Parameters[0], + mock: boolean, + widgetId?: string, +) => { + const webSdk = createWebSdk({ + ...config, + persistTokens: true, + baseHeaders: { + 'x-descope-widget-type': 'applications-portal-widget', + 'x-descope-widget-id': widgetId, + 'x-descope-widget-version': BUILD_VERSION, + }, + }); + + return { + ssoApps: createSsoAppsSdk({ httpClient: webSdk.httpClient, mock }), + }; +}; + +export type Sdk = ReturnType; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/mocks.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/mocks.ts new file mode 100644 index 000000000..5b24965b2 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/sdk/mocks.ts @@ -0,0 +1,45 @@ +import { SSOApplication, SSOAppType } from '../types'; + +const load: () => Promise<{ apps: SSOApplication[] }> = async () => + new Promise((resolve) => { + resolve({ + apps: [ + { + id: 'ssoapp1', + name: 'App 1', + description: 'This is the first SAML app', + enabled: true, + appType: SSOAppType.saml, + logo: 'logo1', + samlSettings: { + idpInitiatedUrl: 'http://idpInitiatedURL.com', + }, + }, + { + id: 'ssoapp2', + name: 'App 2', + description: 'This is the first OIDC app', + enabled: true, + appType: SSOAppType.oidc, + logo: 'logo2', + }, + { + id: 'ssoapp3', + name: 'App 3', + description: 'This is the second SAML app', + enabled: true, + appType: SSOAppType.saml, + logo: 'logo3', + samlSettings: { + idpInitiatedUrl: 'http://idpInitiatedURL2.com', + }, + }, + ] + }); + }); + +const ssoApps = { + load, +}; + +export { ssoApps }; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/api/types.ts b/packages/widgets/applications-portal-widget/src/lib/widget/api/types.ts new file mode 100644 index 000000000..009a027c3 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/api/types.ts @@ -0,0 +1,22 @@ +import createWebSdk from '@descope/web-js-sdk'; + +export type Sdk = ReturnType; + +export type HttpClient = Sdk['httpClient']; + +export enum SSOAppType { + oidc = 'oidc', + saml = 'saml', +} + +export type SSOApplication = { + id: string; + name: string; + description?: string; + enabled: boolean; + appType: SSOAppType; + logo?: string; + samlSettings?: { + idpInitiatedUrl: string; + }; +}; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/index.ts b/packages/widgets/applications-portal-widget/src/lib/widget/index.ts new file mode 100644 index 000000000..09e2b7958 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/index.ts @@ -0,0 +1,7 @@ +import { compose } from '@descope/sdk-helpers'; +import { initMixin } from './mixins/initMixin/initMixin'; + +const rootMixin = (superclass: CustomElementConstructor) => + class RootMixinClass extends initMixin(superclass) {}; + +export const ApplicationsPortalWidget = compose(rootMixin)(HTMLElement); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/apiMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/apiMixin.ts new file mode 100644 index 000000000..f6ae0e572 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/apiMixin.ts @@ -0,0 +1,58 @@ +import { compose, createSingletonMixin } from '@descope/sdk-helpers'; +import { + baseUrlMixin, + loggerMixin, + observeAttributesMixin, + projectIdMixin, +} from '@descope/sdk-mixins'; +import { Sdk, createSdk } from '../api/sdk'; + +export const apiMixin = createSingletonMixin( + (superclass: T) => { + const BaseClass = compose( + projectIdMixin, + observeAttributesMixin, + loggerMixin, + baseUrlMixin, + )(superclass); + + return class ApiMixinClass extends BaseClass { + #api: Sdk; + + #createSdk() { + this.logger.debug('creating an sdk instance'); + this.#api = createSdk( + { projectId: this.projectId, baseUrl: this.baseUrl }, + this.mock === 'true', + this.widgetId, + ); + } + + get widgetId() { + return this.getAttribute('widget-id'); + } + + get mock() { + return this.getAttribute('mock'); + } + + get api() { + if (!this.#api) { + this.#createSdk(); + } + + return this.#api; + } + + async init() { + await super.init?.(); + + this.observeAttributes(['project-id', 'base-url'], () => { + if (this.#api) { + this.#createSdk(); + } + }); + } + }; + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/fetchWidgetPagesMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/fetchWidgetPagesMixin.ts new file mode 100644 index 000000000..d65682c4c --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/fetchWidgetPagesMixin.ts @@ -0,0 +1,31 @@ +import { compose, createSingletonMixin } from '@descope/sdk-helpers'; +import { + createValidateAttributesMixin, + staticResourcesMixin, +} from '@descope/sdk-mixins'; + +const WIDGET_PAGES_BASE_DIR = 'applications-portal-widget'; + +export const fetchWidgetPagesMixin = createSingletonMixin( + (superclass: T) => { + const BaseClass = compose( + staticResourcesMixin, + createValidateAttributesMixin({ + 'widget-id': createValidateAttributesMixin.missingAttrValidator, + }), + )(superclass); + return class FetchWidgetPagesMixinClass extends BaseClass { + get widgetId() { + return this.getAttribute('widget-id'); + } + + async fetchWidgetPage(filename: string) { + const res = await this.fetchStaticResource( + `${WIDGET_PAGES_BASE_DIR}/${this.widgetId}/${filename}`, + 'text', + ); + return res.body; + } + }; + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/index.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/index.ts new file mode 100644 index 000000000..f4d01d804 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/index.ts @@ -0,0 +1 @@ +export * from './initMixin'; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initAppsListMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initAppsListMixin.ts new file mode 100644 index 000000000..875f3aad6 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initAppsListMixin.ts @@ -0,0 +1,30 @@ +import { AppsListDriver } from '@descope/sdk-component-drivers'; +import { compose, createSingletonMixin } from '@descope/sdk-helpers'; +import { loggerMixin } from '@descope/sdk-mixins'; +import { getAppsList } from '../../../state/selectors'; +import { stateManagementMixin } from '../../stateManagementMixin'; +import { initWidgetRootMixin } from './initWidgetRootMixin'; + +export const initAppsListMixin = createSingletonMixin( + (superclass: T) => + class InitAppsListMixinClass extends compose( + stateManagementMixin, + loggerMixin, + initWidgetRootMixin, + )(superclass) { + appsList: AppsListDriver; + + #initAppsList(appsList: ReturnType) { + this.appsList = new AppsListDriver( + () => this.shadowRoot?.querySelector('descope-apps-list'), + { logger: this.logger }, + ); + this.appsList.data = appsList; + } + + async onWidgetRootReady() { + await super.onWidgetRootReady?.(); + this.#initAppsList(getAppsList(this.state)); + } + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts new file mode 100644 index 000000000..ec812ee94 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts @@ -0,0 +1,55 @@ +import { + compose, + createSingletonMixin, + createTemplate, +} from '@descope/sdk-helpers'; +import { + descopeUiMixin, + initElementMixin, + initLifecycleMixin, + loggerMixin, +} from '@descope/sdk-mixins'; +import { fetchWidgetPagesMixin } from '../../fetchWidgetPagesMixin'; +import { stateManagementMixin } from '../../stateManagementMixin'; + +export const initWidgetRootMixin = createSingletonMixin( + (superclass: T) => + class InitWidgetRootMixinClass extends compose( + loggerMixin, + initLifecycleMixin, + descopeUiMixin, + initElementMixin, + fetchWidgetPagesMixin, + stateManagementMixin, + )(superclass) { + async #initWidgetRoot() { + const template = createTemplate( + // await import('../../../../../../test/mocks/rootMock').then( + // (module) => module.default, + // ), + await this.fetchWidgetPage('root.html'), + ); + await this.loadDescopeUiComponents(template); + + return template; + } + + #renderTemplate(template: HTMLTemplateElement) { + this.contentRootElement.append(template.content.cloneNode(true)); + } + + // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function + async onWidgetRootReady() {} + + async init() { + await super.init?.(); + + const [template] = await Promise.all([this.#initWidgetRoot(), this.actions.loadSSOApps()]); + // we want to render the template only after the data was fetched + // so we won't show the apps-list empty state until the data is loaded + this.#renderTemplate(template); + + this.onWidgetRootReady(); + } + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initMixin.ts new file mode 100644 index 000000000..382abf1b7 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/initMixin/initMixin.ts @@ -0,0 +1,17 @@ +import { compose, createSingletonMixin } from '@descope/sdk-helpers'; +import { debuggerMixin, themeMixin } from '@descope/sdk-mixins'; +import { initAppsListMixin } from './initComponentsMixins/initAppsListMixin'; + +export const initMixin = createSingletonMixin( + (superclass: T) => + // @ts-ignore + class InitMixinClass extends compose( + debuggerMixin, + themeMixin, + initAppsListMixin, + )(superclass) { + async init() { + await super.init?.(); + } + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/mixins/stateManagementMixin.ts b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/stateManagementMixin.ts new file mode 100644 index 000000000..9e9b72d7f --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/mixins/stateManagementMixin.ts @@ -0,0 +1,43 @@ +/* eslint-disable no-param-reassign */ +import { compose, createSingletonMixin } from '@descope/sdk-helpers'; +import { + createStateManagementMixin, + initLifecycleMixin, + loggerMixin, +} from '@descope/sdk-mixins'; +import { loadSSOApps } from '../state/asyncActions'; +import { initialState } from '../state/initialState'; +import { apiMixin } from './apiMixin'; + +export const stateManagementMixin = createSingletonMixin( + (superclass: T) => { + const BaseClass = compose( + createStateManagementMixin({ + name: 'widget', + initialState, + reducers: {}, + extraReducers: (builder) => { + loadSSOApps.reducer(builder); + }, + asyncActions: { + loadSSOApps: loadSSOApps.action, + }, + }), + initLifecycleMixin, + loggerMixin, + apiMixin, + )(superclass); + return class StateManagementMixinClass extends BaseClass { + state = initialState; + + constructor(...args: any) { + super(...args); + + this.subscribe((state) => { + this.logger.debug('State update:', state); + this.state = state; + }); + } + }; + }, +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/helpers.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/helpers.ts new file mode 100644 index 000000000..51252ca74 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/helpers.ts @@ -0,0 +1,86 @@ +/* eslint-disable @typescript-eslint/no-shadow */ +/* eslint-disable no-param-reassign */ + +import { + ActionReducerMapBuilder, + AsyncThunk, + PayloadAction, + SerializedError, +} from '@reduxjs/toolkit'; +import { State } from '../types'; + +type ExtractedArg = T extends AsyncThunk ? U : never; + +type FulfilledAction> = PayloadAction< + any, + string, + { + arg: ExtractedArg; + requestId: string; + }, + never +>; + +type RejectedAction> = PayloadAction< + any, + string, + { + arg: ExtractedArg; + requestId: string; + }, + SerializedError +>; + +type PendingAction> = PayloadAction< + unknown, + string, + { + arg: ExtractedArg; + requestId: string; + } +>; + +type AsyncReducerConfig> = { + onFulfilled?: (state: State, action: FulfilledAction) => void; + onRejected?: (state: State, action: RejectedAction) => void; + onPending?: (state: State, action: PendingAction) => void; +}; + +export const buildAsyncReducer = + >(action: T) => + (...args: AsyncReducerConfig[]) => + (builder: ActionReducerMapBuilder) => { + builder.addCase(action.pending, (state, action) => { + args.forEach(({ onPending }) => { + onPending?.(state, action); + }); + }); + + builder.addCase(action.fulfilled, (state, action) => { + args.forEach(({ onFulfilled }) => { + onFulfilled?.(state, action); + }); + }); + + builder.addCase(action.rejected, (state, action) => { + args.forEach(({ onRejected }) => { + onRejected?.(state, action); + }); + }); + }; + +export const withRequestStatus = ( + getStateSection: (state: State) => { loading: boolean; error: unknown }, +): AsyncReducerConfig => ({ + onFulfilled: (state) => { + getStateSection(state).loading = false; + }, + onPending: (state) => { + getStateSection(state).loading = true; + getStateSection(state).error = null; + }, + onRejected: (state, action) => { + getStateSection(state).loading = false; + getStateSection(state).error = action.error; + }, +}); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/index.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/index.ts new file mode 100644 index 000000000..beabe2fd7 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/index.ts @@ -0,0 +1 @@ +export * from './loadSSOApps'; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/loadSSOApps.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/loadSSOApps.ts new file mode 100644 index 000000000..548555115 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/asyncActions/loadSSOApps.ts @@ -0,0 +1,23 @@ +/* eslint-disable no-param-reassign */ +/* eslint-disable @typescript-eslint/no-shadow */ +import { createAsyncThunk } from '@reduxjs/toolkit'; +import { Sdk } from '../../api/sdk'; +import { FirstParameter, State, ThunkConfigExtraApi } from '../types'; +import { buildAsyncReducer, withRequestStatus } from './helpers'; + +const action = createAsyncThunk< + any, + FirstParameter, + ThunkConfigExtraApi +>('ssoApps/load', (arg, { extra: { api } }) => api.ssoApps.load()); + +const reducer = buildAsyncReducer(action)( + { + onFulfilled: (state, action) => { + state.ssoAppsList.data = action.payload?.apps; + }, + }, + withRequestStatus((state: State) => state.ssoAppsList), +); + +export const loadSSOApps = { action, reducer }; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/initialState.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/initialState.ts new file mode 100644 index 000000000..db14f61c0 --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/initialState.ts @@ -0,0 +1,9 @@ +import { State } from './types'; + +export const initialState: State = { + ssoAppsList: { + data: [], + loading: false, + error: null, + }, +}; diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/selectors.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/selectors.ts new file mode 100644 index 000000000..3fb3c775d --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/selectors.ts @@ -0,0 +1,18 @@ +import { createSelector } from 'reselect'; +import { State } from './types'; +import { SSOAppType } from '../api/types'; + +export const getSSOAppsList = (state: State) => state.ssoAppsList.data; +export const getSamlApps = createSelector( + getSSOAppsList, + (ssoAppsList) => + ssoAppsList?.filter?.((app) => app.appType === SSOAppType.saml), +); + +export const getAppsList = createSelector(getSamlApps, (samlApps) => + samlApps.map((app) => ({ + name: app.name, + icon: app.logo, + url: app.samlSettings.idpInitiatedUrl, + })), +); diff --git a/packages/widgets/applications-portal-widget/src/lib/widget/state/types.ts b/packages/widgets/applications-portal-widget/src/lib/widget/state/types.ts new file mode 100644 index 000000000..74a3023ca --- /dev/null +++ b/packages/widgets/applications-portal-widget/src/lib/widget/state/types.ts @@ -0,0 +1,23 @@ +import { ActionReducerMapBuilder } from '@reduxjs/toolkit'; +import { Sdk } from '../api/sdk'; +import { SSOApplication } from '../api/types'; + +export type State = { + ssoAppsList: { + data: SSOApplication[]; + loading: boolean; + error: unknown; + }; +}; + +type First = T extends [infer U, ...any[]] ? U : never; + +export type FirstParameter any> = First< + Parameters +>; + +export type ThunkConfigExtraApi = { extra: { api: Sdk } }; + +export type RemoveVoid = T extends void ? never : T; + +export type Builder = ActionReducerMapBuilder; diff --git a/packages/widgets/applications-portal-widget/test/application-portal-widget.test.ts b/packages/widgets/applications-portal-widget/test/application-portal-widget.test.ts new file mode 100644 index 000000000..0bf27f5e8 --- /dev/null +++ b/packages/widgets/applications-portal-widget/test/application-portal-widget.test.ts @@ -0,0 +1,104 @@ +import { waitFor } from '@testing-library/dom'; +import '@testing-library/jest-dom'; +import '../src/lib/index'; +import { apiPaths } from '../src/lib/widget/api/apiPaths'; +import { createSdk } from '../src/lib/widget/api/sdk'; +import rootMock from './mocks/rootMock'; +import { mockSsoApps } from './mocks/mockSsoApps'; + +const origAppend = document.body.append; + +const mockProjectId = 'mockProjectId'; + +export const mockHttpClient = { + get: jest.fn(), + post: jest.fn(), + put: jest.fn(), + delete: jest.fn(), + reset: () => + ['get'].forEach((key) => + mockHttpClient[key].mockResolvedValue({ + ok: true, + status: 200, + json: () => Promise.resolve({ apps: mockSsoApps }), + text: () => Promise.resolve(JSON.stringify({ apps: mockSsoApps })), + }), + ), +}; +mockHttpClient.reset(); + +jest.mock('@descope/web-js-sdk', () => ({ + __esModule: true, + default: jest.fn(() => ({ httpClient: mockHttpClient })), +})); + +jest.mock('../src/lib/widget/api/sdk/createSsoAppsSdk', () => { + const actualModule = jest.requireActual( + '../src/lib/widget/api/sdk/createSsoAppsSdk', + ); + return { + __esModule: true, + createSsoAppsSdk: jest.fn((props) => actualModule.createSsoAppsSdk(props)), + }; +}); + +const themeContent = {}; +const configContent = { + flows: { + flow1: { version: 1 }, + }, + componentsVersion: '1.2.3', +}; + +const fetchMock: jest.Mock = jest.fn(); +global.fetch = fetchMock; + +describe('application-portal-widget', () => { + beforeEach(() => { + fetchMock.mockImplementation((url: string) => { + const res = { + ok: true, + headers: new Headers({}), + }; + + switch (true) { + case url.endsWith('theme.json'): { + return { ...res, json: () => themeContent }; + } + case url.endsWith('config.json'): { + return { ...res, json: () => configContent }; + } + case url.endsWith('root.html'): { + return { ...res, text: () => rootMock }; + } + default: { + return { ok: false }; + } + } + }); + }); + + afterEach(() => { + document.getElementsByTagName('head')[0].innerHTML = ''; + document.getElementsByTagName('body')[0].innerHTML = ''; + document.body.append = origAppend; + mockHttpClient.reset(); + }); + + describe('sdk', () => { + it('load', async () => { + const sdk = createSdk({ projectId: mockProjectId }, false); + const result = await sdk.ssoApps.load(); + + await waitFor(() => expect(mockHttpClient.get).toHaveBeenCalledTimes(1), { + timeout: 5000, + }); + await waitFor(() => + expect(mockHttpClient.get).toHaveBeenCalledWith(apiPaths.ssoApps.load), + ); + + expect(result.apps[0].id).toEqual(mockSsoApps[0].id); + expect(result.apps[1].id).toEqual(mockSsoApps[1].id); + }); + }); +}); diff --git a/packages/widgets/applications-portal-widget/test/mocks/mockSsoApps.ts b/packages/widgets/applications-portal-widget/test/mocks/mockSsoApps.ts new file mode 100644 index 000000000..fb4211641 --- /dev/null +++ b/packages/widgets/applications-portal-widget/test/mocks/mockSsoApps.ts @@ -0,0 +1,34 @@ +import { SSOAppType } from '../../src/lib/widget/api/types'; + +export const mockSsoApps = [ + { + id: 'ssoapp1', + name: 'SAML App 1', + description: 'This is the first SAML app', + enabled: true, + appType: SSOAppType.saml, + logo: 'logo1', + samlSettings: { + idpInitiatedUrl: 'http://www.testingmcafeesites.com/testcat_ac.html', + }, + }, + { + id: 'ssoapp2', + name: 'OIDC App 1', + description: 'This is the first OIDC app', + enabled: true, + appType: SSOAppType.oidc, + logo: 'logo2', + }, + { + id: 'ssoapp3', + name: 'SAML App 2', + description: 'This is the second SAML app', + enabled: true, + appType: SSOAppType.saml, + logo: 'logo3', + samlSettings: { + idpInitiatedUrl: 'http://www.testingmcafeesites.com/testcat_ac.html', + }, + }, +]; diff --git a/packages/widgets/applications-portal-widget/test/mocks/mockTheme.ts b/packages/widgets/applications-portal-widget/test/mocks/mockTheme.ts new file mode 100644 index 000000000..becc47a75 --- /dev/null +++ b/packages/widgets/applications-portal-widget/test/mocks/mockTheme.ts @@ -0,0 +1,53 @@ +export default { + light: { + globals: + '*[data-theme="light"] {--descope-colors-surface-main:#D3D3D3;\n--descope-colors-surface-dark:#000;\n--descope-colors-surface-light:#fff;\n--descope-colors-surface-contrast:#151515;\n--descope-colors-primary-main:#006AF5;\n--descope-colors-primary-dark:#00357B;\n--descope-colors-primary-light:#71AEFF;\n--descope-colors-primary-contrast:#D9EEFF;\n--descope-colors-secondary-main:#7D14EB;\n--descope-colors-secondary-dark:#3E0A76;\n--descope-colors-secondary-light:#BE8AF5;\n--descope-colors-secondary-contrast:#F2DDFF;\n--descope-colors-success-main:#008000;\n--descope-colors-success-dark:#004000;\n--descope-colors-success-light:#00C000;\n--descope-colors-success-contrast:#DFF9DF;\n--descope-colors-error-main:#E21D12;\n--descope-colors-error-dark:#710E09;\n--descope-colors-error-light:#F4807A;\n--descope-colors-error-contrast:#FFDFDD;\n--descope-typography-h1-font:var(--descope-fonts-font1-family);\n--descope-typography-h1-weight:900;\n--descope-typography-h1-size:48px;\n--descope-typography-h2-font:var(--descope-fonts-font1-family);\n--descope-typography-h2-weight:800;\n--descope-typography-h2-size:38px;\n--descope-typography-h3-font:var(--descope-fonts-font1-family);\n--descope-typography-h3-weight:600;\n--descope-typography-h3-size:28px;\n--descope-typography-subtitle1-font:var(--descope-fonts-font2-family);\n--descope-typography-subtitle1-weight:500;\n--descope-typography-subtitle1-size:22px;\n--descope-typography-subtitle2-font:var(--descope-fonts-font2-family);\n--descope-typography-subtitle2-weight:400;\n--descope-typography-subtitle2-size:20px;\n--descope-typography-body1-font:var(--descope-fonts-font1-family);\n--descope-typography-body1-weight:400;\n--descope-typography-body1-size:16px;\n--descope-typography-body2-font:var(--descope-fonts-font1-family);\n--descope-typography-body2-weight:400;\n--descope-typography-body2-size:14px;\n--descope-spacing-xs:2px;\n--descope-spacing-sm:4px;\n--descope-spacing-md:8px;\n--descope-spacing-lg:16px;\n--descope-spacing-xl:32px;\n--descope-border-xs:1px;\n--descope-border-sm:2px;\n--descope-border-md:3px;\n--descope-border-lg:4px;\n--descope-border-xl:5px;\n--descope-radius-xs:5px;\n--descope-radius-sm:10px;\n--descope-radius-md:15px;\n--descope-radius-lg:20px;\n--descope-radius-xl:25px;\n--descope-radius-2xl:30px;\n--descope-radius-3xl:35px;\n--descope-shadow-wide-sm:0 2px 3px -0.5px;\n--descope-shadow-wide-md:0 4px 6px -1px;\n--descope-shadow-wide-lg:0 10px 15px -3px;\n--descope-shadow-wide-xl:0 20px 25px -5px;\n--descope-shadow-wide-2xl:0 25px 50px -12px;\n--descope-shadow-narrow-sm:0 1px 2px -1px;\n--descope-shadow-narrow-md:0 2px 4px -2px;\n--descope-shadow-narrow-lg:0 4px 6px -4px;\n--descope-shadow-narrow-xl:0 8px 10px -6px;\n--descope-shadow-narrow-2xl:0 16px 16px -8px;\n--descope-fonts-font1-family:Roboto, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n--descope-fonts-font1-label:Roboto;\n--descope-fonts-font1-url:url(https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900);\n--descope-fonts-font2-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n--descope-fonts-font2-label:Sans Serif;\n}', + components: { + 'descope-button': { + host: ':host([mode="primary"]) { \n--descope-button-main: var(--descope-colors-primary-main);\n--descope-button-dark: var(--descope-colors-primary-dark);\n--descope-button-light: var(--descope-colors-primary-light);\n--descope-button-contrast: var(--descope-colors-primary-contrast) \n}\n\n:host([mode="secondary"]) { \n--descope-button-main: var(--descope-colors-secondary-main);\n--descope-button-dark: var(--descope-colors-secondary-dark);\n--descope-button-light: var(--descope-colors-secondary-light);\n--descope-button-contrast: var(--descope-colors-secondary-contrast) \n}\n\n:host([mode="success"]) { \n--descope-button-main: var(--descope-colors-success-main);\n--descope-button-dark: var(--descope-colors-success-dark);\n--descope-button-light: var(--descope-colors-success-light);\n--descope-button-contrast: var(--descope-colors-success-contrast) \n}\n\n:host([mode="error"]) { \n--descope-button-main: var(--descope-colors-error-main);\n--descope-button-dark: var(--descope-colors-error-dark);\n--descope-button-light: var(--descope-colors-error-light);\n--descope-button-contrast: var(--descope-colors-error-contrast) \n}\n\n:host([mode="surface"]) { \n--descope-button-main: var(--descope-colors-surface-main);\n--descope-button-dark: var(--descope-colors-surface-dark);\n--descope-button-light: var(--descope-colors-surface-light);\n--descope-button-contrast: var(--descope-colors-surface-contrast) \n}\n\n:host { \n--descope-button-font-family: var(--descope-fonts-font1-family);\n--descope-button-cursor: pointer;\n--descope-button-host-height: 3em;\n--descope-button-host-width: auto;\n--descope-button-border-radius: var(--descope-radius-sm);\n--descope-button-border-width: var(--descope-border-xs);\n--descope-button-border-style: solid;\n--descope-button-border-color: transparent;\n--descope-button-label-spacing: 0.25em;\n--descope-button-vertical-padding: 1em;\n--descope-button-outline-width: 2px;\n--descope-button-outline-offset: 0px;\n--descope-button-outline-style: solid;\n--descope-button-outline-color: transparent \n}\n\n:host([size="xs"]) { \n--descope-button-font-size: 12px \n}\n\n:host([size="sm"]) { \n--descope-button-font-size: 14px \n}\n\n:host([size="md"]) { \n--descope-button-font-size: 16px \n}\n\n:host([size="lg"]) { \n--descope-button-font-size: 18px \n}\n\n:host([square="true"]) { \n--descope-button-host-height: 3em;\n--descope-button-host-width: 3em;\n--descope-button-vertical-padding: 0 \n}\n\n:host([full-width="true"]) { \n--descope-button-host-width: 100% \n}\n\n:host([loading="true"]) { \n--descope-button-cursor: wait;\n--descope-button-label-text-color: var(--descope-button-main) \n}\n\n:host([disabled="true"]) { \n--descope-button-main: var(--descope-colors-surface-main);\n--descope-button-dark: var(--descope-colors-surface-dark);\n--descope-button-light: var(--descope-colors-surface-light);\n--descope-button-contrast: var(--descope-colors-surface-contrast) \n}\n\n:host([variant="contained"]) { \n--descope-button-label-text-color: var(--descope-button-contrast);\n--descope-button-background-color: var(--descope-button-main) \n}\n\n:host([variant="contained"][hover="true"]) { \n--descope-button-background-color: var(--descope-button-dark) \n}\n\n:host([variant="contained"][hover="true"][loading="true"]) { \n--descope-button-background-color: var(--descope-button-main) \n}\n\n:host([variant="contained"][active="true"]) { \n--descope-button-background-color: var(--descope-button-main) \n}\n\n:host([variant="outline"]) { \n--descope-button-label-text-color: var(--descope-button-main);\n--descope-button-border-color: currentColor \n}\n\n:host([variant="outline"][hover="true"]) { \n--descope-button-label-text-color: var(--descope-button-dark) \n}\n\n:host([variant="outline"][active="true"]) { \n--descope-button-label-text-color: var(--descope-button-main) \n}\n\n:host([variant="link"]) { \n--descope-button-label-text-color: var(--descope-button-main) \n}\n\n:host([variant="link"][hover="true"]) { \n--descope-button-label-text-color: var(--descope-button-dark);\n--descope-button-label-text-decoration: underline \n}\n\n:host([variant="link"][active="true"]) { \n--descope-button-label-text-color: var(--descope-button-dark) \n}\n\n:host([focused="true"]) { \n--descope-button-outline-color: var(--descope-colors-surface-main) \n}\n\n', + }, + 'descope-text-field': { + host: ':host { \n--descope-text-field-host-width: var(--descope-input-wrapper-width);\n--descope-text-field-host-min-width: var(--descope-input-wrapper-min-width);\n--descope-text-field-font-size: var(--descope-input-wrapper-font-size);\n--descope-text-field-font-family: var(--descope-input-wrapper-font-family);\n--descope-text-field-label-text-color: var(--descope-input-wrapper-label-text-color);\n--descope-text-field-label-required-indicator: var(--descope-input-wrapper-required-indicator);\n--descope-text-field-error-message-text-color: var(--descope-input-wrapper-error-message-text-color);\n--descope-text-field-input-value-text-color: var(--descope-input-wrapper-value-text-color);\n--descope-text-field-input-placeholder-color: var(--descope-input-wrapper-placeholder-text-color);\n--descope-text-field-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-text-field-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-text-field-input-border-color: var(--descope-input-wrapper-border-color);\n--descope-text-field-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-text-field-input-outline-width: var(--descope-input-wrapper-outline-width);\n--descope-text-field-input-outline-style: var(--descope-input-wrapper-outline-style);\n--descope-text-field-input-outline-color: var(--descope-input-wrapper-outline-color);\n--descope-text-field-input-outline-offset: var(--descope-input-wrapper-outline-offset);\n--descope-text-field-input-background-color: var(--descope-input-wrapper-background-color);\n--descope-text-field-input-height: var(--descope-input-wrapper-input-height);\n--descope-text-field-input-horizontal-padding: var(--descope-input-wrapper-horizontal-padding) \n}\n\n', + }, + 'descope-email-field': { + host: ':host { \n--descope-email-field-host-width: var(--descope-input-wrapper-width);\n--descope-email-field-host-min-width: var(--descope-input-wrapper-min-width);\n--descope-email-field-font-size: var(--descope-input-wrapper-font-size);\n--descope-email-field-font-family: var(--descope-input-wrapper-font-family);\n--descope-email-field-label-text-color: var(--descope-input-wrapper-label-text-color);\n--descope-email-field-error-message-text-color: var(--descope-input-wrapper-error-message-text-color);\n--descope-email-field-input-value-text-color: var(--descope-input-wrapper-value-text-color);\n--descope-email-field-label-required-indicator: var(--descope-input-wrapper-required-indicator);\n--descope-email-field-input-placeholder-color: var(--descope-input-wrapper-placeholder-text-color);\n--descope-email-field-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-email-field-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-email-field-input-border-color: var(--descope-input-wrapper-border-color);\n--descope-email-field-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-email-field-input-outline-width: var(--descope-input-wrapper-outline-width);\n--descope-email-field-input-outline-style: var(--descope-input-wrapper-outline-style);\n--descope-email-field-input-outline-color: var(--descope-input-wrapper-outline-color);\n--descope-email-field-input-outline-offset: var(--descope-input-wrapper-outline-offset);\n--descope-email-field-input-background-color: var(--descope-input-wrapper-background-color);\n--descope-email-field-input-horizontal-padding: var(--descope-input-wrapper-horizontal-padding);\n--descope-email-field-input-height: var(--descope-input-wrapper-input-height) \n}\n\n', + }, + 'descope-text-area': { + host: ':host { \n--descope-text-area-host-width: var(--descope-input-wrapper-width);\n--descope-text-area-host-min-width: var(--descope-input-wrapper-min-width);\n--descope-text-area-font-size: var(--descope-input-wrapper-font-size);\n--descope-text-area-font-family: var(--descope-input-wrapper-font-family);\n--descope-text-area-label-text-color: var(--descope-input-wrapper-label-text-color);\n--descope-text-area-label-required-indicator: var(--descope-input-wrapper-required-indicator);\n--descope-text-area-error-message-text-color: var(--descope-input-wrapper-error-message-text-color);\n--descope-text-area-input-background-color: var(--descope-input-wrapper-background-color);\n--descope-text-area-input-value-text-color: var(--descope-input-wrapper-value-text-color);\n--descope-text-area-input-placeholder-text-color: var(--descope-input-wrapper-placeholder-text-color);\n--descope-text-area-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-text-area-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-text-area-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-text-area-input-border-color: var(--descope-input-wrapper-border-color);\n--descope-text-area-input-outline-width: var(--descope-input-wrapper-outline-width);\n--descope-text-area-input-outline-style: var(--descope-input-wrapper-outline-style);\n--descope-text-area-input-outline-color: var(--descope-input-wrapper-outline-color);\n--descope-text-area-input-outline-offset: var(--descope-input-wrapper-outline-offset);\n--descope-text-area-input-resize-type: vertical;\n--descope-text-area-input-min-height: 5em \n}\n\n:host([disabled="true"]) { \n--descope-text-area-input-background-color: var(--descope-colors-surface-light) \n}\n\n:host([readonly="true"]) { \n--descope-text-area-input-resize-type: none \n}\n\n', + }, + 'descope-checkbox': { + host: ':host { \n--descope-checkbox-host-width: var(--descope-input-wrapper-width);\n--descope-checkbox-font-size: var(--descope-input-wrapper-font-size);\n--descope-checkbox-font-family: var(--descope-input-wrapper-font-family);\n--descope-checkbox-label-text-color: var(--descope-input-wrapper-label-text-color);\n--descope-checkbox-label-required-indicator: var(--descope-input-wrapper-required-indicator);\n--descope-checkbox-label-font-weight: 400;\n--descope-checkbox-label-line-height: 1.35em;\n--descope-checkbox-label-spacing: 1em;\n--descope-checkbox-error-message-text-color: var(--descope-input-wrapper-error-message-text-color);\n--descope-checkbox-input-outline-width: var(--descope-input-wrapper-outline-width);\n--descope-checkbox-input-outline-offset: var(--descope-input-wrapper-outline-offset);\n--descope-checkbox-input-outline-color: var(--descope-input-wrapper-outline-color);\n--descope-checkbox-input-outline-style: var(--descope-input-wrapper-outline-style);\n--descope-checkbox-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-checkbox-input-border-color: var(--descope-input-wrapper-border-color);\n--descope-checkbox-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-checkbox-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-checkbox-input-background-color: var(--descope-input-wrapper-background-color);\n--descope-checkbox-input-size: 1.35em \n}\n\n:host([checked="true"]) { \n--descope-checkbox-input-value-text-color: var(--descope-input-wrapper-value-text-color) \n}\n\n:host([disabled="true"]) { \n--descope-checkbox-label-text-color: var(--descope-input-wrapper-label-text-color) \n}\n\n', + }, + 'descope-container': { + host: ':host([vertical-alignment="start"]) { \n--descope-container-vertical-alignment: start \n}\n\n:host([vertical-alignment="center"]) { \n--descope-container-vertical-alignment: safe center \n}\n\n:host([vertical-alignment="end"]) { \n--descope-container-vertical-alignment: end \n}\n\n:host([horizontal-alignment="start"]) { \n--descope-container-horizontal-alignment: start \n}\n\n:host([horizontal-alignment="center"]) { \n--descope-container-horizontal-alignment: safe center \n}\n\n:host([horizontal-alignment="end"]) { \n--descope-container-horizontal-alignment: end \n}\n\n:host { \n--descope-container-shadow-color: #00000020;\n--descope-container-host-width: 100%;\n--descope-container-box-shadow: none;\n--descope-container-background-color: var(--descope-colors-surface-light);\n--descope-container-color: var(--descope-colors-surface-contrast);\n--descope-container-border-radius: 0px \n}\n\n:host([vertical-padding="sm"]) { \n--descope-container-vertical-padding: 5px \n}\n\n:host([vertical-padding="md"]) { \n--descope-container-vertical-padding: 10px \n}\n\n:host([vertical-padding="lg"]) { \n--descope-container-vertical-padding: 20px \n}\n\n:host([horizontal-padding="sm"]) { \n--descope-container-horizontal-padding: 5px \n}\n\n:host([horizontal-padding="md"]) { \n--descope-container-horizontal-padding: 10px \n}\n\n:host([horizontal-padding="lg"]) { \n--descope-container-horizontal-padding: 20px \n}\n\n:host([direction="row"]) { \n--descope-container-flex-direction: row;\n--descope-container-align-items: var(--descope-container-vertical-alignment);\n--descope-container-justify-content: var(--descope-container-horizontal-alignment);\n--descope-container-flex-wrap: wrap \n}\n\n:host([direction="row"][horizontal-alignment="spaceBetween"]) { \n--descope-container-horizontal-alignment: space-between \n}\n\n:host([direction="column"]) { \n--descope-container-flex-direction: column;\n--descope-container-align-items: var(--descope-container-horizontal-alignment);\n--descope-container-justify-content: var(--descope-container-vertical-alignment) \n}\n\n:host([direction="column"][vertical-alignment="spaceBetween"]) { \n--descope-container-vertical-alignment: space-between \n}\n\n:host([space-between="sm"]) { \n--descope-container-gap: 10px \n}\n\n:host([space-between="md"]) { \n--descope-container-gap: 20px \n}\n\n:host([space-between="lg"]) { \n--descope-container-gap: 30px \n}\n\n:host([shadow="sm"]) { \n--descope-container-box-shadow: var(--descope-shadow-wide-sm) var(--descope-container-shadow-color), var(--descope-shadow-narrow-sm) var(--descope-container-shadow-color) \n}\n\n:host([shadow="md"]) { \n--descope-container-box-shadow: var(--descope-shadow-wide-md) var(--descope-container-shadow-color), var(--descope-shadow-narrow-md) var(--descope-container-shadow-color) \n}\n\n:host([shadow="lg"]) { \n--descope-container-box-shadow: var(--descope-shadow-wide-lg) var(--descope-container-shadow-color), var(--descope-shadow-narrow-lg) var(--descope-container-shadow-color) \n}\n\n:host([shadow="xl"]) { \n--descope-container-box-shadow: var(--descope-shadow-wide-xl) var(--descope-container-shadow-color), var(--descope-shadow-narrow-xl) var(--descope-container-shadow-color) \n}\n\n:host([shadow="2xl"]) { \n--descope-container-shadow-color: #00000050;\n--descope-container-box-shadow: var(--descope-shadow-wide-2xl) var(--descope-container-shadow-color) \n}\n\n:host([border-radius="sm"]) { \n--descope-container-border-radius: var(--descope-radius-sm) \n}\n\n:host([border-radius="md"]) { \n--descope-container-border-radius: var(--descope-radius-md) \n}\n\n:host([border-radius="lg"]) { \n--descope-container-border-radius: var(--descope-radius-lg) \n}\n\n:host([border-radius="xl"]) { \n--descope-container-border-radius: var(--descope-radius-xl) \n}\n\n:host([border-radius="2xl"]) { \n--descope-container-border-radius: var(--descope-radius-2xl) \n}\n\n:host([border-radius="3xl"]) { \n--descope-container-border-radius: var(--descope-radius-3xl) \n}\n\n', + }, + 'descope-text': { + host: ':host { \n--descope-text-text-line-height: 1.35em;\n--descope-text-text-align: left;\n--descope-text-text-color: var(--descope-colors-surface-dark) \n}\n\n:host([variant="h1"]) { \n--descope-text-font-size: var(--descope-typography-h1-size);\n--descope-text-font-weight: var(--descope-typography-h1-weight);\n--descope-text-font-family: var(--descope-typography-h1-font) \n}\n\n:host([variant="h2"]) { \n--descope-text-font-size: var(--descope-typography-h2-size);\n--descope-text-font-weight: var(--descope-typography-h2-weight);\n--descope-text-font-family: var(--descope-typography-h2-font) \n}\n\n:host([variant="h3"]) { \n--descope-text-font-size: var(--descope-typography-h3-size);\n--descope-text-font-weight: var(--descope-typography-h3-weight);\n--descope-text-font-family: var(--descope-typography-h3-font) \n}\n\n:host([variant="subtitle1"]) { \n--descope-text-font-size: var(--descope-typography-subtitle1-size);\n--descope-text-font-weight: var(--descope-typography-subtitle1-weight);\n--descope-text-font-family: var(--descope-typography-subtitle1-font) \n}\n\n:host([variant="subtitle2"]) { \n--descope-text-font-size: var(--descope-typography-subtitle2-size);\n--descope-text-font-weight: var(--descope-typography-subtitle2-weight);\n--descope-text-font-family: var(--descope-typography-subtitle2-font) \n}\n\n:host([variant="body1"]) { \n--descope-text-font-size: var(--descope-typography-body1-size);\n--descope-text-font-weight: var(--descope-typography-body1-weight);\n--descope-text-font-family: var(--descope-typography-body1-font) \n}\n\n:host([variant="body2"]) { \n--descope-text-font-size: var(--descope-typography-body2-size);\n--descope-text-font-weight: var(--descope-typography-body2-weight);\n--descope-text-font-family: var(--descope-typography-body2-font) \n}\n\n:host([mode="primary"]) { \n--descope-text-text-color: var(--descope-colors-primary-main) \n}\n\n:host([mode="secondary"]) { \n--descope-text-text-color: var(--descope-colors-secondary-main) \n}\n\n:host([mode="error"]) { \n--descope-text-text-color: var(--descope-colors-error-main) \n}\n\n:host([mode="success"]) { \n--descope-text-text-color: var(--descope-colors-success-main) \n}\n\n:host([text-align="right"]) { \n--descope-text-text-align: right \n}\n\n:host([text-align="left"]) { \n--descope-text-text-align: left \n}\n\n:host([text-align="center"]) { \n--descope-text-text-align: center \n}\n\n:host([full-width="true"]) { \n--descope-text-host-width: 100% \n}\n\n:host([italic="true"]) { \n--descope-text-font-style: italic \n}\n\n:host([uppercase="true"]) { \n--descope-text-text-transform: uppercase \n}\n\n:host([lowercase="true"]) { \n--descope-text-text-transform: lowercase \n}\n\n', + }, + 'descope-phone-field': { + host: ':host { \n--descope-phone-field-host-width: var(--descope-input-wrapper-width);\n--descope-phone-field-font-size: var(--descope-input-wrapper-font-size);\n--descope-phone-field-font-family: var(--descope-input-wrapper-font-family);\n--descope-phone-field-label-text-color: var(--descope-input-wrapper-label-text-color);\n--descope-phone-field-label-required-indicator: var(--descope-input-wrapper-required-indicator);\n--descope-phone-field-error-message-text-color: var(--descope-input-wrapper-error-message-text-color);\n--descope-phone-field-input-value-text-color: var(--descope-input-wrapper-value-text-color);\n--descope-phone-field-input-placeholder-text-color: var(--descope-input-wrapper-placeholder-text-color);\n--descope-phone-field-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-phone-field-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-phone-field-input-border-color: var(--descope-input-wrapper-border-color);\n--descope-phone-field-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-phone-field-input-outline-style: var(--descope-input-wrapper-outline-style);\n--descope-phone-field-input-outline-width: var(--descope-input-wrapper-outline-width);\n--descope-phone-field-input-outline-color: var(--descope-input-wrapper-outline-color);\n--descope-phone-field-input-outline-offset: var(--descope-input-wrapper-outline-offset);\n--descope-phone-field-phone-input-width: var(--descope-input-wrapper-min-width);\n--descope-phone-field-country-code-input-width: 5em;\n--descope-phone-field-country-code-dropdown-width: 20em \n}\n\n', + }, + 'descope-input-wrapper': { + host: ':host { \n--descope-input-wrapper-label-text-color: var(--descope-colors-surface-contrast);\n--descope-input-wrapper-value-text-color: var(--descope-colors-surface-contrast);\n--descope-input-wrapper-placeholder-text-color: var(--descope-colors-surface-main);\n--descope-input-wrapper-required-indicator: \'*\';\n--descope-input-wrapper-error-message-text-color: var(--descope-colors-error-main);\n--descope-input-wrapper-border-width: var(--descope-border-xs);\n--descope-input-wrapper-border-radius: var(--descope-radius-xs);\n--descope-input-wrapper-border-color: transparent;\n--descope-input-wrapper-outline-width: var(--descope-border-sm);\n--descope-input-wrapper-outline-style: solid;\n--descope-input-wrapper-outline-color: transparent;\n--descope-input-wrapper-outline-offset: 0px;\n--descope-input-wrapper-min-width: 10em;\n--descope-input-wrapper-toggle-button-size: 1.5em;\n--descope-input-wrapper-input-height: 3em;\n--descope-input-wrapper-horizontal-padding: 0.5em;\n--descope-input-wrapper-vertical-padding: 0.5em;\n--descope-input-wrapper-background-color: var(--descope-colors-surface-light);\n--descope-input-wrapper-font-family: var(--descope-fonts-font1-family) \n}\n\n:host([size="xs"]) { \n--descope-input-wrapper-font-size: 12px \n}\n\n:host([size="sm"]) { \n--descope-input-wrapper-font-size: 14px \n}\n\n:host([size="md"]) { \n--descope-input-wrapper-font-size: 16px \n}\n\n:host([size="lg"]) { \n--descope-input-wrapper-font-size: 18px \n}\n\n:host([full-width="true"]) { \n--descope-input-wrapper-width: 100% \n}\n\n:host([focused="true"]) { \n--descope-input-wrapper-outline-color: var(--descope-colors-surface-main) \n}\n\n:host([focused="true"][invalid="true"]) { \n--descope-input-wrapper-outline-color: var(--descope-colors-error-main) \n}\n\n:host([bordered="true"]) { \n--descope-input-wrapper-outline-width: var(--descope-border-xs);\n--descope-input-wrapper-border-color: var(--descope-colors-surface-main);\n--descope-input-wrapper-border-style: solid \n}\n\n:host([bordered="true"][invalid="true"]) { \n--descope-input-wrapper-border-color: var(--descope-colors-error-main) \n}\n\n:host([disabled="true"]) { \n--descope-input-wrapper-label-text-color: var(--descope-colors-surface-main);\n--descope-input-wrapper-border-color: var(--descope-colors-surface-main);\n--descope-input-wrapper-value-text-color: var(--descope-colors-surface-dark);\n--descope-input-wrapper-placeholder-text-color: var(--descope-colors-surface-dark);\n--descope-input-wrapper-background-color: var(--descope-colors-surface-main) \n}\n\n', + }, + 'descope-modal': { + host: ':host { \nundefined: 400px;\n--descope-modal-overlay-shadow: none;\n--descope-modal-overlay-width: 700px \n}\n\n', + }, + 'descope-grid': { + host: ':host { \n--descope-grid-host-width: 100%;\n--descope-grid-host-height: 100%;\n--descope-grid-host-min-height: 400px;\n--descope-grid-font-size: var(--descope-input-wrapper-font-size);\n--descope-grid-font-family: var(--descope-input-wrapper-font-family);\n--descope-grid-sort-indicators-color: var(--descope-colors-primary-main);\n--descope-grid-active-sort-indicator: var(--descope-colors-primary-main);\n--descope-grid-resize-handle-color: var(--descope-colors-surface-main);\n--descope-grid-input-border-width: var(--descope-input-wrapper-border-width);\n--descope-grid-input-border-style: var(--descope-input-wrapper-border-style);\n--descope-grid-input-border-radius: var(--descope-input-wrapper-border-radius);\n--descope-grid-input-border-color: transparent;\n--descope-grid-separator-color: var(--descope-input-wrapper-border-color);\n--descope-grid-value-text-color: var(--descope-colors-surface-contrast);\n--descope-grid-selected-background-color: var(--descope-colors-primary-main);\n--descope-grid-selected-text-color: var(--descope-colors-primary-contrast) \n}\n\n:host([bordered="true"]) { \n--descope-grid-input-border-color: var(--descope-input-wrapper-border-color) \n}\n\n', + }, + 'descope-notification-card': { + host: ':host { \n--descope-notification-card-host-width: 415px;\n--descope-notification-card-font-family: var(--descope-fonts-font1-family);\n--descope-notification-card-font-size: var(--descope-typography-body1-size);\n--descope-notification-card-background-color: var(--descope-colors-surface-main);\n--descope-notification-card-text-color: var(--descope-colors-surface-contrast);\n--descope-notification-card-box-shadow: var(--descope-shadow-wide-xl) #00000020, var(--descope-shadow-narrow-xl) #00000020;\n--descope-notification-card-vertical-padding: 0.45em;\n--descope-notification-card-horizontal-padding: 1em;\n--descope-notification-card-vertical-margin: 1em;\n--descope-notification-card-horizontal-margin: 1em;\n--descope-notification-card-border-radius: var(--descope-radius-md);\n--descope-notification-card-content-spacing: 0.5em \n}\n\n:host([bordered="true"]) { \n--descope-notification-card-border-width: var(--descope-border-sm);\n--descope-notification-card-border-style: solid;\n--descope-notification-card-border-color: transparent \n}\n\n:host([size="xs"]) { \n--descope-notification-card-font-size: 12px \n}\n\n:host([size="sm"]) { \n--descope-notification-card-font-size: 14px \n}\n\n:host([size="md"]) { \n--descope-notification-card-font-size: 16px \n}\n\n:host([size="lg"]) { \n--descope-notification-card-font-size: 18px \n}\n\n:host([mode="primary"]) { \n--descope-notification-card-background-color: var(--descope-colors-primary-main);\n--descope-notification-card-text-color: var(--descope-colors-primary-contrast);\n--descope-notification-card-border-color: var(--descope-colors-primary-light) \n}\n\n:host([mode="success"]) { \n--descope-notification-card-background-color: var(--descope-colors-success-main);\n--descope-notification-card-text-color: var(--descope-colors-success-contrast);\n--descope-notification-card-border-color: var(--descope-colors-success-light) \n}\n\n:host([mode="error"]) { \n--descope-notification-card-background-color: var(--descope-colors-error-main);\n--descope-notification-card-text-color: var(--descope-colors-error-contrast);\n--descope-notification-card-border-color: var(--descope-colors-error-light) \n}\n\n', + }, + 'descope-list': { + host: ':host { \n--descope-list-shadow-color: #00000020;\n--descope-list-host-width: 100%;\n--descope-list-background-color: var(--descope-colors-surface-main);\n--descope-list-border-color: var(--descope-colors-surface-light);\n--descope-list-border-style: solid;\n--descope-list-border-width: var(--descope-border-xs);\n--descope-list-border-radius: var(--descope-radius-sm);\n--descope-list-gap: var(--descope-spacing-md);\n--descope-list-vertical-padding: var(--descope-spacing-lg);\n--descope-list-horizontal-padding: var(--descope-spacing-lg);\n--descope-list-box-shadow: var(--descope-shadow-wide-sm) var(--descope-list-shadow-color), var(--descope-shadow-narrow-sm) var(--descope-list-shadow-color);\n--descope-list-max-height: 478px;\n--descope-list-host-direction: var(--descope-direction) \n}\n\n:host([empty="true"]) { \n--descope-list-min-height: 478px;\n--descope-list-max-height: 478px \n}\n\n', + }, + 'descope-list-item': { + host: ':host { \n--descope-list-item-background-color: var(--descope-colors-surface-main);\n--descope-list-item-padding: var(--descope-spacing-lg);\n--descope-list-item-gap: var(--descope-spacing-md);\n--descope-list-item-border-style: solid;\n--descope-list-item-border-width: var(--descope-border-sm);\n--descope-list-item-border-color: var(--descope-colors-surface-main);\n--descope-list-item-border-radius: var(--descope-radius-sm);\n--descope-list-item-cursor: pointer \n}\n\n:host([hover="true"]) { \n--descope-list-item-background-color: var(--descope-colors-surface-highlight) \n}\n\n:host([active="true"]) { \n--descope-list-item-background-color: var(--descope-colors-surface-main);\n--descope-list-item-border-color: var(--descope-colors-primary-light) \n}\n\n', + }, + }, + }, + dark: { + components: {}, + }, +}; diff --git a/packages/widgets/applications-portal-widget/test/mocks/rootMock.ts b/packages/widgets/applications-portal-widget/test/mocks/rootMock.ts new file mode 100644 index 000000000..42ce64d44 --- /dev/null +++ b/packages/widgets/applications-portal-widget/test/mocks/rootMock.ts @@ -0,0 +1,5 @@ +export default ` + + + +`; diff --git a/packages/widgets/applications-portal-widget/tsconfig.json b/packages/widgets/applications-portal-widget/tsconfig.json new file mode 100644 index 000000000..90c13dbf3 --- /dev/null +++ b/packages/widgets/applications-portal-widget/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "rootDir": ".", + "target": "es6", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": false, + "skipLibCheck": true, + "strict": false, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "declaration": true, + "declarationDir": "dist/dts", + "noErrorTruncation": true, + "typeRoots": ["./node_modules/@types", "./node_modules/@descope/*"] + }, + + "include": ["**/*.ts", "./src/lib/custom.d.ts"], + "exclude": ["node_modules", "build", "dist"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c87e5992a..bd3aa5e6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,7 +14,7 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.0.0 - version: 19.2.1(@types/node@20.14.9)(typescript@5.5.4) + version: 19.2.1(@types/node@20.14.9)(typescript@5.6.2) '@commitlint/config-conventional': specifier: ^19.0.0 version: 19.1.0 @@ -26,13 +26,13 @@ importers: version: 19.1.0(nx@19.5.2) '@nrwl/eslint-plugin-nx': specifier: 19.3.2 - version: 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.5.4) + version: 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.6.2) '@nrwl/jest': specifier: 19.3.2 - version: 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.5.4) + version: 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.6.2) '@nrwl/js': specifier: 19.3.2 - version: 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4) + version: 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2) '@nrwl/linter': specifier: 19.3.2 version: 19.3.2(@types/node@20.14.9)(eslint@9.6.0)(nx@19.5.2) @@ -47,10 +47,10 @@ importers: version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: 7.15.0 - version: 7.15.0(@typescript-eslint/parser@7.2.0)(eslint@9.6.0)(typescript@5.5.4) + version: 7.15.0(@typescript-eslint/parser@7.2.0)(eslint@9.6.0)(typescript@5.6.2) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.2.0(eslint@9.6.0)(typescript@5.5.4) + version: 7.2.0(eslint@9.6.0)(typescript@5.6.2) eslint: specifier: ~9.6.0 version: 9.6.0 @@ -83,12 +83,10 @@ importers: version: 3.1.0 ts-jest: specifier: 29.1.5 - version: 29.1.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4) + version: 29.1.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.6.2) ts-node: specifier: 10.9.2 - version: 10.9.2(@types/node@20.14.9)(typescript@5.5.4) - - packages/core-js-sdk/dist/cjs: {} + version: 10.9.2(@types/node@20.14.9)(typescript@5.6.2) packages/libs/sdk-component-drivers: dependencies: @@ -152,7 +150,7 @@ importers: version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: 5.4.0 - version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.0) @@ -284,7 +282,7 @@ importers: version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: 5.4.0 - version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.0) @@ -434,7 +432,7 @@ importers: version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: 5.4.0 - version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.0) @@ -696,7 +694,7 @@ importers: version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: 5.4.0 - version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.0) @@ -904,10 +902,10 @@ importers: version: 3.1.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + version: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) jest-config: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + version: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -964,7 +962,7 @@ importers: version: 0.7.0(rollup@2.79.1) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.7.1)(@types/node@22.5.4)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.7.1)(@types/node@22.5.5)(typescript@5.4.5) typescript: specifier: ^5.0.2 version: 5.4.5 @@ -973,7 +971,7 @@ importers: dependencies: '@descope/nextjs-sdk': specifier: file:../.. - version: file:packages/sdks/nextjs-sdk(@types/react@18.3.5)(next@13.5.3)(react@18.3.1) + version: file:packages/sdks/nextjs-sdk(@types/react@18.3.6)(next@13.5.3)(react@18.3.1) next: specifier: ^13.5.3 version: 13.5.3(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) @@ -988,7 +986,7 @@ importers: dependencies: '@descope/nextjs-sdk': specifier: file:../.. - version: file:packages/sdks/nextjs-sdk(@types/react@18.3.5)(next@13.5.3)(react@18.3.1) + version: file:packages/sdks/nextjs-sdk(@types/react@18.3.6)(next@13.5.3)(react@18.3.1) next: specifier: 13.5.3 version: 13.5.3(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) @@ -1277,7 +1275,7 @@ importers: version: 5.0.8(@vue/cli-service@5.0.8)(@vue/vue3-jest@27.0.0)(jest@29.7.0)(ts-jest@27.1.5) '@vue/cli-service': specifier: ~5.0.0 - version: 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + version: 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/eslint-config-typescript': specifier: ^9.1.0 version: 9.1.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-vue@8.7.1)(eslint@7.32.0)(typescript@5.4.5) @@ -1349,7 +1347,7 @@ importers: version: 0.34.1(rollup@2.79.1)(typescript@5.4.5) rollup-plugin-vue: specifier: ^6.0.0 - version: 6.0.0(@vue/compiler-sfc@3.5.3) + version: 6.0.0(@vue/compiler-sfc@3.5.6) ts-jest: specifier: ^27.0.4 version: 27.1.5(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1)(jest@29.7.0)(typescript@5.4.5) @@ -1422,7 +1420,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -1585,7 +1583,7 @@ importers: version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: 5.4.0 - version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.0) @@ -1661,8 +1659,6 @@ importers: packages/sdks/web-js-sdk/dist/cjs: {} - packages/web-js-sdk/dist/cjs: {} - packages/widgets/access-key-management-widget: dependencies: '@descope/sdk-component-drivers': @@ -1698,7 +1694,7 @@ importers: devDependencies: '@descope/web-components-ui': specifier: latest - version: 1.0.348 + version: 1.0.368 '@open-wc/rollup-plugin-html': specifier: 1.2.5 version: 1.2.5 @@ -1740,7 +1736,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -1841,6 +1837,184 @@ importers: specifier: ^5.0.2 version: 5.4.5 + packages/widgets/applications-portal-widget: + dependencies: + '@descope/sdk-component-drivers': + specifier: workspace:* + version: link:../../libs/sdk-component-drivers + '@descope/sdk-helpers': + specifier: workspace:* + version: link:../../libs/sdk-helpers + '@descope/sdk-mixins': + specifier: workspace:* + version: link:../../libs/sdk-mixins + '@descope/web-js-sdk': + specifier: workspace:* + version: link:../../sdks/web-js-sdk + '@reduxjs/toolkit': + specifier: ^2.0.1 + version: 2.0.1 + immer: + specifier: ^10.0.3 + version: 10.0.3 + redux: + specifier: 5.0.1 + version: 5.0.1 + redux-thunk: + specifier: 3.1.0 + version: 3.1.0(redux@5.0.1) + reselect: + specifier: 5.1.1 + version: 5.1.1 + tslib: + specifier: 2.6.3 + version: 2.6.3 + devDependencies: + '@descope/web-components-ui': + specifier: latest + version: 1.0.368 + '@open-wc/rollup-plugin-html': + specifier: 1.2.5 + version: 1.2.5 + '@playwright/test': + specifier: ^1.41.1 + version: 1.41.1 + '@rollup/plugin-commonjs': + specifier: ^26.0.0 + version: 26.0.1(rollup@4.14.3) + '@rollup/plugin-node-resolve': + specifier: ^15.0.0 + version: 15.2.3(rollup@4.14.3) + '@rollup/plugin-replace': + specifier: ^5.0.0 + version: 5.0.7(rollup@4.14.3) + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.14.3)(tslib@2.6.3)(typescript@5.5.4) + '@testing-library/dom': + specifier: ^10.0.0 + version: 10.4.0 + '@testing-library/jest-dom': + specifier: 6.4.6 + version: 6.4.6(@types/jest@29.5.12)(jest@29.7.0) + '@types/jest': + specifier: ^29.0.0 + version: 29.5.12 + '@types/node': + specifier: 20.14.9 + version: 20.14.9 + '@types/testing-library__jest-dom': + specifier: 5.14.9 + version: 5.14.9 + dotenv: + specifier: ^16.0.3 + version: 16.4.5 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-airbnb: + specifier: 19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: 18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-config-prettier: + specifier: 9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-config-standard: + specifier: 17.1.0 + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@17.9.0)(eslint-plugin-promise@6.2.0)(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: 3.6.1 + version: 3.6.1(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: + specifier: 2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jest: + specifier: 28.6.0 + version: 28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.4) + eslint-plugin-jest-dom: + specifier: 5.4.0 + version: 5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0) + eslint-plugin-jest-formatting: + specifier: 3.1.0 + version: 3.1.0(eslint@8.57.0) + eslint-plugin-n: + specifier: 17.9.0 + version: 17.9.0(eslint@8.57.0) + eslint-plugin-no-only-tests: + specifier: 3.1.0 + version: 3.1.0 + eslint-plugin-prefer-arrow: + specifier: 1.2.3 + version: 1.2.3(eslint@8.57.0) + eslint-plugin-prettier: + specifier: 5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3) + eslint-plugin-promise: + specifier: 6.2.0 + version: 6.2.0(eslint@8.57.0) + jest: + specifier: ^29.0.0 + version: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) + jest-environment-jsdom: + specifier: ^29.0.0 + version: 29.7.0 + lint-staged: + specifier: ^15.0.0 + version: 15.2.7 + prettier: + specifier: ^3.0.0 + version: 3.3.3 + pretty-quick: + specifier: ^4.0.0 + version: 4.0.0(prettier@3.3.3) + rollup: + specifier: ^4.14.3 + version: 4.14.3 + rollup-plugin-banner2: + specifier: ^1.2.2 + version: 1.2.2 + rollup-plugin-browsersync: + specifier: ^1.3.3 + version: 1.3.3 + rollup-plugin-define: + specifier: ^1.0.1 + version: 1.0.1(rollup@4.14.3) + rollup-plugin-delete: + specifier: ^2.0.0 + version: 2.0.0 + rollup-plugin-dts: + specifier: ^6.0.0 + version: 6.1.0(rollup@4.14.3)(typescript@5.5.4) + rollup-plugin-livereload: + specifier: ^2.0.5 + version: 2.0.5 + rollup-plugin-svg-import: + specifier: 3.0.0 + version: 3.0.0(rollup@4.14.3) + rollup-plugin-terser: + specifier: 7.0.2 + version: 7.0.2(rollup@4.14.3) + serve: + specifier: 14.2.3 + version: 14.2.3 + shadow-dom-testing-library: + specifier: ^1.2.0 + version: 1.10.0(@testing-library/dom@10.4.0) + string-to-arraybuffer: + specifier: ^1.0.2 + version: 1.0.2 + ts-jest: + specifier: ^29.0.0 + version: 29.1.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4) + ts-node: + specifier: 10.9.2 + version: 10.9.2(@types/node@20.14.9)(typescript@5.5.4) + typescript: + specifier: ^5.0.2 + version: 5.5.4 + packages/widgets/audit-management-widget: dependencies: '@descope/sdk-component-drivers': @@ -1876,7 +2050,7 @@ importers: devDependencies: '@descope/web-components-ui': specifier: latest - version: 1.0.348 + version: 1.0.368 '@open-wc/rollup-plugin-html': specifier: 1.2.5 version: 1.2.5 @@ -1918,7 +2092,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 17.1.0 version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.28.1)(eslint@8.57.0) @@ -2054,7 +2228,7 @@ importers: devDependencies: '@descope/web-components-ui': specifier: latest - version: 1.0.348 + version: 1.0.368 '@open-wc/rollup-plugin-html': specifier: 1.2.5 version: 1.2.5 @@ -2096,7 +2270,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -2235,7 +2409,7 @@ importers: devDependencies: '@descope/web-components-ui': specifier: latest - version: 1.0.348 + version: 1.0.368 '@open-wc/rollup-plugin-html': specifier: 1.2.5 version: 1.2.5 @@ -2277,7 +2451,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -2420,7 +2594,7 @@ importers: devDependencies: '@descope/web-components-ui': specifier: latest - version: 1.0.348 + version: 1.0.368 '@open-wc/rollup-plugin-html': specifier: 1.2.5 version: 1.2.5 @@ -2462,7 +2636,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: 18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0)(@typescript-eslint/parser@7.18.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -3065,7 +3239,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + picocolors: 1.1.0 /@babel/compat-data@7.24.8: resolution: {integrity: sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==} @@ -3091,7 +3265,7 @@ packages: '@babel/traverse': 7.24.8 '@babel/types': 7.24.8 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3149,18 +3323,18 @@ packages: resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.8 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.7) - '@babel/helpers': 7.24.8 - '@babel/parser': 7.24.8 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.7) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3367,7 +3541,7 @@ packages: '@babel/core': 7.22.9 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3382,7 +3556,7 @@ packages: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3397,7 +3571,7 @@ packages: '@babel/core': 7.22.9 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3412,7 +3586,7 @@ packages: '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3427,7 +3601,7 @@ packages: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3442,7 +3616,7 @@ packages: '@babel/core': 7.22.9 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3457,7 +3631,7 @@ packages: '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3472,7 +3646,7 @@ packages: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -3490,7 +3664,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.8 + '@babel/types': 7.25.6 /@babel/helper-hoist-variables@7.24.7: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} @@ -3604,6 +3778,21 @@ packages: - supports-color dev: true + /@babel/helper-module-transforms@7.25.2(@babel/core@7.24.7): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} @@ -3806,7 +3995,7 @@ packages: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 /@babel/parser@7.24.8: resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} @@ -7026,7 +7215,7 @@ packages: '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.6 - debug: 4.3.7 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7070,14 +7259,14 @@ packages: tough-cookie: 4.1.4 dev: true - /@commitlint/cli@19.2.1(@types/node@20.14.9)(typescript@5.5.4): + /@commitlint/cli@19.2.1(@types/node@20.14.9)(typescript@5.6.2): resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 19.0.3 '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@20.14.9)(typescript@5.5.4) + '@commitlint/load': 19.2.0(@types/node@20.14.9)(typescript@5.6.2) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -7133,7 +7322,7 @@ packages: engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 - semver: 7.6.0 + semver: 7.6.3 dev: true /@commitlint/lint@19.1.0: @@ -7146,7 +7335,7 @@ packages: '@commitlint/types': 19.0.3 dev: true - /@commitlint/load@19.2.0(@types/node@20.14.9)(typescript@5.5.4): + /@commitlint/load@19.2.0(@types/node@20.14.9)(typescript@5.6.2): resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} engines: {node: '>=v18'} dependencies: @@ -7155,8 +7344,8 @@ packages: '@commitlint/resolve-extends': 19.1.0 '@commitlint/types': 19.0.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.5.4) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.9)(cosmiconfig@9.0.0)(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.9)(cosmiconfig@9.0.0)(typescript@5.6.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7246,8 +7435,8 @@ packages: jwt-decode: 3.1.2 dev: false - /@descope/core-js-sdk@2.24.4: - resolution: {integrity: sha512-VsTDJbPobTDswprgT+LT6nJ+9FRmgyj3E8i3zPyk3sX0E2sIcYZUdnkj3FaqaakPtjw+MF3/OkumJNGKgZhcJQ==} + /@descope/core-js-sdk@2.25.0: + resolution: {integrity: sha512-jgGGWgEUq2dgyVQu6hebFm0WQTimNOr0gOXYXvKx25POQBwthLkHdhhG8MR3UM8xmnz8NAw2AxIr1DDcpAIYDQ==} requiresBuild: true dependencies: jwt-decode: 4.0.0 @@ -7266,8 +7455,8 @@ packages: - encoding dev: false - /@descope/web-components-ui@1.0.348: - resolution: {integrity: sha512-QKlKbm4DT3hxZoF83P8JW3MPizh42NYMk+FD7/fetnp/bU4LkfdQyHBHWjmudfgdiVKLuaTuPioeSnCmsnOHlw==} + /@descope/web-components-ui@1.0.368: + resolution: {integrity: sha512-b8U0HyL9bxJQCU0U4t999FwTeV1y0F1uYc1jOz0oZ06mA/DXeoNMQrpvs0IOqsSPnXsJF+09NVaE4bnUM2GhyQ==} requiresBuild: true dependencies: '@vaadin/avatar': 24.3.4 @@ -7291,18 +7480,19 @@ packages: color: 4.2.3 element-internals-polyfill: 1.3.11 highlight.js: 11.10.0 - lint-staged: 15.1.0 + lint-staged: 15.2.7 + lodash.debounce: 4.0.8 lodash.merge: 4.6.2 markdown-it: 14.1.0 transitivePeerDependencies: - supports-color dev: true - /@descope/web-js-sdk@1.16.4: - resolution: {integrity: sha512-hXiVrgJrEp8zNSz0RdKB370cqAB8IlIha1/US/sSjUzL4IUTQp3kg2wdIjB6/bliQ6MJ9LHPUWyUTZHp6End3Q==} + /@descope/web-js-sdk@1.16.5: + resolution: {integrity: sha512-heMUtGA/IYm5f2/vB/msjUlgJ2L8+F373s0hg1yYsQuDBMJ7OhShweKx4qqFTIOStq9Hvj7H9jrg+uO/TqUrTw==} requiresBuild: true dependencies: - '@descope/core-js-sdk': 2.24.4 + '@descope/core-js-sdk': 2.25.0 '@fingerprintjs/fingerprintjs-pro': 3.9.9 js-cookie: 3.0.5 jwt-decode: 4.0.0 @@ -8212,6 +8402,11 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint-community/regexpp@4.11.1: + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.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} @@ -8245,10 +8440,10 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.6 espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -8324,7 +8519,7 @@ packages: deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -9220,14 +9415,14 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 dev: true /@npmcli/fs@3.1.1: resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.6.0 + semver: 7.6.3 dev: true /@npmcli/git@4.1.0: @@ -9240,7 +9435,7 @@ packages: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.6.3 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -9314,6 +9509,14 @@ packages: - nx dev: true + /@nrwl/devkit@19.3.2(nx@19.3.2): + resolution: {integrity: sha512-n3tFalVPUk1HAJ2VYNnF34yzB9j2+6swFUi4Y92PxD1vN7vrIXnNeaTx2qcee7JDjBpiJ7Zn0KLg2jwiH6hNwA==} + dependencies: + '@nx/devkit': 19.3.2(nx@19.3.2) + transitivePeerDependencies: + - nx + dev: true + /@nrwl/devkit@19.3.2(nx@19.5.2): resolution: {integrity: sha512-n3tFalVPUk1HAJ2VYNnF34yzB9j2+6swFUi4Y92PxD1vN7vrIXnNeaTx2qcee7JDjBpiJ7Zn0KLg2jwiH6hNwA==} dependencies: @@ -9322,10 +9525,10 @@ packages: - nx dev: true - /@nrwl/eslint-plugin-nx@19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.5.4): + /@nrwl/eslint-plugin-nx@19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.6.2): resolution: {integrity: sha512-OD9WYOpTCgMQWTwUKRUuXlVfegkbkqNqkVQ3hsftjTn1dkB8QbvMa9ajqDGU+pbQDLeMMwtjc4itVpUimvmudQ==} dependencies: - '@nx/eslint-plugin': 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.5.4) + '@nx/eslint-plugin': 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.6.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -9342,10 +9545,10 @@ packages: - verdaccio dev: true - /@nrwl/jest@19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.5.4): + /@nrwl/jest@19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.6.2): resolution: {integrity: sha512-h51VASZlVI3ah7k7p7UWdxRC5AJ3Fr2spVn+i5zpeKVyy9Zmq6duooN8wQLaLWCZFHztlmv+jxvIumolgHRblQ==} dependencies: - '@nx/jest': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.5.4) + '@nx/jest': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.6.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -9379,10 +9582,10 @@ packages: - verdaccio dev: true - /@nrwl/js@19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4): + /@nrwl/js@19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2): resolution: {integrity: sha512-ZgCoLsASIlp1xtYpWW/1ZxvKSb6BY3ZNXBmjoUW4LyN7Pk6su55gPAVt6JWIxSMm+HC+v+Cb4XFKZLdtuvE7bg==} dependencies: - '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4) + '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -9511,13 +9714,13 @@ packages: peerDependencies: nx: '>= 17 <= 20' dependencies: - '@nrwl/devkit': 19.3.2(nx@19.5.2) + '@nrwl/devkit': 19.3.2(nx@19.3.2) ejs: 3.1.9 enquirer: 2.3.6 - ignore: 5.3.1 + ignore: 5.3.2 minimatch: 9.0.3 nx: 19.3.2 - semver: 7.6.0 + semver: 7.6.3 tmp: 0.2.1 tslib: 2.6.3 yargs-parser: 21.1.1 @@ -9531,16 +9734,16 @@ packages: '@nrwl/devkit': 19.3.2(nx@19.5.2) ejs: 3.1.9 enquirer: 2.3.6 - ignore: 5.3.1 + ignore: 5.3.2 minimatch: 9.0.3 nx: 19.5.2 - semver: 7.6.0 + semver: 7.6.3 tmp: 0.2.1 tslib: 2.6.3 yargs-parser: 21.1.1 dev: true - /@nx/eslint-plugin@19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.5.4): + /@nx/eslint-plugin@19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.6.2): resolution: {integrity: sha512-ZhnFrnAKILA29EwiHQhUQnLfXleUH/YrDS3FUYBpwKnICAPXARsgb7Qi+3Uick0q4HlkL6xGRkkQSfA5cZ9Qtw==} peerDependencies: '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 @@ -9549,12 +9752,12 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/eslint-plugin-nx': 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.5.4) + '@nrwl/eslint-plugin-nx': 19.3.2(@types/node@20.14.9)(@typescript-eslint/parser@7.2.0)(eslint-config-prettier@9.1.0)(eslint@9.6.0)(nx@19.5.2)(typescript@5.6.2) '@nx/devkit': 19.3.2(nx@19.5.2) - '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4) - '@typescript-eslint/parser': 7.2.0(eslint@9.6.0)(typescript@5.5.4) - '@typescript-eslint/type-utils': 7.14.1(eslint@9.6.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.4) + '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2) + '@typescript-eslint/parser': 7.2.0(eslint@9.6.0)(typescript@5.6.2) + '@typescript-eslint/type-utils': 7.14.1(eslint@9.6.0)(typescript@5.6.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.6.2) chalk: 4.1.2 confusing-browser-globals: 1.0.11 eslint-config-prettier: 9.1.0(eslint@9.6.0) @@ -9603,15 +9806,15 @@ packages: - verdaccio dev: true - /@nx/jest@19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.5.4): + /@nx/jest@19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.6.2): resolution: {integrity: sha512-0net3o4xm8CITerKD4k847cKIrc3FqVcKVvqFGJRbDpIhNw4lrHvojorRsVoDJ+LtNuEzShtrXt1R/74Fk4GNA==} dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 - '@nrwl/jest': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.5.4) + '@nrwl/jest': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(ts-node@10.9.2)(typescript@5.6.2) '@nx/devkit': 19.3.2(nx@19.5.2) - '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) + '@nx/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.6.2) chalk: 4.1.2 identity-obj-proxy: 3.0.0 jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) @@ -9686,7 +9889,7 @@ packages: - typescript dev: true - /@nx/js@19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4): + /@nx/js@19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2): resolution: {integrity: sha512-WXULhOHYDIAvs+SyDiRaNrpn1DmBAl3u7F5Jpu2VIyrcXgllrYGqUAykUqSu6Oyc2J+asfEtiG67I7UucTHLhA==} peerDependencies: verdaccio: ^5.0.4 @@ -9701,7 +9904,7 @@ packages: '@babel/preset-env': 7.24.7(@babel/core@7.24.7) '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) '@babel/runtime': 7.23.5 - '@nrwl/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.5.4) + '@nrwl/js': 19.3.2(@types/node@20.14.9)(nx@19.5.2)(typescript@5.6.2) '@nx/devkit': 19.3.2(nx@19.5.2) '@nx/workspace': 19.3.2 babel-plugin-const-enum: 1.2.0(@babel/core@7.24.7) @@ -9720,7 +9923,7 @@ packages: ora: 5.3.0 semver: 7.6.0 source-map-support: 0.5.19 - ts-node: 10.9.1(@types/node@20.14.9)(typescript@5.5.4) + ts-node: 10.9.1(@types/node@20.14.9)(typescript@5.6.2) tsconfig-paths: 4.2.0 tslib: 2.6.3 transitivePeerDependencies: @@ -10066,7 +10269,7 @@ packages: '@webcomponents/shadycss': 1.11.2 '@webcomponents/webcomponentsjs': 2.8.0 arrify: 2.0.1 - browserslist: 4.23.2 + browserslist: 4.23.3 chokidar: 3.5.3 clean-css: 5.3.2 clone: 2.1.2 @@ -10117,13 +10320,13 @@ packages: node-gyp-build: 4.8.1 dev: true - /@phenomnomnominal/tsquery@5.0.1(typescript@5.5.4): + /@phenomnomnominal/tsquery@5.0.1(typescript@5.6.2): resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} peerDependencies: typescript: ^3 || ^4 || ^5 dependencies: esquery: 1.5.0 - typescript: 5.5.4 + typescript: 5.6.2 dev: true /@pkgjs/parseargs@0.11.0: @@ -10209,7 +10412,7 @@ packages: estree-walker: 2.0.2 glob: 10.4.2 is-reference: 1.2.1 - magic-string: 0.30.8 + magic-string: 0.30.11 rollup: 2.79.1 dev: true @@ -10227,7 +10430,7 @@ packages: estree-walker: 2.0.2 glob: 10.4.2 is-reference: 1.2.1 - magic-string: 0.30.8 + magic-string: 0.30.11 rollup: 3.29.4 dev: true @@ -10263,7 +10466,7 @@ packages: estree-walker: 2.0.2 glob: 10.4.2 is-reference: 1.2.1 - magic-string: 0.30.8 + magic-string: 0.30.11 rollup: 4.14.3 dev: true @@ -10388,6 +10591,24 @@ packages: rollup: 3.29.4 dev: true + /@rollup/plugin-node-resolve@15.2.3(rollup@4.14.3): + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.4 + rollup: 4.14.3 + dev: true + /@rollup/plugin-replace@5.0.2(rollup@2.79.1): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} @@ -10458,6 +10679,20 @@ packages: rollup: 2.79.1 dev: true + /@rollup/plugin-replace@5.0.7(rollup@4.14.3): + resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + magic-string: 0.30.10 + rollup: 4.14.3 + dev: true + /@rollup/plugin-terser@0.4.1(rollup@4.13.0): resolution: {integrity: sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==} engines: {node: '>=14.0.0'} @@ -10568,6 +10803,26 @@ packages: typescript: 5.4.5 dev: true + /@rollup/plugin-typescript@11.1.6(rollup@4.14.3)(tslib@2.6.3)(typescript@5.5.4): + resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + resolve: 1.22.4 + rollup: 4.14.3 + tslib: 2.6.3 + typescript: 5.5.4 + dev: true + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(tslib@2.6.3)(typescript@5.4.5): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} @@ -11134,14 +11389,14 @@ packages: /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - tslib: 2.7.0 + tslib: 2.6.3 dev: false /@swc/helpers@0.5.5: resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: '@swc/counter': 0.1.3 - tslib: 2.7.0 + tslib: 2.6.3 dev: true /@swc/types@0.1.12: @@ -11183,8 +11438,8 @@ packages: engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.23.5 - '@types/aria-query': 5.0.1 + '@babel/runtime': 7.25.6 + '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 @@ -11197,8 +11452,8 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.23.5 - '@types/aria-query': 5.0.1 + '@babel/runtime': 7.25.6 + '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 @@ -11243,13 +11498,13 @@ packages: optional: true dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.25.6 '@types/jest': 29.5.12 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + jest: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) lodash: 4.17.21 redent: 3.0.0 dev: true @@ -11364,7 +11619,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.4 + minimatch: 9.0.5 dev: true /@tybys/wasm-util@0.9.0: @@ -11634,8 +11889,8 @@ packages: undici-types: 5.26.5 dev: true - /@types/node@22.5.4: - resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + /@types/node@22.5.5: + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} dependencies: undici-types: 6.19.8 dev: true @@ -11693,8 +11948,8 @@ packages: csstype: 3.1.3 dev: true - /@types/react@18.3.5: - resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} + /@types/react@18.3.6: + resolution: {integrity: sha512-CnGaRYNu2iZlkGXGrOYtdg5mLK8neySj0woZ4e2wF/eli2E6Sazmq5X+Nrj6OBrrFVQfJWTUFeqAzoRhWQXYvg==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -11887,7 +12142,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.4.5) @@ -11916,7 +12171,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) @@ -11934,7 +12189,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.2.0)(eslint@9.6.0)(typescript@5.5.4): + /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.2.0)(eslint@9.6.0)(typescript@5.6.2): resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -11946,17 +12201,17 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.2.0(eslint@9.6.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.2.0(eslint@9.6.0)(typescript@5.6.2) '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/type-utils': 7.15.0(eslint@9.6.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 7.15.0(eslint@9.6.0)(typescript@5.6.2) + '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.15.0 eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true @@ -11972,7 +12227,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) @@ -11988,6 +12243,33 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -11999,7 +12281,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) @@ -12119,6 +12401,27 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + eslint: 8.57.0 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -12140,7 +12443,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.2.0(eslint@9.6.0)(typescript@5.5.4): + /@typescript-eslint/parser@7.2.0(eslint@9.6.0)(typescript@5.6.2): resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -12152,11 +12455,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 7.2.0 '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.2.0 debug: 4.3.4 eslint: 9.6.0 - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true @@ -12317,7 +12620,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@7.14.1(eslint@9.6.0)(typescript@5.5.4): + /@typescript-eslint/type-utils@7.14.1(eslint@9.6.0)(typescript@5.6.2): resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -12327,17 +12630,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.4) - '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.4) - debug: 4.3.7 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.6.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.6.2) + debug: 4.3.6 eslint: 9.6.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@7.15.0(eslint@9.6.0)(typescript@5.5.4): + /@typescript-eslint/type-utils@7.15.0(eslint@9.6.0)(typescript@5.6.2): resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -12347,12 +12650,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.6.2) + '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.6.2) debug: 4.3.4 eslint: 9.6.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true @@ -12377,6 +12680,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.7 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -12423,10 +12746,10 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.6.3 tsutils: 3.21.0(typescript@4.9.3) typescript: 4.9.3 transitivePeerDependencies: @@ -12444,10 +12767,10 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -12497,7 +12820,7 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.14.1(typescript@5.4.5): + /@typescript-eslint/typescript-estree@7.14.1(typescript@5.6.2): resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -12508,19 +12831,19 @@ packages: dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.7 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.4): - resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} + /@typescript-eslint/typescript-estree@7.15.0(typescript@5.6.2): + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -12528,21 +12851,21 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.7 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.4): - resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} + /@typescript-eslint/typescript-estree@7.18.0(typescript@5.4.5): + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -12550,20 +12873,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/visitor-keys': 7.15.0 - debug: 4.3.7 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + minimatch: 9.0.5 + 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/typescript-estree@7.18.0(typescript@5.4.5): + /@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4): resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -12574,13 +12897,13 @@ packages: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 transitivePeerDependencies: - supports-color dev: true @@ -12607,7 +12930,7 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.4): + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.6.2): resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -12623,8 +12946,8 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true @@ -12766,55 +13089,55 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/utils@7.14.1(eslint@9.6.0)(typescript@5.6.2): resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@typescript-eslint/scope-manager': 7.14.1 '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.6.2) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.14.1(eslint@9.6.0)(typescript@5.5.4): - resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} + /@typescript-eslint/utils@7.15.0(eslint@9.6.0)(typescript@5.6.2): + resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} 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.14.1 - '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.6.2) eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.15.0(eslint@9.6.0)(typescript@5.5.4): - resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} + /@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} 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.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.4) - eslint: 9.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4): resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -12823,7 +13146,7 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -12890,12 +13213,12 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vaadin/a11y-base@24.3.21: - resolution: {integrity: sha512-bfx3p5qVv0wLwQ5U0s6cvaOhVVt3tQb77ZFZ/14oCa0IsqemIQtkIwwy2Dg4flDAJVZLML/fTu6JpgiPAPTFQw==} + /@vaadin/a11y-base@24.3.22: + resolution: {integrity: sha512-QrVsB7R+WGHlwEzVyvhwL6HvAGErF6CHTDBEyvKyt3jmjIqRDiCBGjvq6g/SHYUUNQNH1u892ANXGHLAQGGqLQ==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 + '@vaadin/component-base': 24.3.22 lit: 3.2.0 dev: true @@ -12904,12 +13227,12 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/tooltip': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/tooltip': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -12918,11 +13241,11 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -12931,12 +13254,12 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -12945,20 +13268,20 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/item': 24.3.21 - '@vaadin/lit-renderer': 24.3.21 - '@vaadin/overlay': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/item': 24.3.22 + '@vaadin/lit-renderer': 24.3.22 + '@vaadin/overlay': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true - /@vaadin/component-base@24.3.21: - resolution: {integrity: sha512-ntOZFSxHKyWLpQaF7uELJY8uumYWr+PLA5FsoHzvBak278lEc4WQRDaPd8cyReZCC/+SlRu6lBq/iismTuTBEg==} + /@vaadin/component-base@24.3.22: + resolution: {integrity: sha512-7BPgiDw1icpk9Ngw4uhsfIOqWRc6beeJnDpnyIOKoaLZUtoQOwNx1IQdH7mwwyEevbi86585JP/LS6p5k1dSLw==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 @@ -12972,12 +13295,12 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -12986,15 +13309,15 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 + '@vaadin/a11y-base': 24.3.22 '@vaadin/button': 24.3.4 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/overlay': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/overlay': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13003,33 +13326,33 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/lit-renderer': 24.3.21 - '@vaadin/overlay': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/lit-renderer': 24.3.22 + '@vaadin/overlay': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true /@vaadin/email-field@24.3.4: resolution: {integrity: sha512-SFe6qlVg+SjH9Z6fV7izYi/KUMFhZASOj9Y1IMvJfYe4qHmRArzur27hgnFRZF936Bv7ToQP6XzucwGq9L+z1Q==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 + '@vaadin/component-base': 24.3.22 '@vaadin/text-field': 24.3.4 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true - /@vaadin/field-base@24.3.21: - resolution: {integrity: sha512-oNWQnjkzLkBkKPWhp9OQpcBlecq7EW/ISO3URuReYwXKJP7qmKSIRXhIfMVOaLGvu2YGRGabt0chRiDf6H+FbA==} + /@vaadin/field-base@24.3.22: + resolution: {integrity: sha512-ZY799Clzqt6H7UUsdHuxz0jXhbVP1t5WbxzWest5s5cWBaUw089wBh0H8LBUobFM1LUu5/AYW6II7W3R2Dqi2w==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 lit: 3.2.0 dev: true @@ -13038,24 +13361,24 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 + '@vaadin/a11y-base': 24.3.22 '@vaadin/checkbox': 24.3.4 - '@vaadin/component-base': 24.3.21 - '@vaadin/lit-renderer': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/lit-renderer': 24.3.22 '@vaadin/text-field': 24.3.4 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true - /@vaadin/icon@24.3.21: - resolution: {integrity: sha512-vinG+x9r14ovnNYojbBIh9hDiJOu3uaBMvVdfY7sOtcOfOeKNnA0p7gl66RBYxmjVD2P8K2WCb4Rn4i+iigzcg==} + /@vaadin/icon@24.3.22: + resolution: {integrity: sha512-zx6hzSBEtJthl4CS9AmOQIlvGeO+0913KebcmvJ/GV9SAF54nZNSo6KGVE5Njp7W32h1lSzPTw89O5Pre2Cjqg==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13064,9 +13387,9 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13074,34 +13397,34 @@ packages: resolution: {integrity: sha512-HK4c1Kq1tHabgGO6o/qLePi67lYBqkn7XD0M92fc6cwFSi8IerxEuKNaF71ZF8+32PXqhwT1IKgka2S9iUea8w==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/icon': 24.3.4 + '@vaadin/icon': 24.3.22 dev: true - /@vaadin/input-container@24.3.21: - resolution: {integrity: sha512-4EqlCv3L3k2iGVmNV+W0YbgjK+izIgOqWiHOMd17Gk5BmwrrWsxO+XUH5sDQZldbGDfwdqYBrzF1x5lPZ+zWbw==} + /@vaadin/input-container@24.3.22: + resolution: {integrity: sha512-YUULDjZ96K89ChHsCfta9flWc0ZJTgcDX0HpulnQDkCsZ7EghArZ+fJtjy9jSsDdx69R5R9CnoRQOgMT/cPd7Q==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true - /@vaadin/item@24.3.21: - resolution: {integrity: sha512-+AKTzbNBLc47uK7YMy+5EFfbEwF4VWpoL+XCpIZJWDOdQ0WxvYft02aLKV4+xUwzfSA0Q3aFRgcOrg+XGFeb1w==} + /@vaadin/item@24.3.22: + resolution: {integrity: sha512-aFRBar2BvgCAfKU4AijQdymOGtYCES+Xy7LHGWQTlQgQ36wk7ZZ3rHLn3jIdnD8ryye3buaQpxqquQrv8/KFCQ==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true - /@vaadin/lit-renderer@24.3.21: - resolution: {integrity: sha512-hPYt7J1NOG+8LVn+n40o4100VX2yiH0cUpnSfCE0nDon5cDCytik/cOb31dh2WJT753JsDJyqEfwDq5yOGi1Dg==} + /@vaadin/lit-renderer@24.3.22: + resolution: {integrity: sha512-LmbjpL6dGwbCZBpnpIUIOgknNA6LftcdIwyBqiywOS3i8fuEMwzXNuK+oUYPfbe4DZnJn0/51AJZwB5fSzsCRA==} dependencies: lit: 3.2.0 dev: true @@ -13110,28 +13433,28 @@ packages: resolution: {integrity: sha512-35BlqMDcCl/g/1rSMqCUnAfauYnWRXRLgET1ai7/WOe5dlqxaHCWt1ndvNnHGOtvGgrGb71YiVxBx80zHPtIjw==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 + '@vaadin/a11y-base': 24.3.22 '@vaadin/combo-box': 24.3.4 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/item': 24.3.21 - '@vaadin/lit-renderer': 24.3.21 - '@vaadin/overlay': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/item': 24.3.22 + '@vaadin/lit-renderer': 24.3.22 + '@vaadin/overlay': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true /@vaadin/notification@24.3.4: resolution: {integrity: sha512-ovpjQu7ETvFYMC2LX4rGXnROpf9p4YSlMhEmBwf7NiR+Mg9LyrIzKqvdRcAYbHvs6TDjr898i70/95xzDXpljQ==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/lit-renderer': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/lit-renderer': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13140,26 +13463,26 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true - /@vaadin/overlay@24.3.21: - resolution: {integrity: sha512-6LX11I4x0AGvNVmyb9Wvm/nH433RWJw9dfLpBRPDVQp6+pnOPFUDYV45/aU0Eqd4xux13muIHJ2ac/4SsOnrvg==} + /@vaadin/overlay@24.3.22: + resolution: {integrity: sha512-mV+QoztKG9OQk5dNJlaaojpM8mB2JUB/Yf81u8hAwoMnMiCMN/st2GECMjPEFVEwhKKgLUE3yd5HQcQtOtmTmg==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true /@vaadin/password-field@24.3.4: @@ -13167,11 +13490,11 @@ packages: dependencies: '@polymer/polymer': 3.5.1 '@vaadin/button': 24.3.4 - '@vaadin/component-base': 24.3.21 + '@vaadin/component-base': 24.3.22 '@vaadin/text-field': 24.3.4 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true /@vaadin/radio-group@24.3.4: @@ -13179,12 +13502,12 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13193,13 +13516,13 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true @@ -13208,52 +13531,52 @@ packages: dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/field-base': 24.3.21 - '@vaadin/input-container': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/field-base': 24.3.22 + '@vaadin/input-container': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 lit: 3.2.0 dev: true - /@vaadin/tooltip@24.3.21: - resolution: {integrity: sha512-DgXlktqW0q3c2QPj7ypfbmOW5Qfy+MAz3yM7PYMAzUOEReFJbMEWNB/dCAlAGZjSrMyGjLNGeD2ppsgKXSozqA==} + /@vaadin/tooltip@24.3.22: + resolution: {integrity: sha512-eOhjattZ+vAwZ6z77TMnh2SvJS1nQdwbdJhtbejKJDerBOJygJVnGDdePZ5ck4+d28gipGkyOo9Ij1LLswESrg==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 '@polymer/polymer': 3.5.1 - '@vaadin/a11y-base': 24.3.21 - '@vaadin/component-base': 24.3.21 - '@vaadin/overlay': 24.3.21 - '@vaadin/vaadin-lumo-styles': 24.3.21 - '@vaadin/vaadin-material-styles': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/a11y-base': 24.3.22 + '@vaadin/component-base': 24.3.22 + '@vaadin/overlay': 24.3.22 + '@vaadin/vaadin-lumo-styles': 24.3.22 + '@vaadin/vaadin-material-styles': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true /@vaadin/vaadin-development-mode-detector@2.0.7: resolution: {integrity: sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==} dev: true - /@vaadin/vaadin-lumo-styles@24.3.21: - resolution: {integrity: sha512-bqZ2Y707avKH+Xs0jtW0CxB5WBWq0XX0YVJbaIc7rmR8HdAafbaFUl70PEFzkk058uw+axFsjvuAQL/PRD8rSA==} + /@vaadin/vaadin-lumo-styles@24.3.22: + resolution: {integrity: sha512-uHEtzfk8u2k5iTknIaOhbIEHH6VcuiLZeFs7p4V9a01E5KkBcBFlOPY3hMgPua3yPVJKDNCmK1lzG8Qt/IrArg==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/icon': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/icon': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true - /@vaadin/vaadin-material-styles@24.3.21: - resolution: {integrity: sha512-otzyvMtFesV9hc9KhNnH33Z137M3q9kTtTxhFKWasDLDh3erp5fV4+PFb6GCdKuw8UCruNcOc5i2Q/Ln/19Rsg==} + /@vaadin/vaadin-material-styles@24.3.22: + resolution: {integrity: sha512-sCoZimM96Rj7i9DWCg3LsJq4EsLkJcj7U8NmbCo+XnRtGykElBb/xc3fJiAC8uuf39Yj6V8BbAahuq3ulwaRig==} dependencies: '@polymer/polymer': 3.5.1 - '@vaadin/component-base': 24.3.21 - '@vaadin/vaadin-themable-mixin': 24.3.21 + '@vaadin/component-base': 24.3.22 + '@vaadin/vaadin-themable-mixin': 24.3.22 dev: true - /@vaadin/vaadin-themable-mixin@24.3.21: - resolution: {integrity: sha512-LRH+LXUGfLfWvw/25uAP3UN3rOjR227cqPEW3zGqo4FzcljzYMNJlALEzXMPbaSkb8kthisdVA6kYBZ/WyCUgw==} + /@vaadin/vaadin-themable-mixin@24.3.22: + resolution: {integrity: sha512-u+r0UXtCzMoZbR1UKQTPWUZEnkXlxwRuxjpNCAdyumqbFMMHd5yw1/LbXertouzj60CN3SUU1FXLtjCgFOeRXQ==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 lit: 3.2.0 @@ -13358,7 +13681,7 @@ packages: '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.24.7) '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.25.6 '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.24.7)(vue@3.4.31) babel-plugin-dynamic-import-node: 2.3.3 @@ -13468,7 +13791,7 @@ packages: dependencies: '@babel/core': 7.24.7 '@vue/babel-preset-app': 5.0.8(@babel/core@7.24.7)(vue@3.4.31) - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/cli-shared-utils': 5.0.8 babel-loader: 8.3.0(@babel/core@7.24.7)(webpack@5.93.0) thread-loader: 3.0.4(webpack@5.93.0) @@ -13490,7 +13813,7 @@ packages: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 eslint: '>=7.5.0' dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/cli-shared-utils': 5.0.8 eslint: 7.32.0 eslint-webpack-plugin: 3.2.0(eslint@7.32.0)(webpack@5.93.0) @@ -13510,7 +13833,7 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/cli-shared-utils': 5.0.8 transitivePeerDependencies: - encoding @@ -13532,7 +13855,7 @@ packages: dependencies: '@babel/core': 7.24.7 '@types/webpack-env': 1.18.5 - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/cli-shared-utils': 5.0.8 babel-loader: 8.3.0(@babel/core@7.24.7)(webpack@5.93.0) fork-ts-checker-webpack-plugin: 6.5.3(eslint@7.32.0)(typescript@5.4.5)(webpack@5.93.0) @@ -13571,7 +13894,7 @@ packages: '@babel/core': 7.24.7 '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.7) '@types/jest': 27.5.2 - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) '@vue/cli-shared-utils': 5.0.8 '@vue/vue3-jest': 27.0.0(@babel/core@7.25.2)(babel-jest@27.5.1)(jest@29.7.0)(ts-jest@27.1.5)(typescript@5.4.5)(vue@3.4.31) babel-jest: 27.5.1(@babel/core@7.24.7) @@ -13591,10 +13914,10 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31) dev: true - /@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.3)(prettier@2.8.8)(vue@3.4.31): + /@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.6)(prettier@2.8.8)(vue@3.4.31): resolution: {integrity: sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==} engines: {node: ^12.0.0 || >= 14.0.0} hasBin: true @@ -13634,7 +13957,7 @@ packages: '@vue/cli-plugin-vuex': 5.0.8(@vue/cli-service@5.0.8) '@vue/cli-shared-utils': 5.0.8 '@vue/component-compiler-utils': 3.3.0 - '@vue/vue-loader-v15': /vue-loader@15.11.1(@vue/compiler-sfc@3.5.3)(css-loader@6.11.0)(prettier@2.8.8)(webpack@5.93.0) + '@vue/vue-loader-v15': /vue-loader@15.11.1(@vue/compiler-sfc@3.5.6)(css-loader@6.11.0)(prettier@2.8.8)(webpack@5.93.0) '@vue/web-component-wrapper': 1.3.0 acorn: 8.11.3 acorn-walk: 8.2.0 @@ -13671,7 +13994,7 @@ packages: ssri: 8.0.1 terser-webpack-plugin: 5.3.10(webpack@5.93.0) thread-loader: 3.0.4(webpack@5.93.0) - vue-loader: 17.4.2(@vue/compiler-sfc@3.5.3)(vue@3.4.31)(webpack@5.93.0) + vue-loader: 17.4.2(@vue/compiler-sfc@3.5.6)(vue@3.4.31)(webpack@5.93.0) vue-style-loader: 4.1.3 webpack: 5.93.0 webpack-bundle-analyzer: 4.10.2 @@ -13780,14 +14103,14 @@ packages: source-map-js: 1.2.0 dev: true - /@vue/compiler-core@3.5.3: - resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==} + /@vue/compiler-core@3.5.6: + resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==} dependencies: '@babel/parser': 7.25.6 - '@vue/shared': 3.5.3 + '@vue/shared': 3.5.6 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 dev: true /@vue/compiler-dom@3.4.31: @@ -13797,11 +14120,11 @@ packages: '@vue/shared': 3.4.31 dev: true - /@vue/compiler-dom@3.5.3: - resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==} + /@vue/compiler-dom@3.5.6: + resolution: {integrity: sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==} dependencies: - '@vue/compiler-core': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-core': 3.5.6 + '@vue/shared': 3.5.6 dev: true /@vue/compiler-sfc@3.4.31: @@ -13813,23 +14136,23 @@ packages: '@vue/compiler-ssr': 3.4.31 '@vue/shared': 3.4.31 estree-walker: 2.0.2 - magic-string: 0.30.10 + magic-string: 0.30.11 postcss: 8.4.39 source-map-js: 1.2.0 dev: true - /@vue/compiler-sfc@3.5.3: - resolution: {integrity: sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==} + /@vue/compiler-sfc@3.5.6: + resolution: {integrity: sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==} dependencies: '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.3 - '@vue/compiler-dom': 3.5.3 - '@vue/compiler-ssr': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-core': 3.5.6 + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-ssr': 3.5.6 + '@vue/shared': 3.5.6 estree-walker: 2.0.2 magic-string: 0.30.11 - postcss: 8.4.45 - source-map-js: 1.2.0 + postcss: 8.4.47 + source-map-js: 1.2.1 dev: true /@vue/compiler-ssr@3.4.31: @@ -13839,11 +14162,11 @@ packages: '@vue/shared': 3.4.31 dev: true - /@vue/compiler-ssr@3.5.3: - resolution: {integrity: sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==} + /@vue/compiler-ssr@3.5.6: + resolution: {integrity: sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==} dependencies: - '@vue/compiler-dom': 3.5.3 - '@vue/shared': 3.5.3 + '@vue/compiler-dom': 3.5.6 + '@vue/shared': 3.5.6 dev: true /@vue/component-compiler-utils@3.3.0: @@ -13978,8 +14301,8 @@ packages: resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} dev: true - /@vue/shared@3.5.3: - resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==} + /@vue/shared@3.5.6: + resolution: {integrity: sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==} dev: true /@vue/test-utils@2.4.6: @@ -14319,7 +14642,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.7 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -14697,7 +15020,7 @@ packages: caniuse-lite: 1.0.30001641 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true @@ -14713,7 +15036,7 @@ packages: caniuse-lite: 1.0.30001641 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: true @@ -14938,7 +15261,7 @@ packages: /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.25.6 cosmiconfig: 6.0.0 resolve: 1.22.4 dev: true @@ -15402,8 +15725,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.18 + caniuse-lite: 1.0.30001655 + electron-to-chromium: 1.5.13 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -15584,8 +15907,8 @@ packages: /caniuse-lite@1.0.30001641: resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==} - /caniuse-lite@1.0.30001658: - resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} + /caniuse-lite@1.0.30001655: + resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} /case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -16307,7 +16630,7 @@ packages: handlebars: 4.7.7 json-stringify-safe: 5.0.1 meow: 12.1.1 - semver: 7.6.0 + semver: 7.6.3 split2: 4.2.0 dev: true @@ -16459,7 +16782,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.9)(cosmiconfig@9.0.0)(typescript@5.5.4): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.9)(cosmiconfig@9.0.0)(typescript@5.6.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -16468,9 +16791,9 @@ packages: typescript: '>=4' dependencies: '@types/node': 20.14.9 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) jiti: 1.21.0 - typescript: 5.5.4 + typescript: 5.6.2 dev: true /cosmiconfig@6.0.0: @@ -16511,7 +16834,7 @@ packages: typescript: 4.9.3 dev: true - /cosmiconfig@9.0.0(typescript@5.5.4): + /cosmiconfig@9.0.0(typescript@5.6.2): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -16524,7 +16847,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.5.4 + typescript: 5.6.2 dev: true /create-jest@29.7.0(@types/node@20.14.11)(ts-node@10.9.2): @@ -16584,7 +16907,7 @@ packages: - ts-node dev: true - /create-jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2): + /create-jest@29.7.0(@types/node@22.5.5)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -16593,7 +16916,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -16708,7 +17031,7 @@ packages: postcss-modules-scope: 3.2.0(postcss@8.4.39) postcss-modules-values: 4.0.0(postcss@8.4.39) postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.3 webpack: 5.88.2(esbuild@0.18.17) dev: true @@ -17172,7 +17495,7 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 4.3.7 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -17380,7 +17703,7 @@ packages: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.6.0 + semver: 7.6.3 dev: true /ee-first@1.1.1: @@ -17407,8 +17730,8 @@ packages: resolution: {integrity: sha512-OCcF+LwdgFGcsYPYC5keEEFC2XT0gBhrYbeGzHCx7i9qRFbzO/AqTmc/C/1xNhJj+JA7rzlN7mpBuStshh96Cg==} dev: true - /electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} + /electron-to-chromium@1.5.13: + resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} /element-internals-polyfill@1.3.11: resolution: {integrity: sha512-SQLQNVY4wMdpnP/F/HtalJbpEenQd46Avtjm5hvUdeTs3QU0zHFNX5/AmtQIPPcfzePb0ipCkQGY4GwYJIhLJA==} @@ -17464,7 +17787,7 @@ packages: resolution: {integrity: sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.7 + debug: 4.3.6 engine.io-parser: 5.0.6 ws: 8.11.0 xmlhttprequest-ssl: 2.0.0 @@ -17490,7 +17813,7 @@ packages: base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.7 + debug: 4.3.6 engine.io-parser: 5.0.6 ws: 8.11.0 transitivePeerDependencies: @@ -17880,7 +18203,7 @@ packages: eslint: '>=6.0.0' dependencies: eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.3 dev: true /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.28.1)(eslint@8.57.0): @@ -17988,7 +18311,7 @@ packages: - eslint-plugin-import dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -18002,7 +18325,7 @@ packages: eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.28.1)(eslint@8.57.0) eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0) - eslint-plugin-react: 7.35.2(eslint@8.57.0) + eslint-plugin-react: 7.36.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 @@ -18028,7 +18351,7 @@ packages: object.entries: 1.1.8 dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.35.2)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.36.1)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -18042,7 +18365,7 @@ packages: eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0) - eslint-plugin-react: 7.35.2(eslint@8.57.0) + eslint-plugin-react: 7.36.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 @@ -18397,7 +18720,7 @@ packages: eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 eslint: 8.57.0 eslint-compat-utils: 0.5.0(eslint@8.57.0) dev: true @@ -18583,12 +18906,28 @@ packages: eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 dependencies: '@babel/runtime': 7.23.5 - '@testing-library/dom': 8.20.1 + '@testing-library/dom': 8.20.1 + eslint: 8.57.0 + requireindex: 1.2.0 + dev: true + + /eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0): + resolution: {integrity: sha512-yBqvFsnpS5Sybjoq61cJiUsenRkC9K32hYQBFS9doBR7nbQZZ5FyO+X7MlmfM1C48Ejx/qTuOCgukDUNyzKZ7A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} + peerDependencies: + '@testing-library/dom': ^8.0.0 || ^9.0.0 || ^10.0.0 + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + peerDependenciesMeta: + '@testing-library/dom': + optional: true + dependencies: + '@babel/runtime': 7.23.5 + '@testing-library/dom': 10.1.0 eslint: 8.57.0 requireindex: 1.2.0 dev: true - /eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0): + /eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.4.0)(eslint@8.57.0): resolution: {integrity: sha512-yBqvFsnpS5Sybjoq61cJiUsenRkC9K32hYQBFS9doBR7nbQZZ5FyO+X7MlmfM1C48Ejx/qTuOCgukDUNyzKZ7A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} peerDependencies: @@ -18599,7 +18938,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.5 - '@testing-library/dom': 10.1.0 + '@testing-library/dom': 10.4.0 eslint: 8.57.0 requireindex: 1.2.0 dev: true @@ -18660,7 +18999,7 @@ packages: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.4.5) '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.4.5) eslint: 8.56.0 - jest: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + jest: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) transitivePeerDependencies: - supports-color - typescript @@ -18680,7 +19019,7 @@ packages: optional: true dependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) transitivePeerDependencies: @@ -18702,7 +19041,29 @@ packages: optional: true dependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.4): + resolution: {integrity: sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==} + engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) transitivePeerDependencies: @@ -18831,9 +19192,9 @@ packages: eslint-plugin-es-x: 7.6.0(eslint@8.57.0) get-tsconfig: 4.7.3 globals: 15.2.0 - ignore: 5.3.1 - minimatch: 9.0.4 - semver: 7.6.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.6.3 dev: true /eslint-plugin-no-only-tests@3.1.0: @@ -18963,6 +19324,27 @@ packages: synckit: 0.8.8 dev: true + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@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.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true + /eslint-plugin-promise@6.1.1(eslint@8.56.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -19060,8 +19442,8 @@ packages: string.prototype.matchall: 4.0.11 dev: true - /eslint-plugin-react@7.35.2(eslint@8.57.0): - resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==} + /eslint-plugin-react@7.36.1(eslint@8.57.0): + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -20325,7 +20707,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.3.1 glob: 7.2.3 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -20348,7 +20730,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.1 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -20669,7 +21051,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -20680,7 +21062,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -20743,7 +21125,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -20818,7 +21200,7 @@ packages: resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minimatch: 9.0.4 + minimatch: 9.0.5 dev: true /ignore@4.0.6: @@ -21406,7 +21788,7 @@ packages: '@babel/parser': 7.24.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color dev: true @@ -21424,7 +21806,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.7 + debug: 4.3.6 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -21606,7 +21988,7 @@ packages: - ts-node dev: true - /jest-cli@29.7.0(@types/node@22.5.4)(ts-node@10.9.2): + /jest-cli@29.7.0(@types/node@22.5.5)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -21620,10 +22002,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.1 @@ -21710,7 +22092,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -21792,13 +22174,13 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color dev: true - /jest-config@29.7.0(@types/node@22.5.4)(ts-node@10.9.2): + /jest-config@29.7.0(@types/node@22.5.5)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -21813,7 +22195,7 @@ packages: '@babel/core': 7.24.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.5.4 + '@types/node': 22.5.5 babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.2 ci-info: 3.8.0 @@ -21833,7 +22215,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@swc/core@1.7.1)(@types/node@22.5.4)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.7.1)(@types/node@22.5.5)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -22217,10 +22599,10 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.24.7 - '@babel/generator': 7.24.8 + '@babel/generator': 7.25.6 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) - '@babel/types': 7.24.8 + '@babel/types': 7.25.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -22235,7 +22617,7 @@ packages: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color dev: true @@ -22436,7 +22818,7 @@ packages: - ts-node dev: true - /jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2): + /jest@29.7.0(@types/node@22.5.5)(ts-node@10.9.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -22449,7 +22831,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@22.5.5)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -22664,7 +23046,7 @@ packages: acorn: 8.12.1 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.6.0 + semver: 7.6.3 dev: true /jsonc-parser@3.2.0: @@ -22769,7 +23151,7 @@ packages: /launch-editor@2.8.0: resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} dependencies: - picocolors: 1.0.1 + picocolors: 1.1.0 shell-quote: 1.8.1 dev: true @@ -22853,8 +23235,6 @@ packages: peerDependenciesMeta: webpack: optional: true - webpack-sources: - optional: true dependencies: webpack: 5.88.2(esbuild@0.18.17) webpack-sources: 3.2.3 @@ -22935,7 +23315,7 @@ packages: dependencies: chalk: 5.3.0 commander: 12.1.0 - debug: 4.3.4 + debug: 4.3.6 execa: 8.0.1 lilconfig: 3.1.2 listr2: 8.2.4 @@ -24056,7 +24436,7 @@ packages: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.6.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -24110,7 +24490,7 @@ packages: dependencies: hosted-git-info: 6.1.1 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 dev: true @@ -24120,7 +24500,7 @@ packages: dependencies: hosted-git-info: 7.0.1 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 dev: true @@ -24155,7 +24535,7 @@ packages: resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.6.0 + semver: 7.6.3 dev: true /npm-normalize-package-bin@3.0.1: @@ -24179,7 +24559,7 @@ packages: dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-name: 5.0.0 dev: true @@ -24348,7 +24728,7 @@ packages: flat: 5.0.2 front-matter: 4.0.2 fs-extra: 11.1.1 - ignore: 5.3.1 + ignore: 5.3.2 jest-diff: 29.7.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 @@ -24357,7 +24737,7 @@ packages: npm-run-path: 4.0.1 open: 8.4.2 ora: 5.3.0 - semver: 7.6.0 + semver: 7.6.3 string-width: 4.2.3 strong-log-transformer: 2.1.0 tar-stream: 2.2.0 @@ -24953,16 +25333,12 @@ packages: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} dev: true - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - /picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true /picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -25177,7 +25553,7 @@ packages: cosmiconfig: 8.3.6(typescript@4.9.3) jiti: 1.21.0 postcss: 8.4.31 - semver: 7.6.0 + semver: 7.6.3 webpack: 5.88.2(esbuild@0.18.17) transitivePeerDependencies: - typescript @@ -25474,7 +25850,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.0 source-map-js: 1.2.0 dev: false @@ -25483,7 +25859,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.0 source-map-js: 1.2.0 dev: true @@ -25492,17 +25868,17 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.0 source-map-js: 1.2.0 dev: true - /postcss@8.4.45: - resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} + /postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.1.0 - source-map-js: 1.2.0 + source-map-js: 1.2.1 dev: true /prelude-ls@1.1.2: @@ -25623,14 +25999,31 @@ packages: dependencies: execa: 5.1.1 find-up: 5.0.0 - ignore: 5.3.1 + ignore: 5.3.2 mri: 1.2.0 - picocolors: 1.0.0 + picocolors: 1.1.0 picomatch: 3.0.1 prettier: 3.1.0 tslib: 2.6.3 dev: true + /pretty-quick@4.0.0(prettier@3.3.3): + resolution: {integrity: sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + ignore: 5.3.2 + mri: 1.2.0 + picocolors: 1.1.0 + picomatch: 3.0.1 + prettier: 3.3.3 + tslib: 2.6.3 + dev: true + /pretty@2.0.0: resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} engines: {node: '>=0.10.0'} @@ -25831,7 +26224,7 @@ packages: peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.25.6 react: 18.3.1 dev: true @@ -26031,7 +26424,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.25.6 dev: true /regex-parser@2.3.0: @@ -26454,6 +26847,20 @@ packages: '@babel/code-frame': 7.24.7 dev: true + /rollup-plugin-dts@6.1.0(rollup@4.14.3)(typescript@5.5.4): + resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 + dependencies: + magic-string: 0.30.8 + rollup: 4.14.3 + typescript: 5.5.4 + optionalDependencies: + '@babel/code-frame': 7.24.7 + dev: true + /rollup-plugin-esbuild@6.1.1(esbuild@0.21.5)(rollup@4.14.3): resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} engines: {node: '>=14.18.0'} @@ -26648,12 +27055,12 @@ packages: typescript: 5.4.5 dev: true - /rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.5.3): + /rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.5.6): resolution: {integrity: sha512-oVvUd84d5u73M2HYM3XsMDLtZRIA/tw2U0dmHlXU2UWP5JARYHzh/U9vcxaN/x/9MrepY7VH3pHFeOhrWpxs/Q==} peerDependencies: '@vue/compiler-sfc': '*' dependencies: - '@vue/compiler-sfc': 3.5.3 + '@vue/compiler-sfc': 3.5.6 debug: 4.3.4 hash-sum: 2.0.0 rollup-pluginutils: 2.8.2 @@ -26672,7 +27079,7 @@ packages: peerDependencies: rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 dependencies: - magic-string: 0.30.10 + magic-string: 0.30.11 rollup: 2.79.1 dev: true @@ -27140,6 +27547,15 @@ packages: '@testing-library/dom': 10.1.0 dev: true + /shadow-dom-testing-library@1.10.0(@testing-library/dom@10.4.0): + resolution: {integrity: sha512-b1Hs5scPfEy6WsTL6CIhPS5suo0lFAkoGBe0tYW83Shcr0CcJuI7haDS40NoUlQo8pUUR+zAhXLiwbDsWZ0/xg==} + engines: {node: '>= 14', npm: '>= 7'} + peerDependencies: + '@testing-library/dom': '>= 8' + dependencies: + '@testing-library/dom': 10.4.0 + dev: true + /shady-css-scoped-element@0.0.2: resolution: {integrity: sha512-Dqfl70x6JiwYDujd33ZTbtCK0t52E7+H2swdWQNSTzfsolSa6LJHnTpN4T9OpJJEq4bxuzHRLFO9RBcy/UfrMQ==} dev: true @@ -27289,7 +27705,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.7 + debug: 4.3.6 engine.io-client: 6.4.0 socket.io-parser: 4.2.2 transitivePeerDependencies: @@ -27303,7 +27719,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.7 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: true @@ -27314,7 +27730,7 @@ packages: dependencies: accepts: 1.3.8 base64id: 2.0.0 - debug: 4.3.7 + debug: 4.3.6 engine.io: 6.4.1 socket.io-adapter: 2.5.2 socket.io-parser: 4.2.2 @@ -27337,7 +27753,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.3.6 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -27355,6 +27771,11 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: true + /source-map-loader@4.0.1(webpack@5.88.2): resolution: {integrity: sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==} engines: {node: '>= 14.15.0'} @@ -27433,7 +27854,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.7 + debug: 4.3.6 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -27447,7 +27868,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.7 + debug: 4.3.6 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -27843,7 +28264,7 @@ packages: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.1 + picocolors: 1.1.0 stable: 0.1.8 dev: true @@ -28177,6 +28598,15 @@ packages: typescript: 5.5.4 dev: true + /ts-api-utils@1.3.0(typescript@5.6.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.6.2 + dev: true + /ts-jest@27.1.5(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1)(jest@29.7.0)(typescript@5.4.5): resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -28437,6 +28867,43 @@ packages: yargs-parser: 21.1.1 dev: true + /ts-jest@29.1.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.6.2): + resolution: {integrity: sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.25.2 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.0 + typescript: 5.6.2 + yargs-parser: 21.1.1 + dev: true + /ts-loader@9.5.1(typescript@5.4.5)(webpack@5.93.0): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} @@ -28515,7 +28982,7 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@20.14.9)(typescript@5.5.4): + /ts-node@10.9.1(@types/node@20.14.9)(typescript@5.6.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -28541,12 +29008,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.2(@swc/core@1.7.1)(@types/node@22.5.4)(typescript@5.4.5): + /ts-node@10.9.2(@swc/core@1.7.1)(@types/node@22.5.5)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -28566,7 +29033,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 22.5.4 + '@types/node': 22.5.5 acorn: 8.12.1 acorn-walk: 8.2.0 arg: 4.1.3 @@ -28640,6 +29107,37 @@ packages: yn: 3.1.1 dev: true + /ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.14.9 + acorn: 8.12.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: @@ -28678,9 +29176,6 @@ packages: /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - /tsutils@3.21.0(typescript@4.9.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -28706,7 +29201,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@tufjs/models': 1.0.4 - debug: 4.3.7 + debug: 4.3.6 make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -28851,6 +29346,12 @@ packages: hasBin: true dev: true + /typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ua-parser-js@1.0.35: resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} dev: true @@ -28975,7 +29476,7 @@ packages: dependencies: browserslist: 4.23.2 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 dev: true /update-browserslist-db@1.1.0(browserslist@4.23.3): @@ -28986,7 +29487,7 @@ packages: dependencies: browserslist: 4.23.3 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} @@ -29139,7 +29640,7 @@ packages: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: true - /vue-loader@15.11.1(@vue/compiler-sfc@3.5.3)(css-loader@6.11.0)(prettier@2.8.8)(webpack@5.93.0): + /vue-loader@15.11.1(@vue/compiler-sfc@3.5.6)(css-loader@6.11.0)(prettier@2.8.8)(webpack@5.93.0): resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} peerDependencies: '@vue/compiler-sfc': ^3.0.8 @@ -29158,7 +29659,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@vue/compiler-sfc': 3.5.3 + '@vue/compiler-sfc': 3.5.6 '@vue/component-compiler-utils': 3.3.0 css-loader: 6.11.0(webpack@5.93.0) hash-sum: 1.0.2 @@ -29223,7 +29724,7 @@ packages: - whiskers dev: true - /vue-loader@17.4.2(@vue/compiler-sfc@3.5.3)(vue@3.4.31)(webpack@5.93.0): + /vue-loader@17.4.2(@vue/compiler-sfc@3.5.6)(vue@3.4.31)(webpack@5.93.0): resolution: {integrity: sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==} peerDependencies: '@vue/compiler-sfc': '*' @@ -29235,7 +29736,7 @@ packages: vue: optional: true dependencies: - '@vue/compiler-sfc': 3.5.3 + '@vue/compiler-sfc': 3.5.6 chalk: 4.1.2 hash-sum: 2.0.0 vue: 3.4.31(typescript@5.4.5) @@ -30091,7 +30592,7 @@ packages: tslib: 2.6.3 dev: true - file:packages/sdks/nextjs-sdk(@types/react@18.3.5)(next@13.5.3)(react@18.3.1): + file:packages/sdks/nextjs-sdk(@types/react@18.3.6)(next@13.5.3)(react@18.3.1): resolution: {directory: packages/sdks/nextjs-sdk, type: directory} id: file:packages/sdks/nextjs-sdk name: '@descope/nextjs-sdk' @@ -30105,11 +30606,11 @@ packages: '@descope/node-sdk': 1.6.9 '@descope/react-sdk': link:packages/sdks/react-sdk '@descope/web-component': link:packages/sdks/web-component - '@types/react': 18.3.5 + '@types/react': 18.3.6 next: 13.5.3(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@descope/web-js-sdk': 1.16.4 + '@descope/web-js-sdk': 1.16.5 transitivePeerDependencies: - encoding dev: false