From eb9c1aacfcc806f88eb6d228a6e858c35798312d Mon Sep 17 00:00:00 2001 From: Ben Polinsky Date: Tue, 7 May 2024 12:41:14 -0400 Subject: [PATCH] upgrade docs build tools, typescript, and eslint --- packages/browser/eslint.config.js | 22 + packages/browser/package.json | 18 +- packages/browser/src/Client.ts | 6 +- .../test/BrowserAuthorizationClient.test.ts | 2 +- packages/browser/src/types.ts | 14 +- packages/browser/src/utils.ts | 2 - packages/electron/README.md | 29 +- packages/electron/eslint.config.js | 19 + packages/electron/package.json | 18 +- .../integration-test/helpers/TestHelper.ts | 5 +- .../integration-test/helpers/loadConfig.ts | 5 +- .../electron/src/integration-test/types.ts | 3 + packages/electron/src/main/Client.ts | 80 +- .../electron/src/main/LoopbackWebServer.ts | 10 +- packages/electron/src/main/TokenStore.ts | 3 +- packages/electron/src/renderer/Client.ts | 2 +- .../src/test/MainAuthorizationClient.test.ts | 17 +- packages/node-cli/eslint.config.js | 19 + packages/node-cli/package.json | 8 +- packages/oidc-signin-tool/eslint.config.js | 19 + packages/oidc-signin-tool/package.json | 18 +- .../oidc-signin-tool/src/SignInAutomation.ts | 15 +- .../src/TestBrowserAuthorizationClient.ts | 11 +- .../src/certa/certaBackend.ts | 2 +- .../oidc-signin-tool/src/certa/certaCommon.ts | 3 + .../src/loginElectronMainAuthClient.ts | 6 +- .../src/test-integration/basic.test.ts | 16 +- .../src/test-integration/loadConfig.ts | 20 +- packages/service/eslint.config.js | 31 + packages/service/package.json | 34 +- packages/service/src/OIDCDiscoveryClient.ts | 1 - .../service/src/ServiceAuthorizationClient.ts | 4 +- packages/service/tsconfig.json | 3 +- pnpm-lock.yaml | 1996 +++++++++++------ 34 files changed, 1646 insertions(+), 815 deletions(-) create mode 100644 packages/browser/eslint.config.js create mode 100644 packages/electron/eslint.config.js create mode 100644 packages/node-cli/eslint.config.js create mode 100644 packages/oidc-signin-tool/eslint.config.js create mode 100644 packages/service/eslint.config.js diff --git a/packages/browser/eslint.config.js b/packages/browser/eslint.config.js new file mode 100644 index 00000000..3820e718 --- /dev/null +++ b/packages/browser/eslint.config.js @@ -0,0 +1,22 @@ +const iTwinPlugin = require("@itwin/eslint-plugin"); + +module.exports = [ + { + files: ["**/*.{ts,tsx}"], + ignores: ["**/integration-tests/**"], + ...iTwinPlugin.configs.iTwinjsRecommendedConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ignores: ["**/integration-tests/**"], + ...iTwinPlugin.configs.jsdocConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ignores: ["**/integration-tests/**"], + rules: { + "no-duplicate-imports": "off", + "@typescript-eslint/consistent-type-imports": "error", + }, + }, +]; diff --git a/packages/browser/package.json b/packages/browser/package.json index 780e41e3..c4cbb3bb 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -35,9 +35,9 @@ "oidc-client-ts": "^2.4.0" }, "devDependencies": { - "@itwin/build-tools": "^4.0.0-dev.93", + "@itwin/build-tools": "^4.6.0-dev.27", "@itwin/core-bentley": "^3.7.0", - "@itwin/eslint-plugin": "^3.7.0", + "@itwin/eslint-plugin": "^4.0.1", "@playwright/test": "~1.41.0", "@types/chai": "^4.2.22", "@types/mocha": "^8.2.3", @@ -46,26 +46,16 @@ "buffer": "~6.0.3", "chai": "^4.2.22", "dotenv": "~16.0.3", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "mocha": "^8.2.3", "nyc": "^15.1.0", "parcel": "~2.12.0", "process": "~0.11.10", "rimraf": "^3.0.2", "sinon": "^15.0.1", - "typescript": "~5.0.2" + "typescript": "~5.3.3" }, "peerDependencies": { "@itwin/core-bentley": "^3.3.0 || ^4.0.0" - }, - "eslintConfig": { - "plugins": [ - "@itwin" - ], - "extends": "plugin:@itwin/itwinjs-recommended", - "rules": { - "no-duplicate-imports": "off", - "@typescript-eslint/consistent-type-imports": "error" - } } } diff --git a/packages/browser/src/Client.ts b/packages/browser/src/Client.ts index bee3b894..123c692e 100644 --- a/packages/browser/src/Client.ts +++ b/packages/browser/src/Client.ts @@ -76,9 +76,6 @@ export class BrowserAuthorizationClient implements AuthorizationClient { /** * Merges the basic and advanced settings into a single configuration object consumable by the internal userManager. - * @param basicSettings - * @param advancedSettings - * @returns a promise resolving to UserManagerSettings */ protected async getUserManagerSettings(basicSettings: BrowserAuthorizationClientConfiguration, advancedSettings?: UserManagerSettings): Promise { let userManagerSettings: UserManagerSettings = { @@ -104,7 +101,6 @@ export class BrowserAuthorizationClient implements AuthorizationClient { /** * Creates the internal user manager and binds all relevant events to their respective callback function. - * @param settings */ protected createUserManager(settings: UserManagerSettings): UserManager { const userManager = new UserManager(settings); @@ -434,7 +430,7 @@ export class BrowserAuthorizationClient implements AuthorizationClient { private static loadSettingsFromStorage( client: BrowserAuthorizationClient, - store: Storage + store: Storage, ) { const url = new URL(window.location.href); const nonce = url.searchParams.get("state"); diff --git a/packages/browser/src/test/BrowserAuthorizationClient.test.ts b/packages/browser/src/test/BrowserAuthorizationClient.test.ts index bea3c254..96023448 100644 --- a/packages/browser/src/test/BrowserAuthorizationClient.test.ts +++ b/packages/browser/src/test/BrowserAuthorizationClient.test.ts @@ -43,7 +43,7 @@ describe("BrowserAuthorizationClient", () => { assert.equal(settings.redirectUri, "test_redirectUri"); assert.equal( settings.postSignoutRedirectUri, - "test_postSignoutRedirectUri" + "test_postSignoutRedirectUri", ); assert.equal(settings.scope, "test_scope"); assert.equal(settings.responseType, "test_responseType"); diff --git a/packages/browser/src/types.ts b/packages/browser/src/types.ts index b75b6f9b..e20fbec2 100644 --- a/packages/browser/src/types.ts +++ b/packages/browser/src/types.ts @@ -44,14 +44,7 @@ export interface BrowserAuthorizationClientConfiguration /** A space-delimited collection of individual access claims specified by the authority. The user must consent to all specified scopes in order to grant authorization */ readonly scope: string; /** The mechanism (or authentication flow) used to acquire auth information from the user through the authority */ - readonly responseType?: - | "code" - | "id_token" - | "id_token token" - | "code id_token" - | "code token" - | "code id_token token" - | string; + readonly responseType?: string; /** if true, do NOT attempt a silent signIn on startup of the application */ readonly noSilentSignInOnAppStartup?: boolean; /** The redirect URL used for silent sign in and renew. If not provided, will default to redirectUri. */ @@ -66,9 +59,12 @@ export interface BrowserAuthorizationClientConfiguration */ export interface BrowserAuthorizationClientRequestOptions { /** The required action demanded of the user before the authentication request can succeed */ - prompt?: "none" | "login" | "consent" | "select_account" | string; + prompt?: string; } +/** + * Represents the settings stored in storage. + */ export interface SettingsInStorage { id: string; // nonce/state authority: string; diff --git a/packages/browser/src/utils.ts b/packages/browser/src/utils.ts index d46b9f6d..4501bb81 100644 --- a/packages/browser/src/utils.ts +++ b/packages/browser/src/utils.ts @@ -12,8 +12,6 @@ * A prefix will be prepended based on the value of the IMJS_URL_PREFIX environment variable. * The prefix "dev-" will automatically be converted to "qa-". * @deprecated in 1.1.x Please set the authority in `BrowserAuthorizationClientConfiguration` configuration object. - * @param authorityUrl - * @returns */ export function getImsAuthority(): string { try { diff --git a/packages/electron/README.md b/packages/electron/README.md index 8ccb6952..9198b45b 100644 --- a/packages/electron/README.md +++ b/packages/electron/README.md @@ -12,7 +12,7 @@ The OAuth2.0 workflow used in this package is Authorization Code + PKCE, for mor The package is broken into two main classes `ElectronMainAuthorization` and `ElectronRendererAuthorization` that communicate via Electron's IPC between the [main](https://www.electronjs.org/docs/latest/api/ipc-main) and [renderer](https://www.electronjs.org/docs/latest/api/ipc-renderer) process, respectively. The IPC channel is used to pass the login and access token information and handle refreshing the token when necessary. -During initialization, this package will start an express.js loopback server. The port is 3000 by default and can be adjusted by setting the `redirectUrl` with url and port +During initialization, this package will start an express.js loopback server. The port is 3000 by default and can be adjusted by setting the `_redirectUris` with url and port ## Usage @@ -40,6 +40,7 @@ const client = new ElectronMainAuthorization({ await client.signIn(); // sign in from the main process ``` +
If your app has its own directory to store config files, you can override the default path the refresh token is stored by specifying an optional field in the constructor object, like so: ```typescript @@ -48,6 +49,7 @@ new ElectronMainAuthorization({ tokenStorePath: yourOwnDirectoryAbsolutePath }) ``` +
2. Setup Renderer Process @@ -85,7 +87,7 @@ If keytar is being used in a headless environment additional steps need to be ta Users will then need to start a dbus session and create a keyring password by running `dbus-run-session -- sh` and then creating a keyring with `echo 'keyringPassword' | gnome-keyring-daemon -r -d --unlock`. Then simply start up the application like normal while in the dbus session: `npm run start`. If running within a Docker container, make sure to add the `--privileged` argument when running the container. -### API +## API `ElectronMainAuthorization` @@ -109,3 +111,26 @@ Users will then need to start a dbus session and create a keyring password by ru | `getAccessToken` | returns a token if available, otherwise calls `refreshToken` | `Function` | `Promise` | | `hasSignedIn` | Whether or not the user has _ever_ signed in | `getter` | `boolean` | | `isAuthorized` | Whether the user is signed in and not expired | `getter` | `boolean` | + +### `new ElectronMainAuthorization(options)` - options + +| Property | Type | Description | +| ----------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `issuerUrl` | `string` (optional) | The OAuth token issuer URL. Defaults to Bentley's auth production URL if undefined. | +| `redirectUris` | `string[]` | List of redirect URIs available for use in the OAuth authorization flow. See note below: | +| `clientId` | `string` | Client application's identifier as registered with the OIDC/OAuth2 provider. | +| `scopes` | `string` | List of space separated scopes to request access to various resources. | +| `expiryBuffer` | `number` (optional) | Time in seconds that's used as a buffer to check the token for validity/expiry. | +| `ipcSocket` | `IpcSocketBackend` (optional) | Optional custom implementation of `IpcSocketBackend` to use for IPC communication with the Frontend counterpart of authorization client. | +| `authenticationOptions` | `AuthenticationOptions` (optional) | Additional options to use for every OIDC authentication request made by `ElectronMainAuthorization`. | +| `tokenStorePath` | `string` (optional) | Directory path that overrides where the refresh token is stored. | + +### RedirectUris + +The `redirectUris` property is an array of strings that represent the URIs that the authorization server can redirect to after the user has authenticated. The URIs must be in the format `http(s)://localhost:port` where `port` is the port number that the ElectronMainAuthorization instance will listen on. The default port is 3000. + +- In the case of a port collision, it is recommended to use multiple (e.g. three) redirect URIs with different ports. +- A decent strategy for choosing ports for your application is: `3|4|5{GPR_ID}`. For example (GPR_ID used here is 1234): +- `http://localhost:31234/signin-callback` +- `http://localhost:41234/signin-callback` +- `http://localhost:51234/signin-callback` diff --git a/packages/electron/eslint.config.js b/packages/electron/eslint.config.js new file mode 100644 index 00000000..97f0aac8 --- /dev/null +++ b/packages/electron/eslint.config.js @@ -0,0 +1,19 @@ +const iTwinPlugin = require("@itwin/eslint-plugin"); + +module.exports = [ + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.iTwinjsRecommendedConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.jsdocConfig, + }, + { + files: ["**/*.{ts,tsx}"], + rules: { + "no-duplicate-imports": "off", + "@typescript-eslint/consistent-type-imports": "error", + }, + }, +]; diff --git a/packages/electron/package.json b/packages/electron/package.json index a1d19021..6604dc98 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -47,9 +47,9 @@ "username": "^5.1.0" }, "devDependencies": { - "@itwin/build-tools": "^4.0.6", + "@itwin/build-tools": "^4.6.0-dev.27", "@itwin/core-bentley": "^3.7.0", - "@itwin/eslint-plugin": "^3.3.0", + "@itwin/eslint-plugin": "^4.0.1", "@playwright/test": "~1.41.0", "@types/chai": "^4.2.22", "@types/chai-as-promised": "^7.1.1", @@ -61,7 +61,7 @@ "cpx2": "^5.0.0", "dotenv": "~16.0.3", "electron": "^30.0.0", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "mocha": "^8.2.3", "nyc": "^15.1.0", "parcel": "~2.9.3", @@ -70,20 +70,10 @@ "rimraf": "^3.0.2", "sinon": "^15.0.1", "source-map-support": "^0.5.9", - "typescript": "~5.0.2" + "typescript": "~5.3.3" }, "peerDependencies": { "@itwin/core-bentley": "^3.3.0 || ^4.0.0", "electron": ">=23.0.0 <31.0.0" - }, - "eslintConfig": { - "plugins": [ - "@itwin" - ], - "extends": "plugin:@itwin/itwinjs-recommended", - "rules": { - "no-duplicate-imports": "off", - "@typescript-eslint/consistent-type-imports": "error" - } } } diff --git a/packages/electron/src/integration-test/helpers/TestHelper.ts b/packages/electron/src/integration-test/helpers/TestHelper.ts index 786bf9e6..d7b2db66 100644 --- a/packages/electron/src/integration-test/helpers/TestHelper.ts +++ b/packages/electron/src/integration-test/helpers/TestHelper.ts @@ -6,6 +6,9 @@ import type { Page } from "@playwright/test"; import type { SignInOptions } from "../types"; +/** + * Helper class for tests + */ export class TestHelper { constructor(private _signInOptions: SignInOptions) { } @@ -36,7 +39,7 @@ export class TestHelper { public async signIn(page: Page, url: string) { await page.goto(url); - await page.waitForSelector("#identifierInput", {timeout: 5000}); + await page.waitForSelector("#identifierInput", { timeout: 5000 }); await page.getByLabel("Email address").fill(this._signInOptions.email); await page.getByLabel("Email address").press("Enter"); await page.getByLabel("Password").fill(this._signInOptions.password); diff --git a/packages/electron/src/integration-test/helpers/loadConfig.ts b/packages/electron/src/integration-test/helpers/loadConfig.ts index 967a8e18..a31ae384 100644 --- a/packages/electron/src/integration-test/helpers/loadConfig.ts +++ b/packages/electron/src/integration-test/helpers/loadConfig.ts @@ -5,6 +5,9 @@ import { config } from "dotenv"; +/** + * Load configuration from environment variables. + */ export function loadConfig() { config(); @@ -14,7 +17,7 @@ export function loadConfig() { !process.env.IMJS_TEST_REGULAR_USER_PASSWORD ) { throw new Error( - "Please expose IMJS_TEST_ELECTRON_CLIENT_ID, IMJS_TEST_REGULAR_USER_NAME and IMJS_TEST_REGULAR_USER_PASSWORD as env variables" + "Please expose IMJS_TEST_ELECTRON_CLIENT_ID, IMJS_TEST_REGULAR_USER_NAME and IMJS_TEST_REGULAR_USER_PASSWORD as env variables", ); } diff --git a/packages/electron/src/integration-test/types.ts b/packages/electron/src/integration-test/types.ts index c0cc4b04..cb5a01da 100644 --- a/packages/electron/src/integration-test/types.ts +++ b/packages/electron/src/integration-test/types.ts @@ -3,6 +3,9 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ +/** + * Options for signing in. + */ export interface SignInOptions { clientId: string; email: string; diff --git a/packages/electron/src/main/Client.ts b/packages/electron/src/main/Client.ts index dbd411d9..ef4dd990 100644 --- a/packages/electron/src/main/Client.ts +++ b/packages/electron/src/main/Client.ts @@ -114,7 +114,7 @@ export interface ElectronMainAuthorizationConfiguration { /** * Optional custom implementation of {@link IpcSocketBackend} to use for IPC communication with the Frontend counterpart of - * authorization client, see {@link ElectronRendererAuthorization}. If not provided, default IPC implementation is used. + * authorization client, see {@link ../ElectronRendererAuthorization}. If not provided, default IPC implementation is used. */ readonly ipcSocket?: IpcSocketBackend; @@ -156,7 +156,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { public constructor(config: ElectronMainAuthorizationConfiguration) { if (!config.clientId || !config.scopes || config.redirectUris.length === 0) throw new Error( - "Must specify a valid configuration with a clientId, scopes and redirect URIs when initializing ElectronMainAuthorization" + "Must specify a valid configuration with a clientId, scopes and redirect URIs when initializing ElectronMainAuthorization", ); // This library assumes that refresh tokens will be used by the Client. 'offline_access' is a special OAuth @@ -186,7 +186,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { if (config.expiryBuffer) this._expiryBuffer = config.expiryBuffer; - const configFileName = `iTwinJs_${this._clientId}`; + const configFileName = `iTwinJs_${this._clientId}`; const appStorageKey = `${configFileName}:${this._issuerUrl}`; this._refreshTokenStore = new RefreshTokenStore(configFileName, appStorageKey, config.tokenStorePath); } @@ -194,13 +194,13 @@ export class ElectronMainAuthorization implements AuthorizationClient { /** * Register a persistent handler function that will process incoming Frontend IPC messages from given channel. * It is expected that messages received by specified channels originate from an instance of - * {@link ElectronRendererAuthorization} that matches this Backend auth client instance. + * {@link ../ElectronRendererAuthorization} that matches this Backend auth client instance. * @param channel Name of the channel to handle messages from. * @param handler Function that will be executed to process incoming messages. */ private handleIpcMessage( channel: string, - handler: (...args: any[]) => Promise + handler: (...args: any[]) => Promise, ) { if (this._ipcSocket) { this._ipcSocket.handle(channel, handler); @@ -211,7 +211,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { /** * Send an IPC message to the Frontend via given channel. Sent message is expected to be received and handled - * by an instance of {@link ElectronRendererAuthorization} that matches this Backend auth client instance. + * by an instance of {@link ../ElectronRendererAuthorization} that matches this Backend auth client instance. * @param channel Name of the to which given message should be sent. * @param data Array of objects/values to send over the IPC channel in a single message. */ @@ -254,7 +254,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { private notifyFrontendAccessTokenExpirationChange(expiresAt: Date): void { this.sendIpcMessage( this._ipcChannelNames.onAccessTokenExpirationChanged, - expiresAt + expiresAt, ); } @@ -310,7 +310,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { return await this.refreshAccessToken(refreshToken); } catch (err) { Logger.logError(loggerCategory, `Error refreshing access token`, () => - BentleyError.getErrorProps(err) + BentleyError.getErrorProps(err), ); return ""; } @@ -333,12 +333,12 @@ export class ElectronMainAuthorization implements AuthorizationClient { this._configuration = await AuthorizationServiceConfiguration.fetchFromIssuer( this._issuerUrl, - tokenRequestor + tokenRequestor, ); Logger.logTrace( loggerCategory, "Initialized service configuration", - () => ({ configuration: this._configuration }) + () => ({ configuration: this._configuration }), ); } @@ -363,7 +363,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { if (redirectUri === "") { throw new Error( - `Failed to start an HTTP server with given redirect URIs, [${this._redirectUris.toString()}]` + `Failed to start an HTTP server with given redirect URIs, [${this._redirectUris.toString()}]`, ); } @@ -379,7 +379,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { const authorizationRequest = new AuthorizationRequest( authReqJson, new NodeCrypto(), - usePkce + usePkce, ); await authorizationRequest.setupCodeVerifier(); @@ -389,11 +389,11 @@ export class ElectronMainAuthorization implements AuthorizationClient { // Ensure that completion callbacks are correlated to the correct authorization request LoopbackWebServer.addCorrelationState( authorizationRequest.state, - authorizationEvents + authorizationEvents, ); const authorizationHandler = new ElectronMainAuthorizationRequestHandler( - authorizationEvents + authorizationEvents, ); // Setup a notifier to obtain the result of authorization @@ -405,22 +405,22 @@ export class ElectronMainAuthorization implements AuthorizationClient { async ( authRequest: AuthorizationRequest, authResponse: AuthorizationResponse | null, - authError: AuthorizationError | null + authError: AuthorizationError | null, ) => { Logger.logTrace( loggerCategory, "Authorization listener invoked", - () => ({ authRequest, authResponse, authError }) + () => ({ authRequest, authResponse, authError }), ); const tokenResponse = await this._onAuthorizationResponse( authRequest, authResponse, - authError + authError, ).catch((e) => reject(e)); authorizationEvents.onAuthorizationResponseCompleted.raiseEvent( - authError ? authError : undefined + authError ? authError : undefined, ); if (tokenResponse) @@ -429,14 +429,14 @@ export class ElectronMainAuthorization implements AuthorizationClient { await this.clearTokenCache(); finished(); - } + }, ); }); // Start the signin await authorizationHandler.performAuthorizationRequest( this._configuration, - authorizationRequest + authorizationRequest, ); return tokenRequestCompleted; @@ -451,12 +451,12 @@ export class ElectronMainAuthorization implements AuthorizationClient { this._configuration = await AuthorizationServiceConfiguration.fetchFromIssuer( this._issuerUrl, - tokenRequestor + tokenRequestor, ); Logger.logTrace( loggerCategory, "Initialized service configuration", - () => ({ configuration: this._configuration }) + () => ({ configuration: this._configuration }), ); } try { @@ -470,14 +470,14 @@ export class ElectronMainAuthorization implements AuthorizationClient { private async _onAuthorizationResponse( authRequest: AuthorizationRequest, authResponse: AuthorizationResponse | null, - authError: AuthorizationError | null + authError: AuthorizationError | null, ): Promise { // Phase 1 of login has completed to fetch the authorization code - check for errors if (authError) { Logger.logError( loggerCategory, "Authorization error. Unable to get authorization code.", - () => authError + () => authError, ); return undefined; } @@ -490,7 +490,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { error: "invalid_state", errorDescription: "The login response state did not match the login request state.", - }) + }), ); return undefined; } @@ -499,11 +499,11 @@ export class ElectronMainAuthorization implements AuthorizationClient { const tokenResponse = await this.swapAuthorizationCodeForTokens( authResponse.code, authRequest.internal!.code_verifier, - authRequest.redirectUri + authRequest.redirectUri, ); Logger.logTrace( loggerCategory, - "Authorization completed, and issued access token" + "Authorization completed, and issued access token", ); return tokenResponse; @@ -522,7 +522,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { } private async processTokenResponse( - tokenResponse: TokenResponse + tokenResponse: TokenResponse, ): Promise { this._refreshToken = tokenResponse.refreshToken; if (this._refreshToken) @@ -557,11 +557,11 @@ export class ElectronMainAuthorization implements AuthorizationClient { private async refreshAccessToken(refreshToken: string): Promise { const tokenResponse = await this.makeRefreshAccessTokenRequest( - refreshToken + refreshToken, ); Logger.logTrace( loggerCategory, - "Refresh token completed, and issued access token" + "Refresh token completed, and issued access token", ); return this.processTokenResponse(tokenResponse); @@ -571,7 +571,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { private async swapAuthorizationCodeForTokens( authCode: string, codeVerifier: string, - redirectUri: string + redirectUri: string, ): Promise { if (!this._configuration) throw new Error("Not initialized. First call initialize()"); @@ -589,25 +589,25 @@ export class ElectronMainAuthorization implements AuthorizationClient { const tokenRequest = new TokenRequest(tokenRequestJson); const tokenRequestor = new NodeRequestor(); const tokenHandler: TokenRequestHandler = new BaseTokenRequestHandler( - tokenRequestor + tokenRequestor, ); try { return await tokenHandler.performTokenRequest( this._configuration, - tokenRequest + tokenRequest, ); } catch (err) { Logger.logError( loggerCategory, `Error performing token request from token handler`, - () => BentleyError.getErrorProps(err) + () => BentleyError.getErrorProps(err), ); throw err; } } private async makeRefreshAccessTokenRequest( - refreshToken: string + refreshToken: string, ): Promise { if (!this._configuration) throw new Error("Not initialized. First call initialize()"); @@ -628,7 +628,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { const tokenRequest = new TokenRequest(tokenRequestJson); const tokenRequestor = new NodeRequestor(); const tokenHandler: TokenRequestHandler = new BaseTokenRequestHandler( - tokenRequestor + tokenRequestor, ); return tokenHandler.performTokenRequest(this._configuration, tokenRequest); @@ -637,7 +637,7 @@ export class ElectronMainAuthorization implements AuthorizationClient { private async makeRevokeTokenRequest(): Promise { if (!this._refreshToken) throw new Error( - "Missing refresh token. First call signIn() and ensure it's successful" + "Missing refresh token. First call signIn() and ensure it's successful", ); assert(this._clientId !== ""); @@ -650,16 +650,16 @@ export class ElectronMainAuthorization implements AuthorizationClient { const revokeTokenRequest = new RevokeTokenRequest(revokeTokenRequestJson); const tokenRequestor = new NodeRequestor(); const tokenHandler: TokenRequestHandler = new BaseTokenRequestHandler( - tokenRequestor + tokenRequestor, ); await tokenHandler.performRevokeTokenRequest( this._configuration!, - revokeTokenRequest + revokeTokenRequest, ); Logger.logTrace( loggerCategory, - "Authorization revoked, and removed access token" + "Authorization revoked, and removed access token", ); await this.clearTokenCache(); } diff --git a/packages/electron/src/main/LoopbackWebServer.ts b/packages/electron/src/main/LoopbackWebServer.ts index 162f0678..b017de03 100644 --- a/packages/electron/src/main/LoopbackWebServer.ts +++ b/packages/electron/src/main/LoopbackWebServer.ts @@ -60,16 +60,16 @@ export class LoopbackWebServer { private static _redirectUri: string; /** Start a web server to listen to the browser requests */ - public static async start(redirectUri: string): Promise { + public static async start(this: void, redirectUri: string): Promise { if (LoopbackWebServer._httpServer) return; - this._redirectUri = redirectUri; + LoopbackWebServer._redirectUri = redirectUri; return new Promise((resolve, reject) => { const server = Http.createServer(LoopbackWebServer.onBrowserRequest); server.on("error", reject); - const urlParts: URL = new URL(this._redirectUri); + const urlParts: URL = new URL(LoopbackWebServer._redirectUri); server.listen(urlParts.port, () => { LoopbackWebServer._httpServer = server; resolve(); @@ -95,7 +95,7 @@ export class LoopbackWebServer { } /** Listen/Handle browser events */ - private static onBrowserRequest(httpRequest: Http.IncomingMessage, httpResponse: Http.ServerResponse): void { + private static onBrowserRequest(this: void, httpRequest: Http.IncomingMessage, httpResponse: Http.ServerResponse): void { if (!httpRequest.url) return; @@ -136,7 +136,7 @@ export class LoopbackWebServer { } const html = LoopbackWebServer.getHtmlTemplate( - httpResponseContent + httpResponseContent, ); httpResponse.write(html); diff --git a/packages/electron/src/main/TokenStore.ts b/packages/electron/src/main/TokenStore.ts index f9c6a1b4..32ca431e 100644 --- a/packages/electron/src/main/TokenStore.ts +++ b/packages/electron/src/main/TokenStore.ts @@ -14,8 +14,7 @@ const Store = require("electron-store"); // eslint-disable-line @typescript-esli */ export class RefreshTokenStore { /** - * Key that will be used to store and read refresh token from OS level secure credential store, - * see {@link setPassword}, {@link getPassword}. + * Key that will be used to store and read refresh token from OS level secure credential store */ private _appStorageKey: string; /** diff --git a/packages/electron/src/renderer/Client.ts b/packages/electron/src/renderer/Client.ts index 3dd5ebe2..0b2e310f 100644 --- a/packages/electron/src/renderer/Client.ts +++ b/packages/electron/src/renderer/Client.ts @@ -68,7 +68,7 @@ export interface ElectronRendererAuthorizationConfiguration { /** * Optional custom implementation of {@link IpcSocketFrontend} to use for IPC communication with the Backend counterpart of - * authorization client, see {@link ElectronMainAuthorization}. If not provided, default IPC implementation is used. + * authorization client, see {@link ../ElectronMainAuthorization}. If not provided, default IPC implementation is used. */ readonly ipcSocket?: IpcSocketFrontend; diff --git a/packages/electron/src/test/MainAuthorizationClient.test.ts b/packages/electron/src/test/MainAuthorizationClient.test.ts index 5830dc56..3b3a81e6 100644 --- a/packages/electron/src/test/MainAuthorizationClient.test.ts +++ b/packages/electron/src/test/MainAuthorizationClient.test.ts @@ -21,9 +21,6 @@ chai.use(chaiAsPromised); /** * Produces a token store key using the same method as the Electron client - * @param clientId - * @param issuerUrl - * @returns */ function getTokenStoreKey(clientId: string, issuerUrl?: string): string { let prefix = process.env.IMJS_URL_PREFIX; @@ -77,7 +74,7 @@ describe("ElectronMainAuthorization Token Logic", () => { sinon.stub(RefreshTokenStore.prototype, "encryptRefreshToken" as any).returns(Promise.resolve(Buffer.from(refreshToken))); sinon.stub(RefreshTokenStore.prototype, "decryptRefreshToken" as any).returns(Promise.resolve(refreshToken)); // Load refresh token into token store - use clientId - const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId),getTokenStoreKey(config.clientId)); + const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId), getTokenStoreKey(config.clientId)); await tokenStore.save(refreshToken); // Mock auth request @@ -114,13 +111,13 @@ describe("ElectronMainAuthorization Token Logic", () => { sinon.stub(RefreshTokenStore.prototype, "encryptRefreshToken" as any).returns(Promise.resolve(Buffer.from(mockTokenResponse.refreshToken!))); sinon.stub(RefreshTokenStore.prototype, "decryptRefreshToken" as any).returns(Promise.resolve(mockTokenResponse.refreshToken)); // Clear token store - const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId),getTokenStoreKey(config.clientId)); + const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId), getTokenStoreKey(config.clientId)); await tokenStore.delete(); // Mock auth request sinon.stub(LoopbackWebServer, "start").resolves(); sinon.stub(ElectronMainAuthorizationRequestHandler.prototype, "performAuthorizationRequest").callsFake(async () => { - await new Promise((resolve) => setImmediate(resolve, () => {})); + await new Promise((resolve) => setImmediate(resolve, () => { })); }); sinon.stub(BaseTokenRequestHandler.prototype, "performTokenRequest").callsFake(async (_configuration: AuthorizationServiceConfiguration, _request: TokenRequest) => { return mockTokenResponse; @@ -165,7 +162,7 @@ describe("ElectronMainAuthorization Token Logic", () => { sinon.stub(RefreshTokenStore.prototype, "encryptRefreshToken" as any).returns(Promise.resolve(Buffer.from(refreshToken))); sinon.stub(RefreshTokenStore.prototype, "decryptRefreshToken" as any).returns(Promise.resolve(refreshToken)); // Load refresh token into token store - use clientId - const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId),getTokenStoreKey(config.clientId)); + const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId), getTokenStoreKey(config.clientId)); await tokenStore.save(refreshToken); // Mock auth request @@ -207,13 +204,13 @@ describe("ElectronMainAuthorization Token Logic", () => { sinon.stub(RefreshTokenStore.prototype, "encryptRefreshToken" as any).returns(Promise.resolve(Buffer.from(mockTokenResponse.refreshToken!))); sinon.stub(RefreshTokenStore.prototype, "decryptRefreshToken" as any).returns(Promise.resolve(mockTokenResponse.refreshToken)); // Clear token store - const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId),getTokenStoreKey(config.clientId)); + const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId), getTokenStoreKey(config.clientId)); await tokenStore.delete(); // Mock auth request sinon.stub(LoopbackWebServer, "start").resolves(); sinon.stub(ElectronMainAuthorizationRequestHandler.prototype, "performAuthorizationRequest").callsFake(async () => { - await new Promise((resolve) => setImmediate(resolve, () => {})); + await new Promise((resolve) => setImmediate(resolve, () => { })); }); sinon.stub(BaseTokenRequestHandler.prototype, "performTokenRequest").callsFake(async (_configuration: AuthorizationServiceConfiguration, _request: TokenRequest) => { await tokenStore.save(mockTokenResponse.refreshToken!); @@ -260,7 +257,7 @@ describe("ElectronMainAuthorization Token Logic", () => { sinon.stub(RefreshTokenStore.prototype, "encryptRefreshToken" as any).returns(Promise.resolve(Buffer.from(refreshToken))); const decryptSpy = sinon.stub(RefreshTokenStore.prototype, "decryptRefreshToken" as any).returns(Promise.resolve(refreshToken)); // Load refresh token into token store - use clientId - const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId),getTokenStoreKey(config.clientId)); + const tokenStore = new RefreshTokenStore(getTokenStoreFileName(config.clientId), getTokenStoreKey(config.clientId)); await tokenStore.delete(); await tokenStore.save(refreshToken); diff --git a/packages/node-cli/eslint.config.js b/packages/node-cli/eslint.config.js new file mode 100644 index 00000000..97f0aac8 --- /dev/null +++ b/packages/node-cli/eslint.config.js @@ -0,0 +1,19 @@ +const iTwinPlugin = require("@itwin/eslint-plugin"); + +module.exports = [ + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.iTwinjsRecommendedConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.jsdocConfig, + }, + { + files: ["**/*.{ts,tsx}"], + rules: { + "no-duplicate-imports": "off", + "@typescript-eslint/consistent-type-imports": "error", + }, + }, +]; diff --git a/packages/node-cli/package.json b/packages/node-cli/package.json index 33c70379..04264a57 100644 --- a/packages/node-cli/package.json +++ b/packages/node-cli/package.json @@ -35,9 +35,9 @@ "username": "^5.1.0" }, "devDependencies": { - "@itwin/build-tools": "^4.0.0-dev.93", + "@itwin/build-tools": "^4.6.0-dev.27", "@itwin/core-bentley": "^3.7.0", - "@itwin/eslint-plugin": "^3.7.0", + "@itwin/eslint-plugin": "^4.0.1", "@types/chai-as-promised": "^7.1.1", "@types/chai": "^4.2.22", "@types/mocha": "^8.2.3", @@ -47,13 +47,13 @@ "chai-as-promised": "^7.1.1", "chai": "^4.2.22", "cpx2": "^5.0.0", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "mocha": "^8.2.3", "nyc": "^15.1.0", "rimraf": "^3.0.2", "sinon": "^15.2.0", "source-map-support": "^0.5.9", - "typescript": "~5.0.2" + "typescript": "~5.3.3" }, "peerDependencies": { "@itwin/core-bentley": "^3.3.0 || ^4.0.0" diff --git a/packages/oidc-signin-tool/eslint.config.js b/packages/oidc-signin-tool/eslint.config.js new file mode 100644 index 00000000..97f0aac8 --- /dev/null +++ b/packages/oidc-signin-tool/eslint.config.js @@ -0,0 +1,19 @@ +const iTwinPlugin = require("@itwin/eslint-plugin"); + +module.exports = [ + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.iTwinjsRecommendedConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.jsdocConfig, + }, + { + files: ["**/*.{ts,tsx}"], + rules: { + "no-duplicate-imports": "off", + "@typescript-eslint/consistent-type-imports": "error", + }, + }, +]; diff --git a/packages/oidc-signin-tool/package.json b/packages/oidc-signin-tool/package.json index 9f28e74f..d789bdf6 100644 --- a/packages/oidc-signin-tool/package.json +++ b/packages/oidc-signin-tool/package.json @@ -42,9 +42,9 @@ "oidc-client-ts": "^2.2.4" }, "devDependencies": { - "@itwin/build-tools": "^4.0.0-dev.93", + "@itwin/build-tools": "^4.6.0-dev.27", "@itwin/core-bentley": "^3.7.0", - "@itwin/eslint-plugin": "^3.7.0", + "@itwin/eslint-plugin": "^4.0.1", "@types/chai": "^4.2.22", "@types/chai-as-promised": "^7.1.1", "@types/jsonwebtoken": "^9.0.1", @@ -53,24 +53,14 @@ "@types/sinon": "^10.0.13", "chai": "^4.2.22", "chai-as-promised": "^7.1.1", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "mocha": "^8.2.3", "nyc": "^15.1.0", "rimraf": "^3.0.2", "sinon": "15.0.4", - "typescript": "~5.0.2" + "typescript": "~5.3.3" }, "peerDependencies": { "@itwin/core-bentley": "^3.3.0 || ^4.0.0" - }, - "eslintConfig": { - "plugins": [ - "@itwin" - ], - "extends": "plugin:@itwin/itwinjs-recommended", - "rules": { - "no-duplicate-imports": "off", - "@typescript-eslint/consistent-type-imports": "error" - } } } diff --git a/packages/oidc-signin-tool/src/SignInAutomation.ts b/packages/oidc-signin-tool/src/SignInAutomation.ts index 9aaf300a..7e396e5f 100644 --- a/packages/oidc-signin-tool/src/SignInAutomation.ts +++ b/packages/oidc-signin-tool/src/SignInAutomation.ts @@ -26,7 +26,8 @@ interface AutomatedContextBase { /** A function that takes the waitForCallback result data (e.g. a callback url) * and finalizes the sign in process */ - resultFromCallback?: (t: T) => any | Promise; + // eslint-disable-line @typescript-eslint/no-redundant-type-constituents + resultFromCallback?: (t: T) => any | Promise; // eslint-disable-line @typescript-eslint/no-redundant-type-constituents /** optionally provide the abort controller for errors, * in case you need to cancel your waitForCallbackUrl */ abortController?: AbortController; @@ -168,14 +169,14 @@ async function handlePingLoginPage(context: AutomatedSignInContext): Promi await page.waitForLoadState("networkidle"); const error = page.getByText( - "We didn't recognize the email address or password you entered. Please try again." + "We didn't recognize the email address or password you entered. Please try again.", ); const count = await error.count(); if (count) { throw new Error( - "We didn't recognize the email address or password you entered. Please try again." + "We didn't recognize the email address or password you entered. Please try again.", ); } @@ -241,13 +242,13 @@ async function handleConsentPage(context: AutomatedSignInContext): Promise if (pageTitle === "Request for Approval") { const pingSubmit = await page.waitForSelector( - testSelectors.pingAllowSubmit + testSelectors.pingAllowSubmit, ); await pingSubmit.click(); } else if ((await page.title()) === "Permissions") { // Another new consent page... const acceptButton = await page.waitForSelector( - "xpath=(//button/span[text()='Accept'] | //div[contains(@class, 'ping-buttons')]/a[text()='Accept'])[1]" + "xpath=(//button/span[text()='Accept'] | //div[contains(@class, 'ping-buttons')]/a[text()='Accept'])[1]", ); // In EU there is a cookie consent banner covering the accept button, and it must be dismissed first @@ -263,7 +264,7 @@ async function handleConsentPage(context: AutomatedSignInContext): Promise async function checkSelectorExists( page: Page, - selector: string + selector: string, ): Promise { const element = await page.$(selector); return !!element; @@ -315,7 +316,7 @@ export async function launchDefaultAutomationPage(enableSlowNetworkConditions = throw Error( "Could not load @playwright/test. Do you have multiple playwright dependencies active? " + "If so, then you should provide your own playwright Page to automation APIs to avoid us " - + "attempting to make our own by importing playwright" + + "attempting to make our own by importing playwright", ); } diff --git a/packages/oidc-signin-tool/src/TestBrowserAuthorizationClient.ts b/packages/oidc-signin-tool/src/TestBrowserAuthorizationClient.ts index 45f139b7..5413ba3e 100644 --- a/packages/oidc-signin-tool/src/TestBrowserAuthorizationClient.ts +++ b/packages/oidc-signin-tool/src/TestBrowserAuthorizationClient.ts @@ -34,7 +34,7 @@ export class TestBrowserAuthorizationClient implements AuthorizationClient { */ public constructor( config: TestBrowserAuthorizationClientConfiguration, - user: TestUserCredentials + user: TestUserCredentials, ) { this._config = config; this._user = user; @@ -85,7 +85,7 @@ export class TestBrowserAuthorizationClient implements AuthorizationClient { (err instanceof Error && -1 === err.message.indexOf( - "Execution context was destroyed, most likely because of a navigation" + "Execution context was destroyed, most likely because of a navigation", )) ) throw err; @@ -143,7 +143,7 @@ export class TestBrowserAuthorizationClient implements AuthorizationClient { // This varies depending on the type of user, so start // waiting now and resolve at the end of the "sign in pipeline" waitForCallback: page.waitForRequest((req) => - req.url().startsWith(this._config.redirectUri) || controller.signal.aborted + req.url().startsWith(this._config.redirectUri) || controller.signal.aborted, ).then((resp) => resp.url()), resultFromCallback: async (callbackUrl) => { @@ -167,14 +167,11 @@ export class TestBrowserAuthorizationClient implements AuthorizationClient { * - this is only to be used in test environments, and **never** in production code. * - causes authorization to happen by spawning a * browser, and automatically filling in the supplied user credentials - * @param config Oidc configuration - * @param user User - * @param deploymentRegion Deployment region. If unspecified, it's inferred from configuration, or simply defaults to "0" for PROD use * @alpha */ export async function getTestAccessToken( config: TestBrowserAuthorizationClientConfiguration, - user: TestUserCredentials + user: TestUserCredentials, ): Promise { const client = new TestBrowserAuthorizationClient(config, user); return client.getAccessToken(); diff --git a/packages/oidc-signin-tool/src/certa/certaBackend.ts b/packages/oidc-signin-tool/src/certa/certaBackend.ts index a24e5e99..48f6105f 100644 --- a/packages/oidc-signin-tool/src/certa/certaBackend.ts +++ b/packages/oidc-signin-tool/src/certa/certaBackend.ts @@ -63,5 +63,5 @@ registerBackendCallback( getTokenCallbackName, async (user: any, oidcConfig?: any): Promise => { return signin(user, oidcConfig); - } + }, ); diff --git a/packages/oidc-signin-tool/src/certa/certaCommon.ts b/packages/oidc-signin-tool/src/certa/certaCommon.ts index a1a96067..6ee9d68d 100644 --- a/packages/oidc-signin-tool/src/certa/certaCommon.ts +++ b/packages/oidc-signin-tool/src/certa/certaCommon.ts @@ -8,6 +8,9 @@ import type { TestBrowserAuthorizationClientConfiguration, TestUserCredentials } // Shared by both the frontend and backend side of the tests export const getTokenCallbackName = "getToken"; +/** + * Retrieves an access token from the backend using the specified user credentials. + */ export async function getAccessTokenFromBackend(user: TestUserCredentials, oidcConfig?: TestBrowserAuthorizationClientConfiguration): Promise { const accessToken = await executeBackendCallback(getTokenCallbackName, user, oidcConfig); return accessToken; diff --git a/packages/oidc-signin-tool/src/loginElectronMainAuthClient.ts b/packages/oidc-signin-tool/src/loginElectronMainAuthClient.ts index 85245699..2b797b6e 100644 --- a/packages/oidc-signin-tool/src/loginElectronMainAuthClient.ts +++ b/packages/oidc-signin-tool/src/loginElectronMainAuthClient.ts @@ -76,7 +76,7 @@ async function getExtraWindowAsBrowserFromElectron(app: ElectronApplication, url // if the bug were fixed, this would not be necessary, as it will be navigated to again later await loginPage.loadURL(passed.url); }, - { url } + { url }, ); return newWindowPromise; @@ -106,7 +106,7 @@ export async function loginElectronMainAuthClient( user: TestUserCredentials; config: SignInAutomation.AutomatedSignInConfig; loginBrowser?: "chromium" | "separate-electron-window"; - } + }, ) { const nextFetchedUrlPromise = await setupGetNextFetchedUrl(backendContext); void startSignIn(); @@ -148,7 +148,7 @@ export async function logoutElectronMainAuthClient( /** any function that eventually invokes ElectronMainAuthorization.signOut() */ startSignOut: () => Promise; loginBrowser?: "chromium" | "separate-electron-window"; - } + }, ) { const nextFetchedUrlPromise = await setupGetNextFetchedUrl(backendContext); void startSignOut(); diff --git a/packages/oidc-signin-tool/src/test-integration/basic.test.ts b/packages/oidc-signin-tool/src/test-integration/basic.test.ts index 856ae7ef..44a924dd 100644 --- a/packages/oidc-signin-tool/src/test-integration/basic.test.ts +++ b/packages/oidc-signin-tool/src/test-integration/basic.test.ts @@ -5,7 +5,9 @@ import { expect, test } from "@playwright/test"; import type { TestBrowserAuthorizationClientConfiguration } from "../index"; -import { getTestAccessToken, TestUsers, TestUtility } from "../index"; +import { getTestAccessToken } from "../TestBrowserAuthorizationClient"; +import { TestUsers } from "../TestUsers"; +import { TestUtility } from "../TestUtility"; import { loadConfig, TestConfigType } from "./loadConfig"; let oidcConfig: TestBrowserAuthorizationClientConfiguration; @@ -28,7 +30,7 @@ test.describe("Sign in (#integration)", () => { ...oidcConfig, scope: `${oidcConfig.scope} projects:read`, }, - validUser + validUser, ); expect(token).toBeDefined(); }); @@ -37,23 +39,23 @@ test.describe("Sign in (#integration)", () => { const oidcInvalidConfig = { ...oidcConfig, redirectUri: "invalid.com" }; const validUser = TestUsers.regular; await expect( - getTestAccessToken(oidcInvalidConfig, validUser) + getTestAccessToken(oidcInvalidConfig, validUser), ).rejects.toThrowError(`400 - Invalid redirect_uri`); }); test("failure with invalid Bentley federated user", async () => { await expect( - getTestAccessToken(oidcConfig, TestUsers.federatedInvalid) + getTestAccessToken(oidcConfig, TestUsers.federatedInvalid), ).rejects.toThrowError( - `Failed OIDC signin for ${TestUsers.federatedInvalid.email}.\nError: This username may be incorrect. Make sure you typed it correctly. Otherwise, contact your admin.` + `Failed OIDC signin for ${TestUsers.federatedInvalid.email}.\nError: This username may be incorrect. Make sure you typed it correctly. Otherwise, contact your admin.`, ); }); test("failure with invalid user", async () => { await expect( - getTestAccessToken(oidcConfig, TestUsers.invalid) + getTestAccessToken(oidcConfig, TestUsers.invalid), ).rejects.toThrowError( - `Failed OIDC signin for ${TestUsers.invalid.email}.\nError: We didn't recognize the email address or password you entered. Please try again.` + `Failed OIDC signin for ${TestUsers.invalid.email}.\nError: We didn't recognize the email address or password you entered. Please try again.`, ); }); }); diff --git a/packages/oidc-signin-tool/src/test-integration/loadConfig.ts b/packages/oidc-signin-tool/src/test-integration/loadConfig.ts index 8841a358..1ed67317 100644 --- a/packages/oidc-signin-tool/src/test-integration/loadConfig.ts +++ b/packages/oidc-signin-tool/src/test-integration/loadConfig.ts @@ -4,6 +4,9 @@ import type { TestBrowserAuthorizationClientConfiguration } from "../TestUsers"; const dotenvExpand = require("dotenv-expand"); // eslint-disable-line @typescript-eslint/no-var-requires +/** + * Determines auth sign in flow. + */ export enum TestConfigType { OIDC, AZURE, @@ -17,8 +20,11 @@ function loadEnv(envFile: string) { } } +/** + * Loads configuration from environment variables + */ export function loadConfig( - configType: TestConfigType + configType: TestConfigType, ): TestBrowserAuthorizationClientConfiguration { loadEnv(path.join(__dirname, "..", "..", ".env")); config(); @@ -44,15 +50,15 @@ export function loadConfig( if (configType === TestConfigType.AZURE) { if (!process.env.IMJS_OIDC_AZUREAD_BROWSER_TEST_AUTHORITY) throw new Error( - "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_AUTHORITY" + "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_AUTHORITY", ); if (!process.env.IMJS_OIDC_AZUREAD_BROWSER_TEST_CLIENT_ID) throw new Error( - "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_CLIENT_ID" + "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_CLIENT_ID", ); if (!process.env.IMJS_OIDC_AZUREAD_BROWSER_TEST_REDIRECT_URI) throw new Error( - "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_REDIRECT_URI" + "Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_REDIRECT_URI", ); if (!process.env.IMJS_OIDC_AZUREAD_BROWSER_TEST_SCOPES) throw new Error("Could not find IMJS_OIDC_AZUREAD_BROWSER_TEST_SCOPES"); @@ -68,17 +74,17 @@ export function loadConfig( if (configType === TestConfigType.AUTHING) { if (!process.env.IMJS_OIDC_AUTHING_BROWSER_TEST_AUTHORITY) throw new Error( - "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_AUTHORITY" + "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_AUTHORITY", ); if (!process.env.IMJS_OIDC_AUTHING_BROWSER_TEST_CLIENT_ID) throw new Error( - "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_CLIENT_ID" + "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_CLIENT_ID", ); if (!process.env.IMJS_OIDC_AUTHING_BROWSER_TEST_REDIRECT_URI) throw new Error( - "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_REDIRECT_URI" + "Could not find IMJS_OIDC_AUTHING_BROWSER_TEST_REDIRECT_URI", ); if (!process.env.IMJS_OIDC_AUTHING_BROWSER_TEST_SCOPES) diff --git a/packages/service/eslint.config.js b/packages/service/eslint.config.js new file mode 100644 index 00000000..464e7913 --- /dev/null +++ b/packages/service/eslint.config.js @@ -0,0 +1,31 @@ +const iTwinPlugin = require("@itwin/eslint-plugin"); + +module.exports = [ + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.iTwinjsRecommendedConfig, + }, + { + files: ["**/*.{ts,tsx}"], + ...iTwinPlugin.configs.jsdocConfig, + }, + { + files: ["**/*.{ts,tsx}"], + rules: { + "no-duplicate-imports": "off", + "@typescript-eslint/consistent-type-imports": "error", + }, + }, + { + files: ["src/test/Introspection.test.ts"], + rules: { + "@typescript-eslint/dot-notation": [ + "error", + { + allowPrivateClassPropertyAccess: true, + }, + ], + "dot-notation": "off", + }, + }, +]; diff --git a/packages/service/package.json b/packages/service/package.json index 4cdbe695..d4a211ba 100644 --- a/packages/service/package.json +++ b/packages/service/package.json @@ -33,15 +33,15 @@ "jwks-rsa": "^2.0.4" }, "devDependencies": { - "@itwin/build-tools": "^4.0.0-dev.93", + "@itwin/build-tools": "^4.6.0-dev.27", "@itwin/core-bentley": "^3.7.0", - "@itwin/eslint-plugin": "^3.7.0", + "@itwin/eslint-plugin": "^4.0.1", "@types/chai": "^4.2.22", "@types/chai-as-promised": "^7.1.1", "@types/jsonwebtoken": "^8.5.9", "@types/mocha": "^8.2.3", "@types/sinon": "^10.0.13", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "chai": "^4.2.22", "chai-as-promised": "^7.1.1", "mocha": "^8.2.3", @@ -49,35 +49,9 @@ "rimraf": "^3.0.2", "sinon": "^15.0.1", "source-map-support": "^0.5.9", - "typescript": "~5.0.2" + "typescript": "~5.3.3" }, "peerDependencies": { "@itwin/core-bentley": "^3.3.0 || ^4.0.0" - }, - "eslintConfig": { - "plugins": [ - "@itwin" - ], - "extends": "plugin:@itwin/itwinjs-recommended", - "overrides": [ - { - "files": [ - "src/test/Introspection.test.ts" - ], - "rules": { - "@typescript-eslint/dot-notation": [ - "error", - { - "allowPrivateClassPropertyAccess": true - } - ], - "dot-notation": "off" - } - } - ], - "rules": { - "no-duplicate-imports": "off", - "@typescript-eslint/consistent-type-imports": "error" - } } } diff --git a/packages/service/src/OIDCDiscoveryClient.ts b/packages/service/src/OIDCDiscoveryClient.ts index 928daecf..d7d187d9 100644 --- a/packages/service/src/OIDCDiscoveryClient.ts +++ b/packages/service/src/OIDCDiscoveryClient.ts @@ -19,7 +19,6 @@ const booleanProperties = ["claims_parameter_supported", "request_parameter_supp * Supports the OpenID Connect Discovery 1.0 specification. * @internal */ - export type OIDCConfig = { [x in typeof stringProperties[number]]: string | undefined } & { [x in typeof arrayProperties[number]]: string[] | undefined } & diff --git a/packages/service/src/ServiceAuthorizationClient.ts b/packages/service/src/ServiceAuthorizationClient.ts index 081a4188..c044df46 100644 --- a/packages/service/src/ServiceAuthorizationClient.ts +++ b/packages/service/src/ServiceAuthorizationClient.ts @@ -8,9 +8,9 @@ import type { AuthorizationClient } from "@itwin/core-common"; import type { ServiceAuthorizationClientConfiguration } from "./ServiceAuthorizationClientConfiguration"; -// @ts-expect-error -- this is a type-only import, it won't break the resulting .js file. +// this is a type-only import, it won't break the resulting .js file. // It also won't show up in the resulting .d.ts file because we don't re-export this type. -import type { Options as GotOptions } from "got" assert { "resolution-mode": "import" }; +import type { Options as GotOptions } from "got" with { "resolution-mode": "import" }; import { OIDCDiscoveryClient } from "./OIDCDiscoveryClient"; /** diff --git a/packages/service/tsconfig.json b/packages/service/tsconfig.json index 63ccc65f..658ae4fc 100644 --- a/packages/service/tsconfig.json +++ b/packages/service/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "target": "ES2021", "outDir": "./lib/cjs", - "moduleResolution": "NodeNext" + "moduleResolution": "NodeNext", + "module": "NodeNext" }, "include": [ "./src/**/*.ts" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69345ac6..6fe68c0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,14 +25,14 @@ importers: version: 2.4.0 devDependencies: '@itwin/build-tools': - specifier: ^4.0.0-dev.93 - version: 4.0.6(@types/node@18.17.1) + specifier: ^4.6.0-dev.27 + version: 4.6.0-dev.27(@types/node@18.17.1) '@itwin/core-bentley': specifier: ^3.7.0 version: 3.7.12 '@itwin/eslint-plugin': - specifier: ^3.7.0 - version: 3.7.8(eslint@7.32.0)(typescript@5.0.4) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.57.0)(typescript@5.3.3) '@playwright/test': specifier: ~1.41.0 version: 1.41.0 @@ -58,8 +58,8 @@ importers: specifier: ~16.0.3 version: 16.0.3 eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.56.0 + version: 8.57.0 mocha: specifier: ^8.2.3 version: 8.4.0 @@ -79,8 +79,8 @@ importers: specifier: ^15.0.1 version: 15.0.4 typescript: - specifier: ~5.0.2 - version: 5.0.4 + specifier: ~5.3.3 + version: 5.3.3 packages/electron: dependencies: @@ -98,14 +98,14 @@ importers: version: 5.1.0 devDependencies: '@itwin/build-tools': - specifier: ^4.0.6 - version: 4.0.6(@types/node@18.18.14) + specifier: ^4.6.0-dev.27 + version: 4.6.0-dev.27(@types/node@18.18.14) '@itwin/core-bentley': specifier: ^3.7.0 version: 3.7.12 '@itwin/eslint-plugin': - specifier: ^3.3.0 - version: 3.7.8(eslint@7.32.0)(typescript@5.0.4) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.57.0)(typescript@5.3.3) '@playwright/test': specifier: ~1.41.0 version: 1.41.0 @@ -140,8 +140,8 @@ importers: specifier: ^30.0.0 version: 30.0.2 eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.56.0 + version: 8.57.0 mocha: specifier: ^8.2.3 version: 8.4.0 @@ -167,8 +167,8 @@ importers: specifier: ^0.5.9 version: 0.5.21 typescript: - specifier: ~5.0.2 - version: 5.0.4 + specifier: ~5.3.3 + version: 5.3.3 packages/node-cli: dependencies: @@ -189,14 +189,14 @@ importers: version: 5.1.0 devDependencies: '@itwin/build-tools': - specifier: ^4.0.0-dev.93 - version: 4.0.6(@types/node@18.17.1) + specifier: ^4.6.0-dev.27 + version: 4.6.0-dev.27(@types/node@18.17.1) '@itwin/core-bentley': specifier: ^3.7.0 version: 3.7.12 '@itwin/eslint-plugin': - specifier: ^3.7.0 - version: 3.7.8(eslint@7.32.0)(typescript@5.0.4) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.57.0)(typescript@5.3.3) '@types/chai': specifier: ^4.2.22 version: 4.3.5 @@ -225,8 +225,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.56.0 + version: 8.57.0 mocha: specifier: ^8.2.3 version: 8.4.0 @@ -243,8 +243,8 @@ importers: specifier: ^0.5.9 version: 0.5.21 typescript: - specifier: ~5.0.2 - version: 5.0.4 + specifier: ~5.3.3 + version: 5.3.3 packages/oidc-signin-tool: dependencies: @@ -271,14 +271,14 @@ importers: version: 2.2.4 devDependencies: '@itwin/build-tools': - specifier: ^4.0.0-dev.93 - version: 4.0.6(@types/node@18.17.1) + specifier: ^4.6.0-dev.27 + version: 4.6.0-dev.27(@types/node@18.17.1) '@itwin/core-bentley': specifier: ^3.7.0 version: 3.7.12 '@itwin/eslint-plugin': - specifier: ^3.7.0 - version: 3.7.8(eslint@7.32.0)(typescript@5.0.4) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.57.0)(typescript@5.3.3) '@types/chai': specifier: ^4.2.22 version: 4.3.5 @@ -304,8 +304,8 @@ importers: specifier: ^7.1.1 version: 7.1.1(chai@4.3.7) eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.56.0 + version: 8.57.0 mocha: specifier: ^8.2.3 version: 8.4.0 @@ -319,8 +319,8 @@ importers: specifier: 15.0.4 version: 15.0.4 typescript: - specifier: ~5.0.2 - version: 5.0.4 + specifier: ~5.3.3 + version: 5.3.3 packages/service: dependencies: @@ -338,14 +338,14 @@ importers: version: 2.1.5 devDependencies: '@itwin/build-tools': - specifier: ^4.0.0-dev.93 - version: 4.0.6 + specifier: ^4.6.0-dev.27 + version: 4.6.0-dev.27 '@itwin/core-bentley': specifier: ^3.7.0 version: 3.7.12 '@itwin/eslint-plugin': - specifier: ^3.7.0 - version: 3.7.8(eslint@7.32.0)(typescript@5.0.4) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.57.0)(typescript@5.3.3) '@types/chai': specifier: ^4.2.22 version: 4.3.5 @@ -368,8 +368,8 @@ importers: specifier: ^7.1.1 version: 7.1.1(chai@4.3.7) eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.56.0 + version: 8.57.0 mocha: specifier: ^8.2.3 version: 8.4.0 @@ -386,8 +386,8 @@ importers: specifier: ^0.5.9 version: 0.5.21 typescript: - specifier: ~5.0.2 - version: 5.0.4 + specifier: ~5.3.3 + version: 5.3.3 packages: @@ -404,12 +404,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame@7.12.11: - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - dependencies: - '@babel/highlight': 7.22.5 - dev: true - /@babel/code-frame@7.22.10: resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} engines: {node: '>=6.9.0'} @@ -584,11 +578,11 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} + /@babel/runtime@7.24.5: + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.1 dev: true /@babel/template@7.22.5: @@ -644,55 +638,82 @@ packages: - supports-color dev: true - /@es-joy/jsdoccomment@0.9.0-alpha.1: - resolution: {integrity: sha512-Clxxc0PwpISoYYBibA+1L2qFJ7gvFVhI2Hos87S06K+Q0cXdOhZQJNKWuaQGPAeHjZEuUB/YoWOfwjuF2wirqA==} - engines: {node: '>=12.0.0'} + /@es-joy/jsdoccomment@0.42.0: + resolution: {integrity: sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==} + engines: {node: '>=16'} dependencies: - comment-parser: 1.1.6-beta.0 + comment-parser: 1.4.1 esquery: 1.5.0 - jsdoc-type-pratt-parser: 1.0.4 + jsdoc-type-pratt-parser: 4.0.0 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@7.32.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 dev: true - /@eslint/eslintrc@0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) - espree: 7.3.1 + espree: 9.6.1 globals: 13.20.0 - ignore: 4.0.6 + ignore: 5.2.4 import-fresh: 3.3.0 - js-yaml: 3.14.1 + js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/config-array@0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true /@istanbuljs/load-nyc-config@1.1.0: @@ -711,23 +732,23 @@ packages: engines: {node: '>=8'} dev: true - /@itwin/build-tools@4.0.6: - resolution: {integrity: sha512-5s7TS95wKqr+3VP5Uy/m+4vVDVYuS+jECpSo+vw/zDp2xgiHNFg0d7O8WLonL7JOhL2uzz4JkCfP47riL4sDDw==} + /@itwin/build-tools@4.6.0-dev.27: + resolution: {integrity: sha512-EFsmHcT+yRLgZ0cmMzDYRw4LSKmzRx/YpXy854eZKr3y9j8xq2r5TZTLpf85Y1oa8ZIPRHumSWOv2/yKK3qP0Q==} hasBin: true dependencies: - '@microsoft/api-extractor': 7.34.4 + '@microsoft/api-extractor': 7.40.6 chalk: 3.0.0 cpx2: 3.0.2 cross-spawn: 7.0.3 fs-extra: 8.1.0 - glob: 7.2.3 + glob: 10.3.12 mocha: 10.2.0 mocha-junit-reporter: 2.2.1(mocha@10.2.0) rimraf: 3.0.2 tree-kill: 1.2.2 - typedoc: 0.23.28(typescript@5.0.4) - typedoc-plugin-merge-modules: 4.1.0(typedoc@0.23.28) - typescript: 5.0.4 + typedoc: 0.25.13(typescript@5.3.3) + typedoc-plugin-merge-modules: 4.1.0(typedoc@0.25.13) + typescript: 5.3.3 wtfnode: 0.9.1 yargs: 17.7.2 transitivePeerDependencies: @@ -735,23 +756,23 @@ packages: - supports-color dev: true - /@itwin/build-tools@4.0.6(@types/node@18.17.1): - resolution: {integrity: sha512-5s7TS95wKqr+3VP5Uy/m+4vVDVYuS+jECpSo+vw/zDp2xgiHNFg0d7O8WLonL7JOhL2uzz4JkCfP47riL4sDDw==} + /@itwin/build-tools@4.6.0-dev.27(@types/node@18.17.1): + resolution: {integrity: sha512-EFsmHcT+yRLgZ0cmMzDYRw4LSKmzRx/YpXy854eZKr3y9j8xq2r5TZTLpf85Y1oa8ZIPRHumSWOv2/yKK3qP0Q==} hasBin: true dependencies: - '@microsoft/api-extractor': 7.34.4(@types/node@18.17.1) + '@microsoft/api-extractor': 7.40.6(@types/node@18.17.1) chalk: 3.0.0 cpx2: 3.0.2 cross-spawn: 7.0.3 fs-extra: 8.1.0 - glob: 7.2.3 + glob: 10.3.12 mocha: 10.2.0 mocha-junit-reporter: 2.2.1(mocha@10.2.0) rimraf: 3.0.2 tree-kill: 1.2.2 - typedoc: 0.23.28(typescript@5.0.4) - typedoc-plugin-merge-modules: 4.1.0(typedoc@0.23.28) - typescript: 5.0.4 + typedoc: 0.25.13(typescript@5.3.3) + typedoc-plugin-merge-modules: 4.1.0(typedoc@0.25.13) + typescript: 5.3.3 wtfnode: 0.9.1 yargs: 17.7.2 transitivePeerDependencies: @@ -759,23 +780,23 @@ packages: - supports-color dev: true - /@itwin/build-tools@4.0.6(@types/node@18.18.14): - resolution: {integrity: sha512-5s7TS95wKqr+3VP5Uy/m+4vVDVYuS+jECpSo+vw/zDp2xgiHNFg0d7O8WLonL7JOhL2uzz4JkCfP47riL4sDDw==} + /@itwin/build-tools@4.6.0-dev.27(@types/node@18.18.14): + resolution: {integrity: sha512-EFsmHcT+yRLgZ0cmMzDYRw4LSKmzRx/YpXy854eZKr3y9j8xq2r5TZTLpf85Y1oa8ZIPRHumSWOv2/yKK3qP0Q==} hasBin: true dependencies: - '@microsoft/api-extractor': 7.34.4(@types/node@18.18.14) + '@microsoft/api-extractor': 7.40.6(@types/node@18.18.14) chalk: 3.0.0 cpx2: 3.0.2 cross-spawn: 7.0.3 fs-extra: 8.1.0 - glob: 7.2.3 + glob: 10.3.12 mocha: 10.2.0 mocha-junit-reporter: 2.2.1(mocha@10.2.0) rimraf: 3.0.2 tree-kill: 1.2.2 - typedoc: 0.23.28(typescript@5.0.4) - typedoc-plugin-merge-modules: 4.1.0(typedoc@0.23.28) - typescript: 5.0.4 + typedoc: 0.25.13(typescript@5.3.3) + typedoc-plugin-merge-modules: 4.1.0(typedoc@0.25.13) + typescript: 5.3.3 wtfnode: 0.9.1 yargs: 17.7.2 transitivePeerDependencies: @@ -833,29 +854,29 @@ packages: flatbuffers: 1.12.0 dev: false - /@itwin/eslint-plugin@3.7.8(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-zPgGUZro3NZNH5CVCrzxy+Zyi0CucCMO3aYsPn8eaAvLQE1iqWt+M0XT+ih6FwZXRiHSrPhNrjTvP8cuFC96og==} + /@itwin/eslint-plugin@4.0.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-OEmjOUSJxIbYnl71zIWLwi2KDicmfjX/Cto/KPj/nOuqBl+M/VvaP/zJnjHvF9rXbEHwJower3x/czWL4GHaEQ==} + engines: {node: ^18.18.0 || >=20.0.0} hasBin: true peerDependencies: - eslint: ^7.0.0 - typescript: ^3.7.0 || ^4.0.0 - dependencies: - '@typescript-eslint/eslint-plugin': 4.31.2(@typescript-eslint/parser@4.31.2)(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.31.2(eslint@7.32.0)(typescript@5.0.4) - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.4 - eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.28.0)(eslint@7.32.0) - eslint-plugin-deprecation: 1.5.0(eslint@7.32.0)(typescript@5.0.4) - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@4.31.2)(eslint-import-resolver-typescript@2.7.1)(eslint@7.32.0) + eslint: ^8.56.0 + typescript: ^3.7.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@typescript-eslint/eslint-plugin': 7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + eslint: 8.57.0 + eslint-plugin-deprecation: 2.0.0(eslint@8.57.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.57.0) eslint-plugin-jam3: 0.2.3 - eslint-plugin-jsdoc: 35.5.1(eslint@7.32.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0) - eslint-plugin-prefer-arrow: 1.2.3(eslint@7.32.0) - eslint-plugin-react: 7.33.1(eslint@7.32.0) - eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) - require-dir: 1.2.0 - typescript: 5.0.4 + eslint-plugin-jsdoc: 48.2.3(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-prefer-arrow: 1.2.3(eslint@8.57.0) + eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + typescript: 5.3.3 + workspace-tools: 0.36.4 transitivePeerDependencies: + - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true @@ -1000,92 +1021,92 @@ packages: dev: true optional: true - /@microsoft/api-extractor-model@7.26.4: - resolution: {integrity: sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==} + /@microsoft/api-extractor-model@7.28.13: + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.18.14) + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor-model@7.26.4(@types/node@18.17.1): - resolution: {integrity: sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==} + /@microsoft/api-extractor-model@7.28.13(@types/node@18.17.1): + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.17.1) + '@rushstack/node-core-library': 4.0.2(@types/node@18.17.1) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor-model@7.26.4(@types/node@18.18.14): - resolution: {integrity: sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==} + /@microsoft/api-extractor-model@7.28.13(@types/node@18.18.14): + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.18.14) + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.34.4: - resolution: {integrity: sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ==} + /@microsoft/api-extractor@7.40.6: + resolution: {integrity: sha512-9N+XCIQB94Di+ETTzNGLqjgQydslynHou7QPgDhl5gZ+B/Q5hTv5jtqBglTUnTrC0trHdG5/YKN07ehGKlSb5g==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.26.4 + '@microsoft/api-extractor-model': 7.28.13 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.18.14) - '@rushstack/rig-package': 0.3.18 - '@rushstack/ts-command-line': 4.13.2 - colors: 1.2.5 + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.9.0 + '@rushstack/ts-command-line': 4.17.3 lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.8 + semver: 7.5.4 source-map: 0.6.1 - typescript: 4.8.4 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.34.4(@types/node@18.17.1): - resolution: {integrity: sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ==} + /@microsoft/api-extractor@7.40.6(@types/node@18.17.1): + resolution: {integrity: sha512-9N+XCIQB94Di+ETTzNGLqjgQydslynHou7QPgDhl5gZ+B/Q5hTv5jtqBglTUnTrC0trHdG5/YKN07ehGKlSb5g==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.26.4(@types/node@18.17.1) + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.17.1) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.17.1) - '@rushstack/rig-package': 0.3.18 - '@rushstack/ts-command-line': 4.13.2 - colors: 1.2.5 + '@rushstack/node-core-library': 4.0.2(@types/node@18.17.1) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.9.0(@types/node@18.17.1) + '@rushstack/ts-command-line': 4.17.3(@types/node@18.17.1) lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.8 + semver: 7.5.4 source-map: 0.6.1 - typescript: 4.8.4 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.34.4(@types/node@18.18.14): - resolution: {integrity: sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ==} + /@microsoft/api-extractor@7.40.6(@types/node@18.18.14): + resolution: {integrity: sha512-9N+XCIQB94Di+ETTzNGLqjgQydslynHou7QPgDhl5gZ+B/Q5hTv5jtqBglTUnTrC0trHdG5/YKN07ehGKlSb5g==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.26.4(@types/node@18.18.14) + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.18.14) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@18.18.14) - '@rushstack/rig-package': 0.3.18 - '@rushstack/ts-command-line': 4.13.2 - colors: 1.2.5 + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.9.0(@types/node@18.18.14) + '@rushstack/ts-command-line': 4.17.3(@types/node@18.18.14) lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.8 + semver: 7.5.4 source-map: 0.6.1 - typescript: 4.8.4 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: true @@ -2712,6 +2733,13 @@ packages: nullthrows: 1.1.1 dev: true + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@playwright/test@1.41.0: resolution: {integrity: sha512-Grvzj841THwtpBOrfiHOeYTJQxDRnKofMSzCiV8XeyLWu3o89qftQ4BCKfkziJhSUQRd0utKhrddtIsiraIwmw==} engines: {node: '>=16'} @@ -2719,8 +2747,8 @@ packages: dependencies: playwright: 1.41.0 - /@rushstack/node-core-library@3.55.2(@types/node@18.17.1): - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} + /@rushstack/node-core-library@4.0.2(@types/node@18.17.1): + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -2728,17 +2756,16 @@ packages: optional: true dependencies: '@types/node': 18.17.1 - colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.8 + semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/node-core-library@3.55.2(@types/node@18.18.14): - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} + /@rushstack/node-core-library@4.0.2(@types/node@18.18.14): + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -2746,29 +2773,90 @@ packages: optional: true dependencies: '@types/node': 18.18.14 - colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.8 + semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.3.18: - resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==} + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} dependencies: - resolve: 1.22.3 + resolve: 1.22.8 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.13.2: - resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==} + /@rushstack/terminal@0.9.0: + resolution: {integrity: sha512-49RnIDooriXyqcd7mGyjh9CmjOjf/Vn8PkOQXHa1CS0/RrrynCJLFhRDkswf7gGXZW+6UhROOE8wTmbOrfUTSA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) + colors: 1.2.5 + dev: true + + /@rushstack/terminal@0.9.0(@types/node@18.17.1): + resolution: {integrity: sha512-49RnIDooriXyqcd7mGyjh9CmjOjf/Vn8PkOQXHa1CS0/RrrynCJLFhRDkswf7gGXZW+6UhROOE8wTmbOrfUTSA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.17.1) + '@types/node': 18.17.1 + colors: 1.2.5 + dev: true + + /@rushstack/terminal@0.9.0(@types/node@18.18.14): + resolution: {integrity: sha512-49RnIDooriXyqcd7mGyjh9CmjOjf/Vn8PkOQXHa1CS0/RrrynCJLFhRDkswf7gGXZW+6UhROOE8wTmbOrfUTSA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.14) + '@types/node': 18.18.14 + colors: 1.2.5 + dev: true + + /@rushstack/ts-command-line@4.17.3: + resolution: {integrity: sha512-/PtTYW38A8iUviuCmQSccHfmx3uBh4Jm5YRPU2aTgYEgwT2jtg60vAbwnkMYkyaT1AbWpjZM3xq5uHYPURvStw==} dependencies: + '@rushstack/terminal': 0.9.0 + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@rushstack/ts-command-line@4.17.3(@types/node@18.17.1): + resolution: {integrity: sha512-/PtTYW38A8iUviuCmQSccHfmx3uBh4Jm5YRPU2aTgYEgwT2jtg60vAbwnkMYkyaT1AbWpjZM3xq5uHYPURvStw==} + dependencies: + '@rushstack/terminal': 0.9.0(@types/node@18.17.1) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@rushstack/ts-command-line@4.17.3(@types/node@18.18.14): + resolution: {integrity: sha512-/PtTYW38A8iUviuCmQSccHfmx3uBh4Jm5YRPU2aTgYEgwT2jtg60vAbwnkMYkyaT1AbWpjZM3xq5uHYPURvStw==} + dependencies: + '@rushstack/terminal': 0.9.0(@types/node@18.18.14) '@types/argparse': 1.0.38 argparse: 1.0.10 - colors: 1.2.5 string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' dev: true /@sindresorhus/is@4.6.0: @@ -3135,170 +3223,197 @@ packages: '@types/node': 18.18.14 optional: true - /@typescript-eslint/eslint-plugin@4.31.2(@typescript-eslint/parser@4.31.2)(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/eslint-plugin@7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.31.2(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.31.2(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 4.31.2 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/type-utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/experimental-utils@4.31.2(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.12 - '@typescript-eslint/scope-manager': 4.31.2 - '@typescript-eslint/types': 4.31.2 - '@typescript-eslint/typescript-estree': 4.31.2(typescript@5.0.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@7.32.0) + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/parser@4.31.2(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 4.31.2 - '@typescript-eslint/types': 4.31.2 - '@typescript-eslint/typescript-estree': 4.31.2(typescript@5.0.4) + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - typescript: 5.0.4 + eslint: 8.57.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@4.31.2: - resolution: {integrity: sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 4.31.2 - '@typescript-eslint/visitor-keys': 4.31.2 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@7.0.2: + resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 dev: true - /@typescript-eslint/types@4.31.2: - resolution: {integrity: sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/type-utils@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + 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} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@4.31.2(typescript@5.0.4): - resolution: {integrity: sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/types@7.0.2: + resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 4.31.2 - '@typescript-eslint/visitor-keys': 4.31.2 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.4): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@7.0.2(typescript@5.3.3): + resolution: {integrity: sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - semver: 7.5.4 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@4.31.2: - resolution: {integrity: sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 4.31.2 - eslint-visitor-keys: 2.1.0 + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.2 dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@7.0.2: + resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 7.0.2 eslint-visitor-keys: 3.4.2 dev: true @@ -3306,6 +3421,10 @@ packages: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@yarnpkg/lockfile@1.1.0: resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} dev: true @@ -3322,16 +3441,16 @@ packages: negotiator: 0.6.3 dev: false - /acorn-jsx@5.3.2(acorn@7.4.1): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 7.4.1 + acorn: 8.11.3 dev: true - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -3385,16 +3504,12 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: false /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - /ansi-regex@3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} @@ -3404,6 +3519,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} dev: true @@ -3421,6 +3541,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3439,6 +3564,11 @@ packages: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -3461,6 +3591,14 @@ packages: is-array-buffer: 3.0.2 dev: true + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + /array-flatten@1.1.1: resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} dev: false @@ -3476,20 +3614,45 @@ packages: is-string: 1.0.7 dev: true + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.2: - resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 dev: true /array.prototype.flat@1.3.1: @@ -3502,24 +3665,43 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 dev: true /arraybuffer.prototype.slice@1.0.1: @@ -3534,17 +3716,26 @@ packages: is-shared-array-buffer: 1.0.2 dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true /asynckit@0.4.0: @@ -3561,8 +3752,15 @@ packages: engines: {node: '>= 0.4'} dev: true - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} dev: true @@ -3700,6 +3898,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bytes@3.1.2: resolution: {integrity: sha1-iwvuuYYFrfGxKPpDhkA8AJ4CIaU=} engines: {node: '>= 0.8'} @@ -3757,6 +3960,17 @@ packages: function-bind: 1.1.1 get-intrinsic: 1.2.1 + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -3954,9 +4168,9 @@ packages: dev: true optional: true - /comment-parser@1.1.6-beta.0: - resolution: {integrity: sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw==} - engines: {node: '>= 10.0.0'} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} dev: true /commondir@1.0.1: @@ -4029,7 +4243,7 @@ packages: dev: true /cpx2@3.0.2: - resolution: {integrity: sha1-YlvJ5p0Mog6Y8Fx1VbqzWYlmgOU=} + resolution: {integrity: sha512-xVmdulZJVGSV+c8KkZ9IQY+RgyL9sGeVqScI2e7NtsEY9SVKcQXM4v0/9OLU0W0YtL9nmmqrtWjs5rpvgHn9Hg==} engines: {node: '>=6.5'} hasBin: true dependencies: @@ -4041,7 +4255,7 @@ packages: glob: 7.2.3 glob2base: 0.0.12 minimatch: 3.1.2 - resolve: 1.22.2 + resolve: 1.22.8 safe-buffer: 5.2.1 shell-quote: 1.8.1 subarg: 1.0.0 @@ -4145,6 +4359,33 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /debounce-fn@4.0.0: resolution: {integrity: sha1-7XbSBtilDmDeDdZtSU2Cg1/+Ycc=} engines: {node: '>=10'} @@ -4165,6 +4406,7 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: false /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -4239,6 +4481,15 @@ packages: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -4252,6 +4503,15 @@ packages: object-keys: 1.1.1 dev: true + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4390,6 +4650,10 @@ packages: resolution: {integrity: sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=} dev: true + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: @@ -4441,14 +4705,6 @@ packages: dependencies: once: 1.4.0 - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - dev: true - /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true @@ -4513,22 +4769,128 @@ packages: which-typed-array: 1.1.11 dev: true - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive@1.2.1: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -4558,44 +4920,17 @@ packages: resolution: {integrity: sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=} engines: {node: '>=10'} - /eslint-import-resolver-node@0.3.4: - resolution: {integrity: sha1-hf+oGULCUBLYIxCW3fZ5wDBCxxc=} - dependencies: - debug: 2.6.9 - resolve: 1.22.3 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.3 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.28.0)(eslint@7.32.0): - resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@4.31.2)(eslint-import-resolver-typescript@2.7.1)(eslint@7.32.0) - glob: 7.2.3 - is-glob: 4.0.3 - resolve: 1.22.2 - tsconfig-paths: 3.14.2 + is-core-module: 2.13.1 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@4.31.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@2.7.1)(eslint@7.32.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.0.2)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -4616,32 +4951,31 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.31.2(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.28.0)(eslint@7.32.0) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-deprecation@1.5.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==} + /eslint-plugin-deprecation@2.0.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: ^3.7.5 || ^4.0.0 || ^5.0.0 + eslint: ^7.0.0 || ^8.0.0 + typescript: ^4.2.4 || ^5.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@5.0.4) - eslint: 7.32.0 + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + eslint: 8.57.0 tslib: 2.6.1 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@4.31.2)(eslint-import-resolver-typescript@2.7.1)(eslint@7.32.0): - resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -4650,26 +4984,25 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 4.31.2(eslint@7.32.0)(typescript@5.0.4) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.31.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@2.7.1)(eslint@7.32.0) - has: 1.0.3 - is-core-module: 2.12.1 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.0.2)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 - object.values: 1.1.6 - resolve: 1.22.3 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4685,125 +5018,101 @@ packages: requireindex: 1.1.0 dev: true - /eslint-plugin-jsdoc@35.5.1(eslint@7.32.0): - resolution: {integrity: sha512-pPYPWtsykwVEue1tYEyoppBj4dgF7XicF67tLLLraY6RQYBq7qMKjUHji19+hfiTtYKKBD0YfeK8hgjPAE5viw==} - engines: {node: '>=12'} + /eslint-plugin-jsdoc@48.2.3(eslint@8.57.0): + resolution: {integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA==} + engines: {node: '>=18'} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 dependencies: - '@es-joy/jsdoccomment': 0.9.0-alpha.1 - comment-parser: 1.1.6-beta.0 + '@es-joy/jsdoccomment': 0.42.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 + escape-string-regexp: 4.0.0 + eslint: 8.57.0 esquery: 1.5.0 - jsdoc-type-pratt-parser: 1.2.0 - lodash: 4.17.21 - regextras: 0.8.0 - semver: 7.5.4 - spdx-expression-parse: 3.0.1 + is-builtin-module: 3.2.1 + semver: 7.6.0 + spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.24.5 aria-query: 5.3.0 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - ast-types-flow: 0.0.7 - axe-core: 4.7.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 7.32.0 - has: 1.0.3 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 - language-tags: 1.0.5 + language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 6.3.1 + object.entries: 1.1.8 + object.fromentries: 2.0.8 dev: true - /eslint-plugin-prefer-arrow@1.2.3(eslint@7.32.0): + /eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.0): resolution: {integrity: sha1-5/uz+kzYT/EBW5xRrYZVDlUEEEE=} peerDependencies: eslint: '>=2.0.0' dependencies: - eslint: 7.32.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 7.32.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react@7.33.1(eslint@7.32.0): - resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} + /eslint-plugin-react@7.34.1(eslint@8.57.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - eslint: 7.32.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.11 dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - dependencies: - eslint-visitor-keys: 1.3.0 - dev: true - - /eslint-utils@3.0.0(eslint@7.32.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + estraverse: 5.3.0 dev: true /eslint-visitor-keys@3.4.2: @@ -4811,62 +5120,65 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@7.32.0: - resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} - engines: {node: ^10.12.0 || >=12.0.0} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 - enquirer: 2.4.1 escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 + find-up: 5.0.0 + glob-parent: 6.0.2 globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 + graphemer: 1.4.0 + ignore: 5.2.4 imurmurhash: 0.1.4 is-glob: 4.0.3 - js-yaml: 3.14.1 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.4 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color dev: true - /espree@7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 dev: true /esprima@4.0.1: @@ -4889,11 +5201,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -5128,6 +5435,14 @@ packages: signal-exit: 3.0.7 dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} @@ -5188,7 +5503,7 @@ packages: dev: true /fs-extra@8.1.0: - resolution: {integrity: sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=} + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 @@ -5216,6 +5531,10 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -5226,8 +5545,14 @@ packages: functions-have-names: 1.2.3 dev: true - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 dev: true /functions-have-names@1.2.3: @@ -5255,6 +5580,17 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -5290,6 +5626,15 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + /git-up@7.0.0: resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} dependencies: @@ -5377,6 +5722,13 @@ packages: dependencies: is-glob: 4.0.3 + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob2base@0.0.12: resolution: {integrity: sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=} engines: {node: '>= 0.10'} @@ -5384,6 +5736,18 @@ packages: find-index: 0.1.1 dev: true + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.1.0 + path-scurry: 1.10.2 + dev: true + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -5504,6 +5868,10 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /growl@1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} @@ -5528,10 +5896,21 @@ packages: get-intrinsic: 1.2.1 dev: true + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -5543,6 +5922,13 @@ packages: has-symbols: 1.0.3 dev: true + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /has@1.0.3: resolution: {integrity: sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=} engines: {node: '>= 0.4.0'} @@ -5557,6 +5943,13 @@ packages: type-fest: 0.8.1 dev: true + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -5664,11 +6057,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -5715,6 +6103,15 @@ packages: side-channel: 1.0.4 dev: true + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + /ipaddr.js@1.9.1: resolution: {integrity: sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=} engines: {node: '>= 0.10'} @@ -5728,10 +6125,25 @@ packages: is-typed-array: 1.1.12 dev: true + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -5756,6 +6168,13 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5767,6 +6186,19 @@ packages: has: 1.0.3 dev: true + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -5784,6 +6216,12 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -5793,6 +6231,13 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -5803,11 +6248,21 @@ packages: resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} dev: true + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -5824,6 +6279,11 @@ packages: engines: {node: '>=8'} dev: false + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -5836,12 +6296,24 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + /is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} dependencies: @@ -5879,6 +6351,13 @@ packages: which-typed-array: 1.1.11 dev: true + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true @@ -5887,12 +6366,25 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -5980,6 +6472,25 @@ packages: istanbul-lib-report: 3.0.1 dev: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true @@ -6020,13 +6531,8 @@ packages: dependencies: argparse: 2.0.1 - /jsdoc-type-pratt-parser@1.0.4: - resolution: {integrity: sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ==} - engines: {node: '>=12.0.0'} - dev: true - - /jsdoc-type-pratt-parser@1.2.0: - resolution: {integrity: sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==} + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} dev: true @@ -6049,6 +6555,7 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=} + dev: false /json-schema-typed@7.0.3: resolution: {integrity: sha1-I/9IG4tO680soSO0+gQJ5mRpotk=} @@ -6082,11 +6589,11 @@ packages: dev: false /jsonc-parser@3.2.0: - resolution: {integrity: sha1-Mf8/TCuXk/icZyEmJ8UcY5T4jnY=} + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true /jsonfile@4.0.0: - resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 dev: true @@ -6179,8 +6686,9 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -6473,10 +6981,6 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true - /lodash.union@4.6.0: resolution: {integrity: sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=} dev: true @@ -6521,6 +7025,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@4.0.2: resolution: {integrity: sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==} dependencies: @@ -6702,13 +7211,6 @@ packages: dependencies: brace-expansion: 2.0.1 - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.3: resolution: {integrity: sha1-puAMPeRMOlQr+q5wq/wiQgptqCU=} engines: {node: '>=16 || 14 >=14.17'} @@ -6720,6 +7222,11 @@ packages: resolution: {integrity: sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=} dev: true + /minipass@7.1.0: + resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false @@ -6806,6 +7313,7 @@ packages: /ms@2.0.0: resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + dev: false /ms@2.1.2: resolution: {integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=} @@ -7022,6 +7530,10 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -7037,38 +7549,51 @@ packages: object-keys: 1.1.1 dev: true - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 dev: true - /object.groupby@1.0.0: - resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true /object.values@1.1.6: @@ -7080,6 +7605,15 @@ packages: es-abstract: 1.22.1 dev: true + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + /oidc-client-ts@2.2.4: resolution: {integrity: sha512-nOZwIomju+AmXObl5Oq5PjrES/qTt8bLsENJCIydVgi9TEWk7SCkOU6X3RNkY7yfySRM1OJJvDKdREZdmnDT2g==} engines: {node: '>=12.13.0'} @@ -7351,6 +7885,14 @@ packages: resolution: {integrity: sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=} dev: true + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.0 + dev: true + /path-to-regexp@0.1.7: resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} dev: false @@ -7408,6 +7950,11 @@ packages: optionalDependencies: fsevents: 2.3.2 + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true @@ -7602,10 +8149,27 @@ packages: dependencies: picomatch: 2.3.1 + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -7615,14 +8179,14 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /regextras@0.8.0: - resolution: {integrity: sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==} - engines: {node: '>=0.1.14'} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true /release-zalgo@1.0.0: @@ -7632,10 +8196,6 @@ packages: es6-error: 4.1.1 dev: true - /require-dir@1.2.0: - resolution: {integrity: sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==} - dev: true - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -7643,6 +8203,7 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=} engines: {node: '>=0.10.0'} + dev: false /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -7667,14 +8228,14 @@ packages: dev: true /resolve@1.19.0: - resolution: {integrity: sha1-GvW/YwQJc0oGfK4pMYqsf6KaJnw=} + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.3: + resolution: {integrity: sha1-S0BVNJ/7liYAly2h/cM8RqTrMoM=} hasBin: true dependencies: is-core-module: 2.12.1 @@ -7682,20 +8243,20 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@1.22.3: - resolution: {integrity: sha1-S0BVNJ/7liYAly2h/cM8RqTrMoM=} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -7754,6 +8315,16 @@ packages: isarray: 2.0.5 dev: true + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=} @@ -7765,6 +8336,15 @@ packages: is-regex: 1.1.4 dev: true + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=} dev: false @@ -7785,20 +8365,20 @@ packages: hasBin: true dev: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /send@0.18.0: resolution: {integrity: sha1-ZwFnzGVLBfWqSnZ/kRO7NxvHBr4=} @@ -7857,6 +8437,28 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + /setprototypeof@1.2.0: resolution: {integrity: sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=} dev: false @@ -7889,8 +8491,8 @@ packages: resolution: {integrity: sha1-bb9Nt1UVrVusY7TxiUw6FUx2ZoA=} dev: true - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + /shiki@0.14.7: + resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -7905,9 +8507,24 @@ packages: get-intrinsic: 1.2.1 object-inspect: 1.12.3 + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /sinon@15.0.4: resolution: {integrity: sha512-uzmfN6zx3GQaria1kwgWGeKiXSSbShBbue6Dcj0SI8fiCNFbiUDqKl57WFlY5lyhxZVUKmXvzgG2pilRQCBwWg==} dependencies: @@ -7939,15 +8556,6 @@ packages: engines: {node: '>=8'} dev: true - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -7974,8 +8582,8 @@ packages: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 @@ -8031,17 +8639,31 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 dev: true /string.prototype.trim@1.2.7: @@ -8053,6 +8675,16 @@ packages: es-abstract: 1.22.1 dev: true + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: @@ -8061,6 +8693,14 @@ packages: es-abstract: 1.22.1 dev: true + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: @@ -8069,6 +8709,15 @@ packages: es-abstract: 1.22.1 dev: true + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -8088,6 +8737,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -8165,17 +8821,6 @@ packages: stable: 0.1.8 dev: true - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: @@ -8251,8 +8896,17 @@ packages: hasBin: true dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -8268,14 +8922,14 @@ packages: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} dev: true - /tsutils@3.21.0(typescript@5.0.4): + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.0.4 + typescript: 5.3.3 dev: true /type-check@0.4.0: @@ -8329,6 +8983,15 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} @@ -8339,6 +9002,17 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} @@ -8350,6 +9024,18 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -8358,43 +9044,49 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: true - /typedoc-plugin-merge-modules@4.1.0(typedoc@0.23.28): + /typedoc-plugin-merge-modules@4.1.0(typedoc@0.25.13): resolution: {integrity: sha512-0Qax5eSaiP86zX9LlQQWANjtgkMfSHt6/LRDsWXfK45Ifc3lrgjZG4ieE87BMi3p12r/F0qW9sHQRB18tIs0fg==} peerDependencies: typedoc: 0.23.x || 0.24.x dependencies: - typedoc: 0.23.28(typescript@5.0.4) + typedoc: 0.25.13(typescript@5.3.3) dev: true - /typedoc@0.23.28(typescript@5.0.4): - resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} - engines: {node: '>= 14.14'} + /typedoc@0.25.13(typescript@5.3.3): + resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} + engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 7.4.6 - shiki: 0.14.3 - typescript: 5.0.4 - dev: true - - /typescript@4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} - engines: {node: '>=4.2.0'} - hasBin: true + minimatch: 9.0.3 + shiki: 0.14.7 + typescript: 5.3.3 dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} hasBin: true dev: true @@ -8418,7 +9110,7 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} /universalify@0.1.2: - resolution: {integrity: sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=} + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true @@ -8485,10 +9177,6 @@ packages: hasBin: true dev: true - /v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - /validator@13.9.0: resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} @@ -8532,6 +9220,34 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true @@ -8547,6 +9263,17 @@ packages: has-tostringtag: 1.0.0 dev: true + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -8586,6 +9313,18 @@ packages: micromatch: 4.0.5 dev: true + /workspace-tools@0.36.4: + resolution: {integrity: sha512-v0UFVvw9BjHtRu2Dau5PEJKkuG8u4jPlpXZQWjSz9XgbSutpPURqtO2P0hp3cVmQVATh8lkMFCewFgJuDnyC/w==} + dependencies: + '@yarnpkg/lockfile': 1.1.0 + fast-glob: 3.3.1 + git-url-parse: 13.1.0 + globby: 11.1.0 + jju: 1.4.0 + js-yaml: 4.1.0 + micromatch: 4.0.5 + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -8603,6 +9342,15 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}