From e772f246cd550f2232839c6a6cf96d50ab5e0bb1 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Fri, 17 Jan 2025 13:43:45 -0600 Subject: [PATCH 01/42] init commit --- packages/test-app-backend/package.json | 6 +- .../src/ChangeElementsGroupHelper.ts | 110 ++++++++++++++++++ .../src/RPC/ChangesetGroupRPCImpl.ts | 8 ++ .../src/RPC/ChangesetGroupRPCInterface.ts | 10 ++ packages/test-app-backend/src/main.ts | 14 ++- pnpm-lock.yaml | 108 ++++++++++++++--- 6 files changed, 234 insertions(+), 22 deletions(-) create mode 100644 packages/test-app-backend/src/ChangeElementsGroupHelper.ts create mode 100644 packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts create mode 100644 packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts diff --git a/packages/test-app-backend/package.json b/packages/test-app-backend/package.json index 34150668..50103507 100644 --- a/packages/test-app-backend/package.json +++ b/packages/test-app-backend/package.json @@ -11,6 +11,9 @@ "start": "ts-node-dev --transpile-only --respawn -- src/main.ts", "typecheck": "tsc --noEmit" }, + "devDependencies": { + "@types/express":"5.0.0" + }, "dependencies": { "@itwin/core-backend": "^4.0.6", "@itwin/core-bentley": "^4.0.6", @@ -24,6 +27,7 @@ "@types/node": "^18.0.0", "dotenv-flow": "^3.2.0", "ts-node-dev": "^2.0.0", - "typescript": "~5.5.4" + "typescript": "~5.5.4", + "express":"4.21.2" } } diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts new file mode 100644 index 00000000..a47202c8 --- /dev/null +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -0,0 +1,110 @@ +import { AnyDb, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, PartialECChangeUnifier, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; +import { DbOpcode, Id64String } from "@itwin/core-bentley"; +import { ChangedElements, ChangesetFileProps } from "@itwin/core-common"; + +/** + * Representation of a Changed Element during ChangesetGroup processing. + * + * Including extra {@link meta metadata} from the {@link PartialECChangeUnifier}'s {@link ChangedECInstance instances} + */ +export interface ChangesetGroupChangedElement { + id: Id64String; + classId: Id64String; + modelId: Id64String; + parentId: Id64String; + parentRelClassId: Id64String; + operation: SqliteChangeOp | string; + properties: Set; + type: number; + meta?: ChangeMetaData; // TODO: Only keep what we need. We can remove properties not used during processing to decrease memory usage. +} + +export class ChangesetGroup { + /** + * Get all changes from the range of changesets, grouped together as if they were a single changeset. + * The type of change is automatically resolved by the grouping (e.g., updated + deleted = deleted). + * @param changesetFileProps + * @returns EC Change Instances + */ + private static _getGroupedChangesetChanges(changesetFileProps: Partial[], db: AnyDb): ChangedECInstance[] { + + const ecChangeUnifier = new PartialECChangeUnifier(); + + const changesetFilePaths = changesetFileProps + .filter((csFile) => csFile.pathname !== undefined) + .map((csFile) => csFile.pathname!); + + try { + const csReader = SqliteChangesetReader.openGroup({ + changesetFiles: changesetFilePaths, + db, + disableSchemaCheck: true, + }); + const csAdaptor = new ChangesetECAdaptor(csReader); + while (csAdaptor.step()) { + ecChangeUnifier.appendFrom(csAdaptor); + } + } catch (error: unknown) { + throw Error(`Error appending changeset data: ${error as string}`); + } + + return Array.from(ecChangeUnifier.instances); +} + + /** + * Transforms temporary array of elements to Changed Elements result format + * @param changedElements + * @returns + */ + private static transformToAPIChangedElements (changedElements: ChangesetGroupChangedElement[]): ChangedElements { + const ce: ChangedElements = ChangesetGroup.createEmptyChangedElements(); + for (const elem of changedElements) { + ce.elements.push(elem.id); + ce.classIds.push(elem.classId); + ce.opcodes.push(ChangesetGroup.stringToOpcode(elem.operation)); + ce.type?.push(elem.type); + ce.parentIds?.push(elem.parentId); + ce.parentClassIds?.push(elem.parentRelClassId); + ce.properties?.push(Array.from(elem.properties.values())); + ce.modelIds?.push(elem.modelId); + // TODO: Do we need checksums anymore? If doing parallel processing, maybe... + } + + return ce; + } + + /** + * Convert {@link SqliteChangeOp} string to {@link DbOpcode} number. + * + * Throws error if not a valid {@link SqliteChangeOp} string. + */ + private static stringToOpcode (operation: SqliteChangeOp | string): DbOpcode { + switch (operation) { + case "Inserted": + return DbOpcode.Insert; + case "Updated": + return DbOpcode.Update; + case "Deleted": + return DbOpcode.Delete; + default: + throw new Error("Unknown opcode string"); + } + } + + /** + * @returns Empty ChangedElements object + */ + private static createEmptyChangedElements = (): ChangedElements => { + return { + elements: [], + classIds: [], + modelIds: [], + opcodes: [], + type: [], + properties: [], + parentIds: [], + parentClassIds: [], + }; + }; + +} diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts new file mode 100644 index 00000000..7cffa4e3 --- /dev/null +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -0,0 +1,8 @@ +import { IModelRpcProps, RpcInterface } from "@itwin/core-common"; +import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface.js"; + +export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { + public getChangesetGroup(_iModelToken: IModelRpcProps): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts new file mode 100644 index 00000000..495b2a7c --- /dev/null +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -0,0 +1,10 @@ +/* eslint-disable prefer-rest-params */ +/* eslint-disable prefer-spread */ +import { RpcInterface, RpcManager, IModelRpcProps } from "@itwin/core-common"; + +export abstract class ChangesetGroupRPCInterface extends RpcInterface { + public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface + public static interfaceVersion = "0.0.1"; // The API version of the interface + public static getClient() { return RpcManager.getClientForInterface(this); } + public async getChangesetGroup(_iModelToken: IModelRpcProps): Promise { return this.forward(arguments); } // this does something cool +} diff --git a/packages/test-app-backend/src/main.ts b/packages/test-app-backend/src/main.ts index 6ca5e312..755abf77 100644 --- a/packages/test-app-backend/src/main.ts +++ b/packages/test-app-backend/src/main.ts @@ -2,15 +2,18 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ +import * as express from "express"; import { IModelHost } from "@itwin/core-backend"; import { Logger, LogLevel } from "@itwin/core-bentley"; -import { BentleyCloudRpcManager, IModelReadRpcInterface, IModelTileRpcInterface } from "@itwin/core-common"; +import { BentleyCloudRpcManager, HttpServerRequest, HttpServerResponse, IModelReadRpcInterface, IModelTileRpcInterface, RpcManager } from "@itwin/core-common"; import { IModelJsExpressServer } from "@itwin/express-server"; import { BackendIModelsAccess } from "@itwin/imodels-access-backend"; import { IModelsClient } from "@itwin/imodels-client-authoring"; import { Presentation } from "@itwin/presentation-backend"; import { PresentationRpcInterface } from "@itwin/presentation-common"; import { config } from "dotenv-flow"; +import { ChangesetGroupRPCInterface } from "./RPC/ChangesetGroupRPCInterface.js"; +import { ChangesetGroupRPCImpl } from "./RPC/ChangesetGroupRPCImpl.js"; config({ path: "../test-app-frontend" }); @@ -26,13 +29,18 @@ void (async () => { ), }); Presentation.initialize(); - + RpcManager.registerImpl(ChangesetGroupRPCInterface, ChangesetGroupRPCImpl); const rpcConfig = BentleyCloudRpcManager.initializeImpl( { info: { title: "test-app-backend", version: "v1.0" } }, - [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface], + [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesetGroupRPCInterface], ); + const app = express(); const server = new IModelJsExpressServer(rpcConfig.protocol); await server.initialize(port); console.log(`Backend (PID ${process.pid}) is listening on port ${port}.`); + + app.post("*", async (request: HttpServerRequest, response: HttpServerResponse) => { + await rpcConfig.protocol.handleOperationPostRequest(request, response); + }); })(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61cd1fab..9ff47aac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -183,12 +183,19 @@ importers: dotenv-flow: specifier: ^3.2.0 version: 3.3.0 + express: + specifier: 4.21.2 + version: 4.21.2 ts-node-dev: specifier: ^2.0.0 version: 2.0.0(@swc/core@1.10.0(@swc/helpers@0.5.15))(@types/node@18.19.67)(typescript@5.5.4) typescript: specifier: ~5.5.4 version: 5.5.4 + devDependencies: + '@types/express': + specifier: 5.0.0 + version: 5.0.0 packages/test-app-frontend: dependencies: @@ -1308,18 +1315,36 @@ packages: '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/dotenv-flow@3.3.3': resolution: {integrity: sha512-aJjBsKw4bfGjvaRwrxBtEOfYZxCAq+LiFTpZ4DGTEK2b9eLVt/IAClapSxMfgV4Mi/2bIBKKjoTCO0lOh4ACLg==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@5.0.5': + resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==} + + '@types/express@5.0.0': + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + '@types/geojson@7946.0.14': resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} '@types/hoist-non-react-statics@3.3.5': resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/node@18.19.67': resolution: {integrity: sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==} @@ -1329,6 +1354,12 @@ packages: '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/react-dom@17.0.25': resolution: {integrity: sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==} @@ -1353,6 +1384,12 @@ packages: '@types/scheduler@0.16.8': resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/strip-bom@3.0.0': resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} @@ -2160,9 +2197,6 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -4757,10 +4791,33 @@ snapshots: '@types/aria-query@5.0.4': {} + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.67 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.19.67 + '@types/dotenv-flow@3.3.3': {} '@types/estree@1.0.6': {} + '@types/express-serve-static-core@5.0.5': + dependencies: + '@types/node': 18.19.67 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@5.0.0': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.5 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + '@types/geojson@7946.0.14': {} '@types/hoist-non-react-statics@3.3.5': @@ -4768,6 +4825,10 @@ snapshots: '@types/react': 17.0.83 hoist-non-react-statics: 3.3.2 + '@types/http-errors@2.0.4': {} + + '@types/mime@1.3.5': {} + '@types/node@18.19.67': dependencies: undici-types: 5.26.5 @@ -4776,6 +4837,10 @@ snapshots: '@types/prop-types@15.7.13': {} + '@types/qs@6.9.18': {} + + '@types/range-parser@1.2.7': {} + '@types/react-dom@17.0.25': dependencies: '@types/react': 17.0.83 @@ -4812,6 +4877,17 @@ snapshots: '@types/scheduler@0.16.8': {} + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.67 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 18.19.67 + '@types/send': 0.17.4 + '@types/strip-bom@3.0.0': {} '@types/strip-json-comments@0.0.30': {} @@ -5341,7 +5417,7 @@ snapshots: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-properties@1.2.1: dependencies: @@ -5433,7 +5509,7 @@ snapshots: get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 has-proto: 1.1.0 has-symbols: 1.1.0 @@ -5492,7 +5568,7 @@ snapshots: function-bind: 1.1.2 get-intrinsic: 1.2.4 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 has-proto: 1.1.0 has-symbols: 1.1.0 @@ -5879,7 +5955,7 @@ snapshots: globalthis@1.0.4: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 globby@11.1.0: dependencies: @@ -5892,10 +5968,6 @@ snapshots: globrex@0.1.2: {} - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -6686,7 +6758,7 @@ snapshots: es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 - gopd: 1.0.1 + gopd: 1.2.0 which-builtin-type: 1.2.0 regenerator-runtime@0.14.1: {} @@ -6831,7 +6903,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -6931,7 +7003,7 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 - gopd: 1.0.1 + gopd: 1.2.0 has-symbols: 1.1.0 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.3 @@ -7117,7 +7189,7 @@ snapshots: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-proto: 1.1.0 is-typed-array: 1.1.13 @@ -7126,7 +7198,7 @@ snapshots: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-proto: 1.1.0 is-typed-array: 1.1.13 reflect.getprototypeof: 1.0.7 @@ -7135,7 +7207,7 @@ snapshots: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.7 @@ -7329,7 +7401,7 @@ snapshots: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@1.3.1: From ac08bf7383cc60495167ebee1acd62b11da6a1a0 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 10 Feb 2025 13:44:41 -0600 Subject: [PATCH 02/42] WIP working on RPC --- .../common/versionCompareV2WidgetUtils.ts | 5 + .../src/ChangeElementsGroupHelper.ts | 15 +- .../src/RPC/ChangesetGroupRPCImpl.ts | 4 +- .../src/RPC/ChangesetGroupRPCInterface.ts | 4 +- packages/test-app-backend/src/main.ts | 6 +- packages/test-app-frontend/.env | 6 +- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 4 +- pnpm-lock.yaml | 8158 ++++++++--------- 8 files changed, 3640 insertions(+), 4562 deletions(-) diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 212d78c5..e6664418 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,6 +26,11 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { + // await VersionCompare.rpcGroupClient.getChangesetGroup(args.iModelConnection.getRpcProps(), + // { + // id: args.targetVersion.changesetId ?? "", + // index: args.targetVersion.changesetIndex ?? 0, + // }); if (VersionCompare.manager?.isComparing) { await VersionCompare.manager?.stopComparison(); } diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index a47202c8..89e6acfa 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -1,6 +1,6 @@ -import { AnyDb, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, PartialECChangeUnifier, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; +import { AnyDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelHost, PartialECChangeUnifier, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; import { DbOpcode, Id64String } from "@itwin/core-bentley"; -import { ChangedElements, ChangesetFileProps } from "@itwin/core-common"; +import { ChangedElements, ChangesetFileProps, ChangesetIdWithIndex } from "@itwin/core-common"; /** * Representation of a Changed Element during ChangesetGroup processing. @@ -20,6 +20,17 @@ export interface ChangesetGroupChangedElement { } export class ChangesetGroup { + + public static async _downloadChangesetFiles(endChangesetId: ChangesetIdWithIndex,iModelId:string):Promise { + await IModelHost.getHubAccess()?.downloadChangesets({ + targetDir: BriefcaseManager.getChangeSetsPath(iModelId), + iModelId: iModelId, + range: { + first: endChangesetId.index as number, + }, + }) + } + /** * Get all changes from the range of changesets, grouped together as if they were a single changeset. * The type of change is automatically resolved by the grouping (e.g., updated + deleted = deleted). diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index 7cffa4e3..9836e18a 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -1,8 +1,8 @@ -import { IModelRpcProps, RpcInterface } from "@itwin/core-common"; +import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface.js"; export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { - public getChangesetGroup(_iModelToken: IModelRpcProps): Promise { + public getChangesetGroup(_iModelToken: IModelRpcProps , endChangeset:ChangesetIdWithIndex ): Promise { throw new Error("Method not implemented."); } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index 495b2a7c..ca554099 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -1,10 +1,10 @@ /* eslint-disable prefer-rest-params */ /* eslint-disable prefer-spread */ -import { RpcInterface, RpcManager, IModelRpcProps } from "@itwin/core-common"; +import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex } from "@itwin/core-common"; export abstract class ChangesetGroupRPCInterface extends RpcInterface { public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface public static interfaceVersion = "0.0.1"; // The API version of the interface public static getClient() { return RpcManager.getClientForInterface(this); } - public async getChangesetGroup(_iModelToken: IModelRpcProps): Promise { return this.forward(arguments); } // this does something cool + public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset:ChangesetIdWithIndex): Promise { return this.forward(arguments); } // this does something cool } diff --git a/packages/test-app-backend/src/main.ts b/packages/test-app-backend/src/main.ts index 755abf77..e50f8ab1 100644 --- a/packages/test-app-backend/src/main.ts +++ b/packages/test-app-backend/src/main.ts @@ -2,7 +2,7 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -import * as express from "express"; +import express from "express"; import { IModelHost } from "@itwin/core-backend"; import { Logger, LogLevel } from "@itwin/core-bentley"; import { BentleyCloudRpcManager, HttpServerRequest, HttpServerResponse, IModelReadRpcInterface, IModelTileRpcInterface, RpcManager } from "@itwin/core-common"; @@ -12,8 +12,8 @@ import { IModelsClient } from "@itwin/imodels-client-authoring"; import { Presentation } from "@itwin/presentation-backend"; import { PresentationRpcInterface } from "@itwin/presentation-common"; import { config } from "dotenv-flow"; -import { ChangesetGroupRPCInterface } from "./RPC/ChangesetGroupRPCInterface.js"; -import { ChangesetGroupRPCImpl } from "./RPC/ChangesetGroupRPCImpl.js"; +import { ChangesetGroupRPCInterface } from "./RPC/ChangesetGroupRPCInterface"; +import { ChangesetGroupRPCImpl } from "./RPC/ChangesetGroupRPCImpl"; config({ path: "../test-app-frontend" }); diff --git a/packages/test-app-frontend/.env b/packages/test-app-frontend/.env index d33f5c43..fac74985 100644 --- a/packages/test-app-frontend/.env +++ b/packages/test-app-frontend/.env @@ -18,12 +18,12 @@ # - http://localhost:2363/auth/silent # - Post logout redirect URIs: # - http://localhost:2363/ -VITE_CLIENT_ID=spa-xxxxxxxxxxxxxxxxxxxxxxxxx +VITE_CLIENT_ID=spa-c2ownShgTBSG6kUOtuGwO0zec # dev-, qa-, or empty -VITE_URL_PREFIX= +VITE_URL_PREFIX=dev- VITE_FRONTEND_PORT=2363 VITE_USE_LOCAL_BACKEND=true VITE_LOCAL_BACKEND_PORT=3051 -VITE_RUN_EXPERIMENTAL=false +VITE_RUN_EXPERIMENTAL=true diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index 351aca51..6d23d2b6 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -31,7 +31,7 @@ import { useToaster } from "@itwin/itwinui-react"; import { PresentationRpcInterface } from "@itwin/presentation-common"; import { Presentation } from "@itwin/presentation-frontend"; import { useEffect, useMemo, useState, type ReactElement } from "react"; - +import { ChangesetGroupRPCInterface } from "../../../../test-app-backend/src/RPC/ChangesetGroupRPCInterface.js" import { applyUrlPrefix, localBackendPort, runExperimental, usingLocalBackend } from "../../environment.js"; import { LoadingScreen } from "../common/LoadingScreen.js"; import { AppUiVisualizationHandler } from "./AppUi/AppUiVisualizationHandler.js"; @@ -167,7 +167,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli BentleyCloudRpcManager.initializeClient( rpcParams, - [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface], + [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesetGroupRPCInterface], ); await Promise.all([ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa2edaf4..b4e3d5f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -16,10 +16,10 @@ importers: version: 6.0.0 '@types/node': specifier: ^18.11.9 - version: 18.19.74 + version: 18.19.75 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) + version: 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^7.4.0 version: 7.18.0(eslint@8.57.1)(typescript@5.5.4) @@ -37,7 +37,7 @@ importers: version: 4.1.5 ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.10.11(@swc/helpers@0.5.15))(@types/node@18.19.74)(typescript@5.5.4) + version: 10.9.2(@types/node@18.19.75)(typescript@5.5.4) typescript: specifier: ~5.5.4 version: 5.5.4 @@ -46,13 +46,13 @@ importers: dependencies: '@itwin/itwinui-icons-color-react': specifier: ^2.1.0 - version: 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.0(react-dom@18.3.1)(react@18.3.1) '@itwin/itwinui-icons-react': specifier: ^2.9.0 - version: 2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.9.0(react-dom@18.3.1)(react@18.3.1) '@itwin/itwinui-react': specifier: ^3.16.6 - version: 3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -61,17 +61,17 @@ importers: version: 7.8.0(react@18.3.1) react-window: specifier: ^1.8.10 - version: 1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.8.11(react-dom@18.3.1)(react@18.3.1) react-window-infinite-loader: specifier: ^1.0.9 - version: 1.0.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.10(react-dom@18.3.1)(react@18.3.1) devDependencies: '@itwin/appui-abstract': specifier: ^4.10.6 version: 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/components-react': specifier: ^5.0.5 - version: 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) '@itwin/core-bentley': specifier: ^4.10.6 version: 4.10.6 @@ -80,25 +80,25 @@ importers: version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-frontend': specifier: ^4.10.6 - version: 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + version: 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-geometry': specifier: ^4.10.6 version: 4.10.6 '@itwin/core-react': specifier: ^5.0.5 - version: 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) '@itwin/presentation-common': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) '@itwin/presentation-components': specifier: ^5.10.0 - version: 5.10.0(aigiuhnhbkjkftotbvmxxdsbe4) + version: 5.11.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/ecschema-metadata@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@itwin/presentation-common@4.10.6)(@itwin/presentation-frontend@4.10.6)(react-dom@18.3.1)(react@18.3.1) '@itwin/presentation-frontend': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6) '@testing-library/react': specifier: ^16.2.0 - version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) '@types/react': specifier: ^18.0.0 version: 18.3.18 @@ -116,10 +116,10 @@ importers: version: 1.0.9 '@vitejs/plugin-react-swc': specifier: ^3.7.1 - version: 3.7.2(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)) + version: 3.8.0(vite@5.4.14) '@vitest/coverage-v8': specifier: ^2.1.1 - version: 2.1.8(vitest@2.1.8(@types/node@18.19.74)(happy-dom@15.11.7)(sass@1.83.4)) + version: 2.1.9(vitest@2.1.9) cpx2: specifier: ^5.0.0 version: 5.0.0 @@ -137,7 +137,7 @@ importers: version: 18.3.1(react@18.3.1) react-redux: specifier: ^7.2.2 - version: 7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.2.9(react-dom@18.3.1)(react@18.3.1) redux: specifier: ^4.1.0 version: 4.2.1 @@ -146,16 +146,16 @@ importers: version: 5.5.4 vite: specifier: ^5.4.11 - version: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + version: 5.4.14(@types/node@18.19.75)(sass@1.84.0) vitest: specifier: ^2.1.1 - version: 2.1.8(@types/node@18.19.74)(happy-dom@15.11.7)(sass@1.83.4) + version: 2.1.9(@types/node@18.19.75)(happy-dom@15.11.7) packages/test-app-backend: dependencies: '@itwin/core-backend': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-bentley': specifier: ^4.10.6 version: 4.10.6 @@ -164,25 +164,25 @@ importers: version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/express-server': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6)) + version: 4.10.6(@itwin/core-backend@4.10.6)(@itwin/core-common@4.10.6) '@itwin/imodels-access-backend': specifier: ^5.2.3 - version: 5.2.3(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + version: 5.2.3(@itwin/core-backend@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6) '@itwin/imodels-client-authoring': specifier: ^5.9.0 - version: 5.9.0(inversify@6.0.3)(reflect-metadata@0.1.14) + version: 5.9.0 '@itwin/presentation-backend': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))) + version: 4.10.6(@itwin/core-backend@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6) '@itwin/presentation-common': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) '@types/dotenv-flow': specifier: ^3.2.0 version: 3.3.3 '@types/node': specifier: ^18.0.0 - version: 18.19.74 + version: 18.19.75 dotenv-flow: specifier: ^3.2.0 version: 3.3.0 @@ -191,7 +191,7 @@ importers: version: 4.21.2 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.10.11(@swc/helpers@0.5.15))(@types/node@18.19.74)(typescript@5.5.4) + version: 2.0.0(@types/node@18.19.75)(typescript@5.5.4) typescript: specifier: ~5.5.4 version: 5.5.4 @@ -210,16 +210,16 @@ importers: version: 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/appui-layout-react': specifier: ^4.8.3 - version: 4.8.3(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 4.8.3(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) '@itwin/appui-react': specifier: 5.0.5 - version: 5.0.5(5eet7rlgzhisqkljx4yn65oyxq) + version: 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/core-telemetry@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@types/react@18.3.18)(react-dom@18.0.0)(react-redux@7.2.9)(react@18.3.1)(redux@4.2.1) '@itwin/changed-elements-react': specifier: workspace:* version: link:../changed-elements-react '@itwin/components-react': specifier: 5.0.5 - version: 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/core-bentley': specifier: ^4.10.6 version: 4.10.6 @@ -228,46 +228,46 @@ importers: version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-frontend': specifier: ^4.10.6 - version: 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + version: 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-i18n': specifier: ^4.10.6 version: 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-react': specifier: ^5.0.5 - version: 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/imodel-components-react': specifier: ^5.0.5 - version: 5.0.5(4ihtqazybsdwzghixnn5lgqzle) + version: 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/imodels-access-frontend': specifier: ^5.2.3 - version: 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14)) + version: 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6) '@itwin/imodels-client-management': specifier: ^5.9.0 version: 5.9.0 '@itwin/itwinui-icons-react': specifier: ^2.9.0 - version: 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 2.9.0(react-dom@18.0.0)(react@18.3.1) '@itwin/itwinui-illustrations-react': specifier: ^2.1.0 - version: 2.1.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 2.1.0(react-dom@18.0.0)(react@18.3.1) '@itwin/itwinui-layouts-css': specifier: ^0.4.0 version: 0.4.0 '@itwin/itwinui-layouts-react': specifier: ^0.4.1 - version: 0.4.1(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 0.4.1(react-dom@18.0.0)(react@18.3.1) '@itwin/itwinui-react': specifier: ^3.16.0 - version: 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) '@itwin/presentation-common': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) '@itwin/presentation-components': specifier: ^5.10.0 - version: 5.10.0(pify4slrbry3bdfrsqmik6gbee) + version: 5.11.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/ecschema-metadata@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@itwin/presentation-common@4.10.6)(@itwin/presentation-frontend@4.10.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/presentation-frontend': specifier: ^4.10.6 - version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))) + version: 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6) '@types/dotenv-flow': specifier: ^3.2.0 version: 3.3.3 @@ -282,7 +282,7 @@ importers: version: 7.1.34 '@vitejs/plugin-react-swc': specifier: ^3.7.1 - version: 3.7.2(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)) + version: 3.8.0(vite@5.4.14) dotenv-flow: specifier: ^3.2.0 version: 3.3.0 @@ -297,3973 +297,890 @@ importers: version: 18.0.0(react@18.3.1) react-redux: specifier: ^7.2.2 - version: 7.2.9(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 7.2.9(react-dom@18.0.0)(react@18.3.1) react-router-dom: specifier: ^6.11.2 - version: 6.28.2(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + version: 6.29.0(react-dom@18.0.0)(react@18.3.1) redux: specifier: ^4.1.0 version: 4.2.1 sass: specifier: ^1.62.1 - version: 1.83.4 + version: 1.84.0 typescript: specifier: ~5.5.4 version: 5.5.4 vite: specifier: ^5.4.11 - version: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + version: 5.4.14(@types/node@18.19.75)(sass@1.84.0) vite-plugin-static-copy: specifier: ^1.0.6 - version: 1.0.6(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)) + version: 1.0.6(vite@5.4.14) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.5.4)(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)) + version: 5.1.4(typescript@5.5.4)(vite@5.4.14) packages: - '@ampproject/remapping@2.3.0': + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + dev: true - '@azure/abort-controller@1.1.0': + /@azure/abort-controller@1.1.0: resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} engines: {node: '>=12.0.0'} + dependencies: + tslib: 2.8.1 + dev: false - '@azure/abort-controller@2.1.2': + /@azure/abort-controller@2.1.2: resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.8.1 + dev: false - '@azure/core-auth@1.9.0': + /@azure/core-auth@1.9.0: resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.11.0 + tslib: 2.8.1 + dev: false - '@azure/core-client@1.9.2': + /@azure/core-client@1.9.2: resolution: {integrity: sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-rest-pipeline': 1.19.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.11.0 + '@azure/logger': 1.1.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: false - '@azure/core-http-compat@2.1.2': - resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} + /@azure/core-http-compat@2.2.0: + resolution: {integrity: sha512-1kW8ZhN0CfbNOG6C688z5uh2yrzALE7dDXHiR9dY4vt+EbhGZQSbjDa5bQd2rf3X2pdWMsXbqbArxUyeNdvtmg==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-client': 1.9.2 + '@azure/core-rest-pipeline': 1.19.0 + transitivePeerDependencies: + - supports-color + dev: false - '@azure/core-lro@2.7.2': + /@azure/core-lro@2.7.2: resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.11.0 + '@azure/logger': 1.1.4 + tslib: 2.8.1 + dev: false - '@azure/core-paging@1.6.2': + /@azure/core-paging@1.6.2: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.8.1 + dev: false - '@azure/core-rest-pipeline@1.18.2': - resolution: {integrity: sha512-IkTf/DWKyCklEtN/WYW3lqEsIaUDshlzWRlZNNwSYtFcCBQz++OtOjxNpm8rr1VcbMS6RpjybQa3u6B6nG0zNw==} + /@azure/core-rest-pipeline@1.19.0: + resolution: {integrity: sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.11.0 + '@azure/logger': 1.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: false - '@azure/core-tracing@1.2.0': + /@azure/core-tracing@1.2.0: resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.8.1 + dev: false - '@azure/core-util@1.11.0': + /@azure/core-util@1.11.0: resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + tslib: 2.8.1 + dev: false - '@azure/core-xml@1.4.4': + /@azure/core-xml@1.4.4: resolution: {integrity: sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==} engines: {node: '>=18.0.0'} + dependencies: + fast-xml-parser: 4.5.1 + tslib: 2.8.1 + dev: false - '@azure/logger@1.1.4': + /@azure/logger@1.1.4: resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.8.1 + dev: false - '@azure/storage-blob@12.26.0': + /@azure/storage-blob@12.26.0: resolution: {integrity: sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==} engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-client': 1.9.2 + '@azure/core-http-compat': 2.2.0 + '@azure/core-lro': 2.7.2 + '@azure/core-paging': 1.6.2 + '@azure/core-rest-pipeline': 1.19.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.11.0 + '@azure/core-xml': 1.4.4 + '@azure/logger': 1.1.4 + events: 3.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/code-frame@7.26.2': + /@babel/code-frame@7.26.2: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true - '@babel/helper-string-parser@7.25.9': + /@babel/helper-string-parser@7.25.9: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-identifier@7.25.9': + /@babel/helper-validator-identifier@7.25.9: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + dev: true - '@babel/parser@7.26.7': - resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} + /@babel/parser@7.26.8: + resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.26.8 + dev: true - '@babel/runtime@7.26.7': + /@babel/runtime@7.26.7: resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - '@babel/types@7.26.7': - resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} + /@babel/types@7.26.8: + resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: true - '@bcoe/v8-coverage@0.2.3': + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - '@bentley/icons-generic-webfont@1.0.34': + /@bentley/icons-generic-webfont@1.0.34: resolution: {integrity: sha512-5zZgs+himE2vjf39CVlDXMHCFAwSfcoORqJBk3Vji8QVCF8AIX4IX2DO6HlsIAM7szxMNqhz1kd07Xfppro6MA==} + dev: false - '@bentley/imodeljs-native@4.10.33': + /@bentley/imodeljs-native@4.10.33: resolution: {integrity: sha512-Ejoy7JaFLiVaGmgvzfTJp+vvyxYw1slb3E9ZGSgdQiHBxAMOy9pkKANWLcRMV71vIAS+8cEmgiy9fsOqx7KegQ==} + requiresBuild: true + dev: false - '@changesets/apply-release-plan@7.0.8': + /@changesets/apply-release-plan@7.0.8: resolution: {integrity: sha512-qjMUj4DYQ1Z6qHawsn7S71SujrExJ+nceyKKyI9iB+M5p9lCL55afuEd6uLBPRpLGWQwkwvWegDHtwHJb1UjpA==} + dependencies: + '@changesets/config': 3.0.5 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.2 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.1 + dev: false - '@changesets/assemble-release-plan@6.0.5': + /@changesets/assemble-release-plan@6.0.5: resolution: {integrity: sha512-IgvBWLNKZd6k4t72MBTBK3nkygi0j3t3zdC1zrfusYo0KpdsvnDjrMM9vPnTCLCMlfNs55jRL4gIMybxa64FCQ==} + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.1 + dev: false - '@changesets/changelog-git@0.2.0': + /@changesets/changelog-git@0.2.0: resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + dependencies: + '@changesets/types': 6.0.0 + dev: false - '@changesets/cli@2.27.12': + /@changesets/cli@2.27.12: resolution: {integrity: sha512-9o3fOfHYOvBnyEn0mcahB7wzaA3P4bGJf8PNqGit5PKaMEFdsRixik+txkrJWd2VX+O6wRFXpxQL8j/1ANKE9g==} hasBin: true + dependencies: + '@changesets/apply-release-plan': 7.0.8 + '@changesets/assemble-release-plan': 6.0.5 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.5 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-release-plan': 4.0.6 + '@changesets/git': 3.0.2 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.2 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.2 + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + mri: 1.2.0 + p-limit: 2.3.0 + package-manager-detector: 0.2.9 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.1 + spawndamnit: 3.0.1 + term-size: 2.2.1 + dev: false - '@changesets/config@3.0.5': + /@changesets/config@3.0.5: resolution: {integrity: sha512-QyXLSSd10GquX7hY0Mt4yQFMEeqnO5z/XLpbIr4PAkNNoQNKwDyiSrx4yd749WddusH1v3OSiA0NRAYmH/APpQ==} + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + dev: false - '@changesets/errors@0.2.0': + /@changesets/errors@0.2.0: resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + dependencies: + extendable-error: 0.1.7 + dev: false - '@changesets/get-dependents-graph@2.1.2': + /@changesets/get-dependents-graph@2.1.2: resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.1 + dev: false - '@changesets/get-release-plan@4.0.6': + /@changesets/get-release-plan@4.0.6: resolution: {integrity: sha512-FHRwBkY7Eili04Y5YMOZb0ezQzKikTka4wL753vfUA5COSebt7KThqiuCN9BewE4/qFGgF/5t3AuzXx1/UAY4w==} + dependencies: + '@changesets/assemble-release-plan': 6.0.5 + '@changesets/config': 3.0.5 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.2 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + dev: false - '@changesets/get-version-range-type@0.4.0': + /@changesets/get-version-range-type@0.4.0: resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: false - '@changesets/git@3.0.2': + /@changesets/git@3.0.2: resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + dev: false - '@changesets/logger@0.1.1': + /@changesets/logger@0.1.1: resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + dependencies: + picocolors: 1.1.1 + dev: false - '@changesets/parse@0.4.0': + /@changesets/parse@0.4.0: resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + dev: false - '@changesets/pre@2.0.1': + /@changesets/pre@2.0.1: resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: false - '@changesets/read@0.6.2': + /@changesets/read@0.6.2: resolution: {integrity: sha512-wjfQpJvryY3zD61p8jR87mJdyx2FIhEcdXhKUqkja87toMrP/3jtg/Yg29upN+N4Ckf525/uvV7a4tzBlpk6gg==} + dependencies: + '@changesets/git': 3.0.2 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + dev: false - '@changesets/should-skip-package@0.1.1': + /@changesets/should-skip-package@0.1.1: resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + dev: false - '@changesets/types@4.1.0': + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: false - '@changesets/types@6.0.0': + /@changesets/types@6.0.0: resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + dev: false - '@changesets/write@0.3.2': + /@changesets/write@0.3.2: resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} + dependencies: + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + dev: false - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: false - '@esbuild/aix-ppc64@0.21.5': + /@esbuild/aix-ppc64@0.21.5: resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] + requiresBuild: true + optional: true - '@esbuild/android-arm64@0.21.5': + /@esbuild/android-arm64@0.21.5: resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + requiresBuild: true + optional: true - '@esbuild/android-arm@0.21.5': + /@esbuild/android-arm@0.21.5: resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + requiresBuild: true + optional: true - '@esbuild/android-x64@0.21.5': + /@esbuild/android-x64@0.21.5: resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + requiresBuild: true + optional: true - '@esbuild/darwin-arm64@0.21.5': + /@esbuild/darwin-arm64@0.21.5: resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + requiresBuild: true + optional: true - '@esbuild/darwin-x64@0.21.5': + /@esbuild/darwin-x64@0.21.5: resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + requiresBuild: true + optional: true - '@esbuild/freebsd-arm64@0.21.5': + /@esbuild/freebsd-arm64@0.21.5: resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + requiresBuild: true + optional: true - '@esbuild/freebsd-x64@0.21.5': + /@esbuild/freebsd-x64@0.21.5: resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + requiresBuild: true + optional: true - '@esbuild/linux-arm64@0.21.5': + /@esbuild/linux-arm64@0.21.5: resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-arm@0.21.5': + /@esbuild/linux-arm@0.21.5: resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-ia32@0.21.5': + /@esbuild/linux-ia32@0.21.5: resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-loong64@0.21.5': + /@esbuild/linux-loong64@0.21.5: resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-mips64el@0.21.5': + /@esbuild/linux-mips64el@0.21.5: resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-ppc64@0.21.5': + /@esbuild/linux-ppc64@0.21.5: resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-riscv64@0.21.5': + /@esbuild/linux-riscv64@0.21.5: resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-s390x@0.21.5': + /@esbuild/linux-s390x@0.21.5: resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + requiresBuild: true + optional: true - '@esbuild/linux-x64@0.21.5': + /@esbuild/linux-x64@0.21.5: resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + requiresBuild: true + optional: true - '@esbuild/netbsd-x64@0.21.5': + /@esbuild/netbsd-x64@0.21.5: resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + requiresBuild: true + optional: true - '@esbuild/openbsd-x64@0.21.5': + /@esbuild/openbsd-x64@0.21.5: resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + requiresBuild: true + optional: true - '@esbuild/sunos-x64@0.21.5': + /@esbuild/sunos-x64@0.21.5: resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + requiresBuild: true + optional: true - '@esbuild/win32-arm64@0.21.5': + /@esbuild/win32-arm64@0.21.5: resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + requiresBuild: true + optional: true - '@esbuild/win32-ia32@0.21.5': + /@esbuild/win32-ia32@0.21.5: resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + requiresBuild: true + optional: true - '@esbuild/win32-x64@0.21.5': + /@esbuild/win32-x64@0.21.5: resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + requiresBuild: true + optional: true - '@eslint-community/eslint-utils@4.4.1': + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1): resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + dev: false - '@eslint-community/regexpp@4.12.1': + /@eslint-community/regexpp@4.12.1: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false - '@eslint/eslintrc@2.1.4': + /@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.4.0 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false - '@eslint/js@8.57.1': + /@eslint/js@8.57.1: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false - '@floating-ui/core@1.6.9': + /@floating-ui/core@1.6.9: resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + dependencies: + '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.6.13': + /@floating-ui/dom@1.6.13: resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + /@floating-ui/react-dom@2.1.2(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.13 + react: 18.3.1 + react-dom: 18.0.0(react@18.3.1) + dev: false - '@floating-ui/react-dom@2.1.2': + /@floating-ui/react-dom@2.1.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.13 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + /@floating-ui/react@0.26.28(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.0.0)(react@18.3.1) + '@floating-ui/utils': 0.2.9 + react: 18.3.1 + react-dom: 18.0.0(react@18.3.1) + tabbable: 6.2.0 + dev: false - '@floating-ui/react@0.26.28': + /@floating-ui/react@0.26.28(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) + '@floating-ui/utils': 0.2.9 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 - '@floating-ui/utils@0.2.9': + /@floating-ui/utils@0.2.9: resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} - '@humanwhocodes/config-array@0.13.0': + /@humanwhocodes/config-array@0.13.0: resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@itwin/appui-abstract@4.10.6': - resolution: {integrity: sha512-sJ4xaQ0uGYipnOfmjs39/8aYJE0wVqNTppg/9MkDZ69XHqEqHWmLGQ2tajdXN83EHLPKeYtHdbwrgG6f1WaslQ==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - - '@itwin/appui-layout-react@4.8.3': - resolution: {integrity: sha512-7jyEefXWeOXMxREE5+dON2IJ3KercWz7xkMvHSXzHZARjedHZRZKgrgMM5QETrEsRNDixxp0em23mIzwCpVSRg==} - peerDependencies: - '@itwin/appui-abstract': ^3.7.0 || ^4.0.0 - '@itwin/core-bentley': ^3.7.0 || ^4.0.0 - '@itwin/core-react': ^4.8.3 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - - '@itwin/appui-react@5.0.5': - resolution: {integrity: sha512-sPObTeXPfzLdVilB2rfj7s+EQTusLklWjV5dDoJcU5JaaJ5NL+XdcdBUeQRupm4yi9azOo7rV8mJJY8OI238AA==} - peerDependencies: - '@itwin/appui-abstract': ^4.0.0 - '@itwin/components-react': ^5.0.5 - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-common': ^4.0.0 - '@itwin/core-frontend': ^4.0.0 - '@itwin/core-geometry': ^4.0.0 - '@itwin/core-quantity': ^4.0.0 - '@itwin/core-react': ^5.0.5 - '@itwin/core-telemetry': ^4.0.0 - '@itwin/imodel-components-react': ^5.0.5 - '@itwin/itwinui-react': ^3.15.0 - react: ^18.0.0 - react-dom: ^18.0.0 - react-redux: ^7.2.2 || ^8.0.0 || ^9.0.0 - redux: ^4.1.0 || ^5.0.0 - - '@itwin/cloud-agnostic-core@2.3.0': - resolution: {integrity: sha512-oFSaERSqnuXtpzJ/dX61/p47eFoNoZ3NG0F9NUpndmiErVYba8aEnlVHQqXBQb5kycXBd7c9a5Ihnif1ussLLw==} - peerDependencies: - inversify: ^6.0.1 - reflect-metadata: ^0.1.13 - peerDependenciesMeta: - inversify: - optional: true - reflect-metadata: - optional: true - - '@itwin/components-react@5.0.5': - resolution: {integrity: sha512-1Compi2J49PoUTha6bGwablsJPxpnFA+vGWnB6enGdKQRN5942SrYaWrSBesSDCCGcgPE3xNnZymcIlbWg64+Q==} - peerDependencies: - '@itwin/appui-abstract': ^4.0.0 - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-react': ^5.0.5 - '@itwin/itwinui-react': ^3.15.0 - react: ^18.0.0 - react-dom: ^18.0.0 - - '@itwin/core-backend@4.10.6': - resolution: {integrity: sha512-pMjxUiMEW/UyD31BcZofyPWcEP2R85KpumbjQuInOotA+nZ8n94VMrFqrzk+d3FeG+eoRGL4MqUTE4TTr3OoFA==} - engines: {node: ^18.0.0 || ^20.0.0 || ^22.0.0} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-common': ^4.10.6 - '@itwin/core-geometry': ^4.10.6 - '@opentelemetry/api': ^1.0.4 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - - '@itwin/core-bentley@4.10.6': - resolution: {integrity: sha512-7IwXdLVVPJaFdOUym4c0Ry04KW5xzkZ5iCQQ/pQCEqAFtl9YRPp3+gXQoc2L0J+U9sQR7g2pB9p4KdnRv3FOwQ==} - - '@itwin/core-common@4.10.6': - resolution: {integrity: sha512-V7WCwdqi8wF3xFHobFqvKUni4VE4J6burnRdwC/ZeT+J3YEQloxGeg0bm2m6WvLdHPdtIGE9xy5zBFNXMOpGOQ==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-geometry': ^4.10.6 - - '@itwin/core-frontend@4.10.6': - resolution: {integrity: sha512-q0dDRI99F0gTEyvNbZIFk5gGYiviCwnjAvir92nSstF0usjpCxH/9DuqjFj/UPmzagAov7YqTfUZuY+oVsaHLw==} - peerDependencies: - '@itwin/appui-abstract': ^4.10.6 - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-common': ^4.10.6 - '@itwin/core-geometry': ^4.10.6 - '@itwin/core-orbitgt': ^4.10.6 - '@itwin/core-quantity': ^4.10.6 - - '@itwin/core-geometry@4.10.6': - resolution: {integrity: sha512-OoPDNAiGwV4Gz+FKDq2UhEo8nXHiAhYpdfoc5qQMAg536qefa0VY8fS1WFeAiLH/l9yjfd+7tjURBEkkO9fKPQ==} - - '@itwin/core-i18n@4.10.6': - resolution: {integrity: sha512-w3H1ZQaXCkqTkgEmF91B6rkRA7hSHGmHM2jFyPV4803DAJNtdLlp/gFuqU98f4lDI3hWNRpIB1Z74+VZB1OZIA==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - - '@itwin/core-orbitgt@4.10.6': - resolution: {integrity: sha512-vXzDoNM6uMIXR+2Sl7403uJItUDijKg3u/O/Y7ZOrL1T9IwvgqmqHZgwIbPvRIt5JxTUcExm62lzlT4q26qhzg==} - - '@itwin/core-quantity@4.10.6': - resolution: {integrity: sha512-SEQzwXV0UrV2Ij2aBRZrEgtYQADLqQ+/SkexSVTnaGBXpeEAMrYS/M10Cdvw5Tsmi9vgJnYIRQSd6yg28cbplg==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - - '@itwin/core-react@5.0.5': - resolution: {integrity: sha512-7V9/1Q1hW/AduAUjXPDmW1TzMjzTfad7FWznde2AvupKE8cZRRKV3MUlHTsJW8eTeqgNYCfTP93OsHSV4EyquA==} - peerDependencies: - '@itwin/appui-abstract': ^4.0.0 - '@itwin/core-bentley': ^4.0.0 - '@itwin/itwinui-react': ^3.15.0 - react: ^18.0.0 - react-dom: ^18.0.0 - - '@itwin/core-telemetry@4.10.6': - resolution: {integrity: sha512-3KVk+sVucFA8zIhnvoJEe1ykX/f99TjvBsbvnhj1txZj6EKnsCGuowgm2YoC0rVQ5vfQqwvmsDhkNFdkFd8ygA==} - - '@itwin/ecschema-metadata@4.10.6': - resolution: {integrity: sha512-jerWlaSULKkeO20PaMfuLdWQheqLqSQyyc7rwQTEfCzIWTqwyOVkBREQZiNy+B/wNcZWq0lA6aiZGV01brIl3g==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-quantity': ^4.10.6 - - '@itwin/express-server@4.10.6': - resolution: {integrity: sha512-/Os/7BB3c7FFj33GZ+uwiKBvs+mtKEe/SgAIOm/pUydr7XN6IyPNloyODtJz/X2iU6iz7CPcQRAG8ezzxZDA+A==} - engines: {node: ^18.0.0 || ^20.0.0 || ^22.0.0} - peerDependencies: - '@itwin/core-backend': 4.10.6 - '@itwin/core-common': 4.10.6 - - '@itwin/imodel-components-react@5.0.5': - resolution: {integrity: sha512-UhssbH0/F/jlEBiDursr3XY/8BRGmAyn8bRCKtQtNNG7rkGO0euW+aANhWw1kGfD6FMYtm1r8BSxuAI20PnPZA==} - peerDependencies: - '@itwin/appui-abstract': ^4.0.0 - '@itwin/components-react': ^5.0.5 - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-common': ^4.0.0 - '@itwin/core-frontend': ^4.0.0 - '@itwin/core-geometry': ^4.0.0 - '@itwin/core-quantity': ^4.0.0 - '@itwin/core-react': ^5.0.5 - '@itwin/itwinui-react': ^3.15.0 - react: ^18.0.0 - react-dom: ^18.0.0 - - '@itwin/imodels-access-backend@5.2.3': - resolution: {integrity: sha512-et2bNOgZWRS7UCChphdf9gTHjUqOj9Pig4xG8VFmKxVc3q+qSNzkvz7ZEbv4NYGg54sq743jxyIeeE8A6/B9aA==} - peerDependencies: - '@itwin/core-backend': ^4.0.0 - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-common': ^4.0.0 - - '@itwin/imodels-access-common@5.2.3': - resolution: {integrity: sha512-HP3oEe2715rr0EyExBkUgLxrCB6YbkkgiIQc4e8I0zzv/sW+7yygZOC/K/hd+/roTFkdNsiT+W446Bh5cnVuOg==} - peerDependencies: - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-common': ^4.0.0 - - '@itwin/imodels-access-frontend@5.2.3': - resolution: {integrity: sha512-jcfP4WvsTkRfP5r6MYE7FtEN4dw4f249G5TzltAOZGXCtiJjMvCgJ6JKnp6Bz95ZfLgSjZTkhowZGthOTLvuqA==} - peerDependencies: - '@itwin/core-bentley': ^4.0.0 - '@itwin/core-common': ^4.0.0 - '@itwin/core-frontend': ^4.0.0 - - '@itwin/imodels-client-authoring@5.9.0': - resolution: {integrity: sha512-f34dKHccffjyukcBTF7bVZuoOvUi61z6sZ43YLcju/K7WS8dUdtkxaoGYe1Ub3lXg/irsAcBnVIr0j8NNYr+Gg==} - - '@itwin/imodels-client-management@5.9.0': - resolution: {integrity: sha512-bmnpST6Eq0D+CsBsLkOBqcxhRYdC9uJ2oONuIVcl1Ii91R82cXMx284UjtsKtXBzO/YKOhXWHFnQTdxQEa/x3w==} - - '@itwin/itwinui-icons-color-react@2.1.0': - resolution: {integrity: sha512-Rv/ELthIpKzQaHnrlwNbaGp/yWF8vBIxDBXc+I1TSuDf4w2MC6YI0333XJK2emNDQRAcbw7qpxW4cG0o5ELxDA==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - - '@itwin/itwinui-icons-react@2.9.0': - resolution: {integrity: sha512-48oxHUuqEaJOwVRFED0yssfIriX/IQrHd67ffxvEAu7yW1f5a/qFDyImAlwjlzr+4+obBMweshJ8sI+OgziyvA==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - - '@itwin/itwinui-illustrations-react@2.1.0': - resolution: {integrity: sha512-5JR2A3mZy0d0qwwHpveSG3fsXLheJkO6a0GoWb8NQWw5edNZMRynJg0l3hVw3CHMgaaCGbUoKC77MuG0jWDzuA==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - - '@itwin/itwinui-layouts-css@0.4.0': - resolution: {integrity: sha512-yFbE7X5RBpa6SM2MsupUcmt16XcwyTHDG1gsuywVacoDmK2D2BKiqRw3zxx+cutOWTysokIrW2fek1Bo7EBcMA==} - - '@itwin/itwinui-layouts-react@0.4.1': - resolution: {integrity: sha512-zzswhMUTOaIBUf5dM59nhuwhJ3IRqAv1cTJ27GNh3NCR9lsDlOa08jAl6Df11/qZxZh+7YDfXIUWFcRm+9nIHg==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - - '@itwin/itwinui-react@3.16.6': - resolution: {integrity: sha512-JHIuPyit0SV0Q3wlyip4gsI0xI1XFmiuAmMybK16PoZN7KkGpb8tNjHl1lzSczwY8pRPXJRuaYSeq6dZAtJlpw==} - peerDependencies: - react: '>=17.0.0 <19.0.0' - react-dom: '>=17.0.0 <19.0.0' - - '@itwin/itwinui-variables@2.1.2': - resolution: {integrity: sha512-bwaoiqJdPvMCEhccXh5jE/uF83IoHaHofURZV62t9BEhKXW0LF+iaAwCPC+G4Sttgs6tUtqEGsPqj5RnbdipsQ==} - - '@itwin/object-storage-azure@2.3.0': - resolution: {integrity: sha512-WHECH+aBo9OVk5xcY5cdGnj5g08d2jMQefm6Q4rvHcqlfFtCKh4hfUMkaU5GAF8peNZxkxy06Goe206RWTtsVw==} - peerDependencies: - inversify: ^6.0.1 - reflect-metadata: ^0.1.13 - peerDependenciesMeta: - inversify: - optional: true - reflect-metadata: - optional: true - - '@itwin/object-storage-core@2.3.0': - resolution: {integrity: sha512-PAHaTMG7sE1hLlXBmSimxo/oZDJZJ81vS/hJ1p7QnwEu6MEtLgo5wXMU7sy7fHtOeh8ZqzKpXWkQyry5kRDXAg==} - peerDependencies: - inversify: ^6.0.1 - reflect-metadata: ^0.1.13 - peerDependenciesMeta: - inversify: - optional: true - reflect-metadata: - optional: true - - '@itwin/presentation-backend@4.10.6': - resolution: {integrity: sha512-HmnzyX2ue8Qm8DRg1i6huW3uPzizRVqkhTZxV1+hKWYr2PXSR2M7yLf1wc0aaV1YQZ5HS/TIMNUcCcjzBnJUFQ==} - peerDependencies: - '@itwin/core-backend': ^4.10.6 - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-common': ^4.10.6 - '@itwin/core-quantity': ^4.10.6 - '@itwin/ecschema-metadata': ^4.10.6 - '@itwin/presentation-common': ^4.10.6 - - '@itwin/presentation-common@4.10.6': - resolution: {integrity: sha512-EOm4D0SNNgj8GJGohIXFNPYB7omTPqpbRqGObyKWBbDaSoCZj5XK2QB0RDxod6gfUeaN5msmnAzxQyvQIgTk1Q==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-common': ^4.10.6 - '@itwin/core-quantity': ^4.10.6 - '@itwin/ecschema-metadata': ^4.10.6 - - '@itwin/presentation-components@5.10.0': - resolution: {integrity: sha512-4jee/AU7IATiXCA9tyGyh0wfblYa6ddNlUCMQfLASQX1nKtyhoqf5KOxOt8xE7zsqKFeSFJdIV8JwVqNeUHmHg==} - peerDependencies: - '@itwin/appui-abstract': ^4.4.0 - '@itwin/components-react': ^4.9.0 || ^5.0.0 - '@itwin/core-bentley': ^4.4.0 - '@itwin/core-common': ^4.4.0 - '@itwin/core-frontend': ^4.4.0 - '@itwin/core-quantity': ^4.4.0 - '@itwin/core-react': ^4.9.0 || ^5.0.0 - '@itwin/ecschema-metadata': ^4.4.0 - '@itwin/imodel-components-react': ^4.9.0 || ^5.0.0 - '@itwin/itwinui-react': ^3.0.0 - '@itwin/presentation-common': ^4.4.0 - '@itwin/presentation-frontend': ^4.4.0 - '@itwin/unified-selection-react': ^1.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@itwin/unified-selection-react': - optional: true - - '@itwin/presentation-core-interop@1.2.0': - resolution: {integrity: sha512-MxlcJpOXZnMhfwGfrH1Lck8eR2f638bb+lIBa6EP4CY5xLSNk5/zer+Fi6UtOpYdTvIGJcwEJs3Q9BilSnAPgg==} - peerDependencies: - '@itwin/core-bentley': ^4.1.0 - '@itwin/core-common': ^4.1.0 - '@itwin/core-geometry': ^4.1.0 - '@itwin/core-quantity': ^4.1.0 - '@itwin/ecschema-metadata': ^4.1.0 - - '@itwin/presentation-frontend@4.10.6': - resolution: {integrity: sha512-NXjZY6so/+QGAsJb2gTj/vdGv0LJTpW00DWnshWF6Or2PzH4UW7tp9HMY92y3B5aVf+7AE0I1trTtMroPuGCXA==} - peerDependencies: - '@itwin/core-bentley': ^4.10.6 - '@itwin/core-common': ^4.10.6 - '@itwin/core-frontend': ^4.10.6 - '@itwin/core-quantity': ^4.10.6 - '@itwin/ecschema-metadata': ^4.10.6 - '@itwin/presentation-common': ^4.10.6 - - '@itwin/presentation-shared@1.2.0': - resolution: {integrity: sha512-+esa0GJhWxO1MaF5cGH439mOXPXWNX/SZGgaVfPyRE/1DdH33ECaXaeJVSpFqNrrBHn5XxYN5/7Rayb78k2LOg==} - - '@itwin/unified-selection@1.3.0': - resolution: {integrity: sha512-Txh9UrgcV8cXOaCV01Wx1ajc/xN4aVzdvmNtXQzinDqAiCG6rfFLLcXksLKIYpXl0STl/QHw+SXpGnxrv8vk9A==} - - '@itwin/webgl-compatibility@4.10.6': - resolution: {integrity: sha512-yepzz9VMSP7KA0smfnbyK4cWXm17v9pnt19UQkowW3u2GylG6Tc67QCBqCAHUpcOQb6ANu+8N/UDWXy0HkR8ZQ==} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@loaders.gl/core@3.4.15': - resolution: {integrity: sha512-rPOOTuusWlRRNMWg7hymZBoFmPCXWThsA5ZYRfqqXnsgVeQIi8hzcAhJ7zDUIFAd/OSR8ravtqb0SH+3k6MOFQ==} - - '@loaders.gl/draco@3.4.15': - resolution: {integrity: sha512-SStmyP0ZnS4JbWZb2NhrfiHW65uy3pVTTzQDTgXfkR5cD9oDAEu4nCaHbQ8x38/m39FHliCPgS9b1xWvLKQo8w==} - - '@loaders.gl/loader-utils@3.4.15': - resolution: {integrity: sha512-uUx6tCaky6QgCRkqCNuuXiUfpTzKV+ZlJOf6C9bKp62lpvFOv9AwqoXmL23j8nfsENdlzsX3vPhc3en6QQyksA==} - - '@loaders.gl/schema@3.4.15': - resolution: {integrity: sha512-8oRtstz0IsqES7eZd2jQbmCnmExCMtL8T6jWd1+BfmnuyZnQ0B6TNccy++NHtffHdYuzEoQgSELwcdmhSApYew==} - - '@loaders.gl/worker-utils@3.4.15': - resolution: {integrity: sha512-zUUepOYRYmcYIcr/c4Mchox9h5fBFNkD81rsGnLlZyq19QvyHzN+93SVxrLc078gw93t2RKrVcOOZY13zT3t1w==} - - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@probe.gl/env@3.6.0': - resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} - - '@probe.gl/log@3.6.0': - resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==} - - '@probe.gl/stats@3.6.0': - resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==} - - '@remix-run/router@1.21.1': - resolution: {integrity: sha512-KeBYSwohb8g4/wCcnksvKTYlg69O62sQeLynn2YE+5z7JWEj95if27kclW9QqbrlsQ2DINI8fjbV3zyuKfwjKg==} - engines: {node: '>=14.0.0'} - - '@rollup/rollup-android-arm-eabi@4.32.1': - resolution: {integrity: sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.32.1': - resolution: {integrity: sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.32.1': - resolution: {integrity: sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.32.1': - resolution: {integrity: sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.32.1': - resolution: {integrity: sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.32.1': - resolution: {integrity: sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': - resolution: {integrity: sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.32.1': - resolution: {integrity: sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.32.1': - resolution: {integrity: sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.32.1': - resolution: {integrity: sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': - resolution: {integrity: sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': - resolution: {integrity: sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.32.1': - resolution: {integrity: sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.32.1': - resolution: {integrity: sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.32.1': - resolution: {integrity: sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.32.1': - resolution: {integrity: sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.32.1': - resolution: {integrity: sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.32.1': - resolution: {integrity: sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.32.1': - resolution: {integrity: sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q==} - cpu: [x64] - os: [win32] - - '@swc/core-darwin-arm64@1.10.11': - resolution: {integrity: sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.10.11': - resolution: {integrity: sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.10.11': - resolution: {integrity: sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.10.11': - resolution: {integrity: sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.10.11': - resolution: {integrity: sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.10.11': - resolution: {integrity: sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.10.11': - resolution: {integrity: sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.10.11': - resolution: {integrity: sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.10.11': - resolution: {integrity: sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.10.11': - resolution: {integrity: sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.10.11': - resolution: {integrity: sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} - - '@tanstack/react-virtual@3.11.3': - resolution: {integrity: sha512-vCU+OTylXN3hdC8RKg68tPlBPjjxtzon7Ys46MgrSLE+JhSjSTPvoQifV6DQJeJmA8Q3KT6CphJbejupx85vFw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@tanstack/virtual-core@3.11.3': - resolution: {integrity: sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w==} - - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} - - '@testing-library/react@16.2.0': - resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/dotenv-flow@3.3.3': - resolution: {integrity: sha512-aJjBsKw4bfGjvaRwrxBtEOfYZxCAq+LiFTpZ4DGTEK2b9eLVt/IAClapSxMfgV4Mi/2bIBKKjoTCO0lOh4ACLg==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/geojson@7946.0.16': - resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - - '@types/hoist-non-react-statics@3.3.6': - resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@18.19.74': - resolution: {integrity: sha512-HMwEkkifei3L605gFdV+/UwtpxP6JSzM+xFk2Ia6DNFSwSVBRh9qp5Tgf4lNFOMfPVuU0WnkcWpXZpgn5ufO4A==} - - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} - peerDependencies: - '@types/react': ^18.0.0 - - '@types/react-redux@7.1.34': - resolution: {integrity: sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==} - - '@types/react-table@7.7.20': - resolution: {integrity: sha512-ahMp4pmjVlnExxNwxyaDrFgmKxSbPwU23sGQw2gJK4EhCvnvmib2s/O/+y1dfV57dXOwpr2plfyBol+vEHbi2w==} - - '@types/react-window-infinite-loader@1.0.9': - resolution: {integrity: sha512-gEInTjQwURCnDOFyIEK2+fWB5gTjqwx30O62QfxA9stE5aiB6EWkGj4UMhc0axq7/FV++Gs/TGW8FtgEx0S6Tw==} - - '@types/react-window@1.8.8': - resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - - '@types/react@18.3.18': - resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} - - '@types/strip-bom@3.0.0': - resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} - - '@types/strip-json-comments@0.0.30': - resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} - - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - - '@vitejs/plugin-react-swc@3.7.2': - resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==} - peerDependencies: - vite: ^4 || ^5 || ^6 - - '@vitest/coverage-v8@2.1.8': - resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==} - peerDependencies: - '@vitest/browser': 2.1.8 - vitest: 2.1.8 - peerDependenciesMeta: - '@vitest/browser': - optional: true - - '@vitest/expect@2.1.8': - resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} - - '@vitest/mocker@2.1.8': - resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@2.1.8': - resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - - '@vitest/runner@2.1.8': - resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} - - '@vitest/snapshot@2.1.8': - resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} - - '@vitest/spy@2.1.8': - resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} - - '@vitest/utils@2.1.8': - resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axios@1.7.9: - resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@0.0.8: - resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} - engines: {node: '>= 0.4'} - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - classnames@2.3.1: - resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} - - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - cpx2@5.0.0: - resolution: {integrity: sha512-43LMini/KvlKMHjU7solCgVgNBspCmQ1noP5ckMa0VApaXrJFLcdfSxZxcdvH3wWcOvCwFGvOPBawOesI3oWMQ==} - engines: {node: '>=16'} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-fetch@3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} - - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - - dompurify@2.5.8: - resolution: {integrity: sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==} - - dotenv-flow@3.3.0: - resolution: {integrity: sha512-GLSvRqDZ1TGhloS6ZCZ5chdqqv/3XMqZxAnX9rliJiHn6uyJLguKeu+3M2kcagBkoVCnLWYfbR4rfFe1xSU39A==} - engines: {node: '>= 8.0.0'} - - dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - - draco3d@1.5.5: - resolution: {integrity: sha512-JVuNV0EJzD3LBYhGyIXJLeBID/EVtmFO1ZNhAYflTgiMiAJlbhXQmRRda/azjc8MRVMHh0gqGhiqHUo5dIXM8Q==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - dynamic-dedupe@0.3.0: - resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.37.4: - resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-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} - - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} - - express-ws@5.0.2: - resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==} - engines: {node: '>=4.5.0'} - peerDependencies: - express: ^4.0.0 || ^5.0.0-alpha.1 - - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-sort@3.4.1: - resolution: {integrity: sha512-76uvGPsF6So53sZAqenP9UVT3p5l7cyTHkLWVCMinh41Y8NDrK1IYXJgaBMfc1gk7nJiSRZp676kddFG2Aa5+A==} - - fast-xml-parser@4.5.1: - resolution: {integrity: sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==} - hasBin: true - - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-index@0.1.1: - resolution: {integrity: sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatbuffers@1.12.0: - resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} - - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.4: - resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} - engines: {node: '>= 0.4'} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - fuse.js@3.6.1: - resolution: {integrity: sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==} - engines: {node: '>=6'} - - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - glob-gitignore@1.0.15: - resolution: {integrity: sha512-22pvDWt2hMPfL3UF6lWcZpP+VIwBekJyj6xyb1DpeSALJm+n/0gI9lWD30kvA/h3bgPqYeAX7xGONzmyHrSfqQ==} - engines: {node: '>= 6'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob2base@0.0.12: - resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} - engines: {node: '>= 0.10'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - happy-dom@15.11.7: - resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} - engines: {node: '>=18.0.0'} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - - i18next-browser-languagedetector@6.1.8: - resolution: {integrity: sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==} - - i18next-http-backend@1.4.5: - resolution: {integrity: sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==} - - i18next@21.10.0: - resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - immer@10.1.1: - resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - - immer@9.0.6: - resolution: {integrity: sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==} - - immutable@5.0.3: - resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - inversify@6.0.3: - resolution: {integrity: sha512-s/svzcRQ/scaGUUyaVtFSL1dvOaRgyvE7VvpGcJwXmFz7CCzfSfxC/Uyl7iSHDEmBabJ2gbDES72DaygtMmwvg==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} - engines: {node: '>= 0.4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jotai@2.11.1: - resolution: {integrity: sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jwt-decode@3.1.2: - resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - linebreak@1.1.0: - resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} - - linkify-it@2.2.0: - resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} - - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - make-array@1.0.5: - resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} - engines: {node: '>=0.10.0'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - meshoptimizer@0.20.0: - resolution: {integrity: sha512-olcJ1q+YVnjroRJpCL1Dj5aZxr2JMr2hRutMUwhuHZvpAL7SIZgOT6eMlFF4TbBGSR89tawE/gqB79J/LrW/Nw==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micro-memoize@4.1.3: - resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multiparty@4.2.3: - resolution: {integrity: sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==} - engines: {node: '>= 0.10'} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-all@4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - - object-assign@3.0.0: - resolution: {integrity: sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@1.3.1: - resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} - engines: {node: '>= 0.10.0'} - - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - oidc-client-ts@2.4.1: - resolution: {integrity: sha512-IxlGMsbkZPsHJGCliWT3LxjUcYzmiN21656n/Zt2jDncZlBFc//cd8WqFF0Lt681UT3AImM57E6d4N53ziTCYA==} - engines: {node: '>=12.13.0'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@6.0.0: - resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} - engines: {node: '>=16'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - package-manager-detector@0.2.8: - resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - random-bytes@1.0.0: - resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} - engines: {node: '>= 0.8'} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - react-autosuggest@10.1.0: - resolution: {integrity: sha512-/azBHmc6z/31s/lBf6irxPf/7eejQdR0IqnZUzjdSibtlS8+Rw/R79pgDAo6Ft5QqCUTyEQ+f0FhL+1olDQ8OA==} - peerDependencies: - react: '>=16.3.0' - - react-dom@18.0.0: - resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} - peerDependencies: - react: ^18.0.0 - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-error-boundary@4.1.2: - resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} - peerDependencies: - react: '>=16.13.1' - - react-error-boundary@5.0.0: - resolution: {integrity: sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ==} - peerDependencies: - react: '>=16.13.1' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-redux@7.2.9: - resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} - peerDependencies: - react: ^16.8.3 || ^17 || ^18 - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - react-router-dom@6.28.2: - resolution: {integrity: sha512-O81EWqNJWqvlN/a7eTudAdQm0TbI7hw+WIi7OwwMcTn5JMyZ0ibTFNGz+t+Lju0df4LcqowCegcrK22lB1q9Kw==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router@6.28.2: - resolution: {integrity: sha512-BgFY7+wEGVjHCiqaj2XiUBQ1kkzfg6UoKYwEe0wv+FF+HNPCxtS/MVPvLAPH++EsuCMReZl9RYVGqcHLk5ms3A==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - - react-table@7.8.0: - resolution: {integrity: sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==} - peerDependencies: - react: ^16.8.3 || ^17.0.0-0 || ^18.0.0 - - react-themeable@1.1.0: - resolution: {integrity: sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w==} - - react-transition-group@4.4.5: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' - - react-window-infinite-loader@1.0.10: - resolution: {integrity: sha512-NO/csdHlxjWqA2RJZfzQgagAjGHspbO2ik9GtWZb0BY1Nnapq0auG8ErI+OhGCzpjYJsCYerqUlK6hkq9dfAAA==} - engines: {node: '>8.0.0'} - peerDependencies: - react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-window@1.8.11: - resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} - engines: {node: '>8.0.0'} - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} - engines: {node: '>= 14.18.0'} - - redux@4.2.1: - resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} - - reflect-metadata@0.1.14: - resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rollup@4.32.1: - resolution: {integrity: sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs-for-await@1.0.0: - resolution: {integrity: sha512-MJhvf1vtQaljd5wlzsasvOjcohVogzkHkUI0gFE9nGhZ15/fT2vR1CjkLEh37oRqWwpv11vHo5D+sLM+Aw9Y8g==} - peerDependencies: - rxjs: ^7.0.0 - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass@1.83.4: - resolution: {integrity: sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==} - engines: {node: '>=14.0.0'} - hasBin: true - - scheduler@0.21.0: - resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - section-iterator@2.0.0: - resolution: {integrity: sha512-xvTNwcbeDayXotnV32zLb3duQsP+4XosHpb/F+tu6VzEZFmIjzPdNk6/O+QOOx5XTh08KL2ufdXeCO33p380pQ==} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shallow-equal@1.2.1: - resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} - engines: {node: '>= 0.4'} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.padend@3.1.6: - resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - subarg@1.0.0: - resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - tiny-inflate@1.0.3: - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - touch@3.1.1: - resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} - hasBin: true - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-key-enum@2.0.13: - resolution: {integrity: sha512-zixs6j8+NhzazLUQ1SiFrlo1EFWG/DbqLuUGcWWZ5zhwjRT7kbi1hBlofxdqel+h28zrby2It5TrOyKp04kvqw==} - - ts-node-dev@2.0.0: - resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} - engines: {node: '>=0.8.0'} - hasBin: true - peerDependencies: - node-notifier: '*' - typescript: '*' - peerDependenciesMeta: - node-notifier: - optional: true - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfck@3.1.4: - resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfig@7.0.0: - resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true - - uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - - uid-safe@2.1.5: - resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} - engines: {node: '>= 0.8'} - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-sync-external-store@1.4.0: - resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - util.inherits@1.0.3: - resolution: {integrity: sha512-gMirHcfcq5D87nXDwbZqf5vl65S0mpMZBsHXJsXOO3Hc3G+JoQLwgaJa1h+PL7h3WhocnuLqoe8CuvMlztkyCA==} - engines: {node: '>=4'} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vite-node@2.1.8: - resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-plugin-static-copy@1.0.6: - resolution: {integrity: sha512-3uSvsMwDVFZRitqoWHj0t4137Kz7UynnJeq1EZlRW7e25h2068fyIZX4ORCCOAkfp1FklGxJNVJBkBOD+PZIew==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: ^5.0.0 - - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite@5.4.14: - resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@2.1.8: - resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.8 - '@vitest/ui': 2.1.8 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - - wms-capabilities@0.4.0: - resolution: {integrity: sha512-dGe1SQ4GySIfsmGF+yk07QRsed0DgJJkPpimbmehE9nGXLqIGhbpi6pNk71YENqupLPSqcABDrKZ1UqepOhCyA==} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zustand@4.5.6: - resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@azure/abort-controller@1.1.0': - dependencies: - tslib: 2.8.1 - - '@azure/abort-controller@2.1.2': - dependencies: - tslib: 2.8.1 - - '@azure/core-auth@1.9.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - tslib: 2.8.1 - - '@azure/core-client@1.9.2': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.18.2 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-http-compat@2.1.2': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.18.2 - transitivePeerDependencies: - - supports-color - - '@azure/core-lro@2.7.2': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - - '@azure/core-paging@1.6.2': - dependencies: - tslib: 2.8.1 - - '@azure/core-rest-pipeline@1.18.2': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-tracing@1.2.0': - dependencies: - tslib: 2.8.1 - - '@azure/core-util@1.11.0': - dependencies: - '@azure/abort-controller': 2.1.2 - tslib: 2.8.1 - - '@azure/core-xml@1.4.4': - dependencies: - fast-xml-parser: 4.5.1 - tslib: 2.8.1 - - '@azure/logger@1.1.4': - dependencies: - tslib: 2.8.1 - - '@azure/storage-blob@12.26.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-client': 1.9.2 - '@azure/core-http-compat': 2.1.2 - '@azure/core-lro': 2.7.2 - '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.18.2 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/core-xml': 1.4.4 - '@azure/logger': 1.1.4 - events: 3.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/parser@7.26.7': - dependencies: - '@babel/types': 7.26.7 - - '@babel/runtime@7.26.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/types@7.26.7': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@bentley/icons-generic-webfont@1.0.34': {} - - '@bentley/imodeljs-native@4.10.33': {} - - '@changesets/apply-release-plan@7.0.8': - dependencies: - '@changesets/config': 3.0.5 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.2 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.6.3 - - '@changesets/assemble-release-plan@6.0.5': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.6.3 - - '@changesets/changelog-git@0.2.0': - dependencies: - '@changesets/types': 6.0.0 - - '@changesets/cli@2.27.12': - dependencies: - '@changesets/apply-release-plan': 7.0.8 - '@changesets/assemble-release-plan': 6.0.5 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.5 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 - '@changesets/get-release-plan': 4.0.6 - '@changesets/git': 3.0.2 - '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.2 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.2 - '@manypkg/get-packages': 1.1.3 - ansi-colors: 4.1.3 - ci-info: 3.9.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - mri: 1.2.0 - p-limit: 2.3.0 - package-manager-detector: 0.2.8 - picocolors: 1.1.1 - resolve-from: 5.0.0 - semver: 7.6.3 - spawndamnit: 3.0.1 - term-size: 2.2.1 - - '@changesets/config@3.0.5': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 - '@changesets/logger': 0.1.1 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.8 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.1.2': - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.1 - semver: 7.6.3 - - '@changesets/get-release-plan@4.0.6': - dependencies: - '@changesets/assemble-release-plan': 6.0.5 - '@changesets/config': 3.0.5 - '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.2 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.2': - dependencies: - '@changesets/errors': 0.2.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.8 - spawndamnit: 3.0.1 - - '@changesets/logger@0.1.1': - dependencies: - picocolors: 1.1.1 - - '@changesets/parse@0.4.0': - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - - '@changesets/pre@2.0.1': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.2': - dependencies: - '@changesets/git': 3.0.2 - '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - p-filter: 2.1.0 - picocolors: 1.1.1 - - '@changesets/should-skip-package@0.1.1': - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.0.0': {} - - '@changesets/write@0.3.2': - dependencies: - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.1': {} - - '@floating-ui/core@1.6.9': - dependencies: - '@floating-ui/utils': 0.2.9 - - '@floating-ui/dom@1.6.13': - dependencies: - '@floating-ui/core': 1.6.9 - '@floating-ui/utils': 0.2.9 - - '@floating-ui/react-dom@2.1.2(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.13 - react: 18.3.1 - react-dom: 18.0.0(react@18.3.1) - - '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.13 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/react@0.26.28(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.9 - react: 18.3.1 - react-dom: 18.0.0(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.9 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/utils@0.2.9': {} - - '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: false - '@humanwhocodes/module-importer@1.0.1': {} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false - '@humanwhocodes/object-schema@2.0.3': {} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: false - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 + string-width-cjs: /string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true - '@istanbuljs/schema@0.1.3': {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true - '@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6)': + /@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6): + resolution: {integrity: sha512-sJ4xaQ0uGYipnOfmjs39/8aYJE0wVqNTppg/9MkDZ69XHqEqHWmLGQ2tajdXN83EHLPKeYtHdbwrgG6f1WaslQ==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 - '@itwin/appui-layout-react@4.8.3(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/appui-layout-react@4.8.3(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-7jyEefXWeOXMxREE5+dON2IJ3KercWz7xkMvHSXzHZARjedHZRZKgrgMM5QETrEsRNDixxp0em23mIzwCpVSRg==} + peerDependencies: + '@itwin/appui-abstract': ^3.7.0 || ^4.0.0 + '@itwin/core-bentley': ^3.7.0 || ^4.0.0 + '@itwin/core-react': ^4.8.3 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-bentley': 4.10.6 - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) '@itwin/itwinui-variables': 2.1.2 classnames: 2.3.1 immer: 9.0.6 lodash: 4.17.21 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.0.0)(react@18.3.1) ts-key-enum: 2.0.13 zustand: 4.5.6(@types/react@18.3.18)(immer@9.0.6)(react@18.3.1) transitivePeerDependencies: - '@types/react' + dev: false - '@itwin/appui-react@5.0.5(5eet7rlgzhisqkljx4yn65oyxq)': + /@itwin/appui-react@5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/core-telemetry@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@types/react@18.3.18)(react-dom@18.0.0)(react-redux@7.2.9)(react@18.3.1)(redux@4.2.1): + resolution: {integrity: sha512-sPObTeXPfzLdVilB2rfj7s+EQTusLklWjV5dDoJcU5JaaJ5NL+XdcdBUeQRupm4yi9azOo7rV8mJJY8OI238AA==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.0.5 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.0.5 + '@itwin/core-telemetry': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.5 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + react-redux: ^7.2.2 || ^8.0.0 || ^9.0.0 + redux: ^4.1.0 || ^5.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-geometry': 4.10.6 '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/core-telemetry': 4.10.6(@itwin/core-geometry@4.10.6) - '@itwin/imodel-components-react': 5.0.5(4ihtqazybsdwzghixnn5lgqzle) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/imodel-components-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) classnames: 2.5.1 immer: 10.1.1 lodash: 4.17.21 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) react-error-boundary: 5.0.0(react@18.3.1) - react-redux: 7.2.9(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + react-redux: 7.2.9(react-dom@18.0.0)(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.0.0)(react@18.3.1) redux: 4.2.1 rxjs: 7.8.1 ts-key-enum: 2.0.13 zustand: 4.5.6(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1) transitivePeerDependencies: - '@types/react' + dev: false - '@itwin/cloud-agnostic-core@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14)': - optionalDependencies: + /@itwin/cloud-agnostic-core@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-oFSaERSqnuXtpzJ/dX61/p47eFoNoZ3NG0F9NUpndmiErVYba8aEnlVHQqXBQb5kycXBd7c9a5Ihnif1ussLLw==} + peerDependencies: + inversify: ^6.0.1 + reflect-metadata: ^0.1.13 + peerDependenciesMeta: + inversify: + optional: true + reflect-metadata: + optional: true + dependencies: inversify: 6.0.3 reflect-metadata: 0.1.14 - '@itwin/components-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/components-react@5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-1Compi2J49PoUTha6bGwablsJPxpnFA+vGWnB6enGdKQRN5942SrYaWrSBesSDCCGcgPE3xNnZymcIlbWg64+Q==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-react': ^5.0.5 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-bentley': 4.10.6 - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) classnames: 2.5.1 immer: 10.1.1 linkify-it: 2.2.0 lodash: 4.17.21 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) - react-window: 1.8.11(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + react-window: 1.8.11(react-dom@18.0.0)(react@18.3.1) rxjs: 7.8.1 ts-key-enum: 2.0.13 + dev: false - '@itwin/components-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/components-react@5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1Compi2J49PoUTha6bGwablsJPxpnFA+vGWnB6enGdKQRN5942SrYaWrSBesSDCCGcgPE3xNnZymcIlbWg64+Q==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-react': ^5.0.5 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-bentley': 4.10.6 - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 immer: 10.1.1 linkify-it: 2.2.0 lodash: 4.17.21 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-window: 1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: 1.8.11(react-dom@18.3.1)(react@18.3.1) rxjs: 7.8.1 ts-key-enum: 2.0.13 + dev: true - '@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)': + /@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6): + resolution: {integrity: sha512-pMjxUiMEW/UyD31BcZofyPWcEP2R85KpumbjQuInOotA+nZ8n94VMrFqrzk+d3FeG+eoRGL4MqUTE4TTr3OoFA==} + engines: {node: ^18.0.0 || ^20.0.0 || ^22.0.0} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-common': ^4.10.6 + '@itwin/core-geometry': ^4.10.6 + '@opentelemetry/api': ^1.0.4 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true dependencies: '@bentley/imodeljs-native': 4.10.33 '@itwin/cloud-agnostic-core': 2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14) @@ -4280,7 +1197,7 @@ snapshots: linebreak: 1.1.0 multiparty: 4.2.3 reflect-metadata: 0.1.14 - semver: 7.6.3 + semver: 7.7.1 touch: 3.1.1 ws: 7.5.10 transitivePeerDependencies: @@ -4288,17 +1205,31 @@ snapshots: - debug - supports-color - utf-8-validate + dev: false - '@itwin/core-bentley@4.10.6': {} + /@itwin/core-bentley@4.10.6: + resolution: {integrity: sha512-7IwXdLVVPJaFdOUym4c0Ry04KW5xzkZ5iCQQ/pQCEqAFtl9YRPp3+gXQoc2L0J+U9sQR7g2pB9p4KdnRv3FOwQ==} - '@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6)': + /@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6): + resolution: {integrity: sha512-V7WCwdqi8wF3xFHobFqvKUni4VE4J6burnRdwC/ZeT+J3YEQloxGeg0bm2m6WvLdHPdtIGE9xy5zBFNXMOpGOQ==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-geometry': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-geometry': 4.10.6 flatbuffers: 1.12.0 js-base64: 3.7.7 - '@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14)': + /@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6): + resolution: {integrity: sha512-q0dDRI99F0gTEyvNbZIFk5gGYiviCwnjAvir92nSstF0usjpCxH/9DuqjFj/UPmzagAov7YqTfUZuY+oVsaHLw==} + peerDependencies: + '@itwin/appui-abstract': ^4.10.6 + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-common': ^4.10.6 + '@itwin/core-geometry': ^4.10.6 + '@itwin/core-orbitgt': ^4.10.6 + '@itwin/core-quantity': ^4.10.6 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/cloud-agnostic-core': 2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14) @@ -4322,12 +1253,16 @@ snapshots: - inversify - reflect-metadata - '@itwin/core-geometry@4.10.6': + /@itwin/core-geometry@4.10.6: + resolution: {integrity: sha512-OoPDNAiGwV4Gz+FKDq2UhEo8nXHiAhYpdfoc5qQMAg536qefa0VY8fS1WFeAiLH/l9yjfd+7tjURBEkkO9fKPQ==} dependencies: '@itwin/core-bentley': 4.10.6 flatbuffers: 1.12.0 - '@itwin/core-i18n@4.10.6(@itwin/core-bentley@4.10.6)': + /@itwin/core-i18n@4.10.6(@itwin/core-bentley@4.10.6): + resolution: {integrity: sha512-w3H1ZQaXCkqTkgEmF91B6rkRA7hSHGmHM2jFyPV4803DAJNtdLlp/gFuqU98f4lDI3hWNRpIB1Z74+VZB1OZIA==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 i18next: 21.10.0 @@ -4336,18 +1271,29 @@ snapshots: transitivePeerDependencies: - encoding - '@itwin/core-orbitgt@4.10.6': {} + /@itwin/core-orbitgt@4.10.6: + resolution: {integrity: sha512-vXzDoNM6uMIXR+2Sl7403uJItUDijKg3u/O/Y7ZOrL1T9IwvgqmqHZgwIbPvRIt5JxTUcExm62lzlT4q26qhzg==} - '@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)': + /@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6): + resolution: {integrity: sha512-SEQzwXV0UrV2Ij2aBRZrEgtYQADLqQ+/SkexSVTnaGBXpeEAMrYS/M10Cdvw5Tsmi9vgJnYIRQSd6yg28cbplg==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 - '@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/core-react@5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-4PylnDL3w0zALa47n9LZElWZDrDrgcKau3R6aQI7OXntgPOoisT15TPa6NffEQt6/VsS6dhpD+xbpDMxEAv0gQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-bentley': 4.10.6 - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) classnames: 2.5.1 dompurify: 2.5.8 lodash: 4.17.21 @@ -4355,13 +1301,21 @@ snapshots: react-autosuggest: 10.1.0(react@18.3.1) react-dom: 18.0.0(react@18.3.1) ts-key-enum: 2.0.13 + dev: false - '@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/core-react@5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4PylnDL3w0zALa47n9LZElWZDrDrgcKau3R6aQI7OXntgPOoisT15TPa6NffEQt6/VsS6dhpD+xbpDMxEAv0gQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) '@itwin/core-bentley': 4.10.6 - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dompurify: 2.5.8 lodash: 4.17.21 @@ -4369,22 +1323,33 @@ snapshots: react-autosuggest: 10.1.0(react@18.3.1) react-dom: 18.3.1(react@18.3.1) ts-key-enum: 2.0.13 + dev: true - '@itwin/core-telemetry@4.10.6(@itwin/core-geometry@4.10.6)': + /@itwin/core-telemetry@4.10.6(@itwin/core-geometry@4.10.6): + resolution: {integrity: sha512-3KVk+sVucFA8zIhnvoJEe1ykX/f99TjvBsbvnhj1txZj6EKnsCGuowgm2YoC0rVQ5vfQqwvmsDhkNFdkFd8ygA==} dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) transitivePeerDependencies: - '@itwin/core-geometry' - '@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))': + /@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6): + resolution: {integrity: sha512-jerWlaSULKkeO20PaMfuLdWQheqLqSQyyc7rwQTEfCzIWTqwyOVkBREQZiNy+B/wNcZWq0lA6aiZGV01brIl3g==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-quantity': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/express-server@4.10.6(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))': + /@itwin/express-server@4.10.6(@itwin/core-backend@4.10.6)(@itwin/core-common@4.10.6): + resolution: {integrity: sha512-/Os/7BB3c7FFj33GZ+uwiKBvs+mtKEe/SgAIOm/pUydr7XN6IyPNloyODtJz/X2iU6iz7CPcQRAG8ezzxZDA+A==} + engines: {node: ^18.0.0 || ^20.0.0 || ^22.0.0} + peerDependencies: + '@itwin/core-backend': 4.10.6 + '@itwin/core-common': 4.10.6 dependencies: - '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6) + '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) express: 4.21.2 express-ws: 5.0.2(express@4.21.2) @@ -4392,75 +1357,122 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: false - '@itwin/imodel-components-react@5.0.5(4ihtqazybsdwzghixnn5lgqzle)': + /@itwin/imodel-components-react@5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-lf8glE1ASTfj18TFU5BtgFPD82PrVIO49Q+EPs270zs0zvuNh8UH7T1cCX0nSAv8/KYuGQc7s7/7qnNR32uThA==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.1.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.1.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-geometry': 4.10.6 '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) classnames: 2.5.1 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) ts-key-enum: 2.0.13 + dev: false - '@itwin/imodel-components-react@5.0.5(t7hi6llosdstuyilze33aykrsq)': + /@itwin/imodel-components-react@5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-lf8glE1ASTfj18TFU5BtgFPD82PrVIO49Q+EPs270zs0zvuNh8UH7T1cCX0nSAv8/KYuGQc7s7/7qnNR32uThA==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.1.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.1.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-geometry': 4.10.6 '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ts-key-enum: 2.0.13 + dev: true - '@itwin/imodels-access-backend@5.2.3(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14)': + /@itwin/imodels-access-backend@5.2.3(@itwin/core-backend@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6): + resolution: {integrity: sha512-et2bNOgZWRS7UCChphdf9gTHjUqOj9Pig4xG8VFmKxVc3q+qSNzkvz7ZEbv4NYGg54sq743jxyIeeE8A6/B9aA==} + peerDependencies: + '@itwin/core-backend': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 dependencies: '@azure/abort-controller': 1.1.0 - '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6) + '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/imodels-access-common': 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6)) - '@itwin/imodels-client-authoring': 5.9.0(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/imodels-access-common': 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6) + '@itwin/imodels-client-authoring': 5.9.0 axios: 1.7.9 transitivePeerDependencies: - debug - inversify - reflect-metadata - supports-color + dev: false - '@itwin/imodels-access-common@5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))': + /@itwin/imodels-access-common@5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6): + resolution: {integrity: sha512-HP3oEe2715rr0EyExBkUgLxrCB6YbkkgiIQc4e8I0zzv/sW+7yygZOC/K/hd+/roTFkdNsiT+W446Bh5cnVuOg==} + peerDependencies: + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/imodels-client-management': 5.9.0 transitivePeerDependencies: - debug + dev: false - '@itwin/imodels-access-frontend@5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))': + /@itwin/imodels-access-frontend@5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6): + resolution: {integrity: sha512-jcfP4WvsTkRfP5r6MYE7FtEN4dw4f249G5TzltAOZGXCtiJjMvCgJ6JKnp6Bz95ZfLgSjZTkhowZGthOTLvuqA==} + peerDependencies: + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) - '@itwin/imodels-access-common': 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6)) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) + '@itwin/imodels-access-common': 5.2.3(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6) '@itwin/imodels-client-management': 5.9.0 transitivePeerDependencies: - debug + dev: false - '@itwin/imodels-client-authoring@5.9.0(inversify@6.0.3)(reflect-metadata@0.1.14)': + /@itwin/imodels-client-authoring@5.9.0: + resolution: {integrity: sha512-f34dKHccffjyukcBTF7bVZuoOvUi61z6sZ43YLcju/K7WS8dUdtkxaoGYe1Ub3lXg/irsAcBnVIr0j8NNYr+Gg==} dependencies: '@azure/storage-blob': 12.26.0 '@itwin/imodels-client-management': 5.9.0 @@ -4471,139 +1483,235 @@ snapshots: - inversify - reflect-metadata - supports-color + dev: false - '@itwin/imodels-client-management@5.9.0': + /@itwin/imodels-client-management@5.9.0: + resolution: {integrity: sha512-bmnpST6Eq0D+CsBsLkOBqcxhRYdC9uJ2oONuIVcl1Ii91R82cXMx284UjtsKtXBzO/YKOhXWHFnQTdxQEa/x3w==} dependencies: axios: 1.7.9 transitivePeerDependencies: - debug + dev: false - '@itwin/itwinui-icons-color-react@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-icons-color-react@2.1.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Rv/ELthIpKzQaHnrlwNbaGp/yWF8vBIxDBXc+I1TSuDf4w2MC6YI0333XJK2emNDQRAcbw7qpxW4cG0o5ELxDA==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - '@itwin/itwinui-icons-react@2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-icons-react@2.9.0(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-48oxHUuqEaJOwVRFED0yssfIriX/IQrHd67ffxvEAu7yW1f5a/qFDyImAlwjlzr+4+obBMweshJ8sI+OgziyvA==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - '@itwin/itwinui-icons-react@2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-icons-react@2.9.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-48oxHUuqEaJOwVRFED0yssfIriX/IQrHd67ffxvEAu7yW1f5a/qFDyImAlwjlzr+4+obBMweshJ8sI+OgziyvA==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@itwin/itwinui-illustrations-react@2.1.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-illustrations-react@2.1.0(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-5JR2A3mZy0d0qwwHpveSG3fsXLheJkO6a0GoWb8NQWw5edNZMRynJg0l3hVw3CHMgaaCGbUoKC77MuG0jWDzuA==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - '@itwin/itwinui-illustrations-react@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-illustrations-react@2.1.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-5JR2A3mZy0d0qwwHpveSG3fsXLheJkO6a0GoWb8NQWw5edNZMRynJg0l3hVw3CHMgaaCGbUoKC77MuG0jWDzuA==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@itwin/itwinui-layouts-css@0.4.0': {} + /@itwin/itwinui-layouts-css@0.4.0: + resolution: {integrity: sha512-yFbE7X5RBpa6SM2MsupUcmt16XcwyTHDG1gsuywVacoDmK2D2BKiqRw3zxx+cutOWTysokIrW2fek1Bo7EBcMA==} + dev: false - '@itwin/itwinui-layouts-react@0.4.1(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-layouts-react@0.4.1(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-zzswhMUTOaIBUf5dM59nhuwhJ3IRqAv1cTJ27GNh3NCR9lsDlOa08jAl6Df11/qZxZh+7YDfXIUWFcRm+9nIHg==} + peerDependencies: + react: '>=16.8.6' + react-dom: '>=16.8.6' dependencies: '@itwin/itwinui-layouts-css': 0.4.0 classnames: 2.5.1 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - '@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-JHIuPyit0SV0Q3wlyip4gsI0xI1XFmiuAmMybK16PoZN7KkGpb8tNjHl1lzSczwY8pRPXJRuaYSeq6dZAtJlpw==} + peerDependencies: + react: '>=17.0.0 <19.0.0' + react-dom: '>=17.0.0 <19.0.0' dependencies: - '@floating-ui/react': 0.26.28(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@floating-ui/react': 0.26.28(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0)(react@18.3.1) '@swc/helpers': 0.5.15 - '@tanstack/react-virtual': 3.11.3(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@tanstack/react-virtual': 3.13.0(react-dom@18.0.0)(react@18.3.1) classnames: 2.5.1 - jotai: 2.11.1(@types/react@18.3.18)(react@18.3.1) + jotai: 2.11.3(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.0.0(react@18.3.1) react-table: 7.8.0(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.0.0)(react@18.3.1) transitivePeerDependencies: - '@types/react' + dev: false - '@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-JHIuPyit0SV0Q3wlyip4gsI0xI1XFmiuAmMybK16PoZN7KkGpb8tNjHl1lzSczwY8pRPXJRuaYSeq6dZAtJlpw==} + peerDependencies: + react: '>=17.0.0 <19.0.0' + react-dom: '>=17.0.0 <19.0.0' dependencies: - '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react': 0.26.28(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.3.1)(react@18.3.1) '@swc/helpers': 0.5.15 - '@tanstack/react-virtual': 3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-virtual': 3.13.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - jotai: 2.11.1(@types/react@18.3.18)(react@18.3.1) + jotai: 2.11.3(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-table: 7.8.0(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@itwin/itwinui-variables@2.1.2': {} + /@itwin/itwinui-variables@2.1.2: + resolution: {integrity: sha512-bwaoiqJdPvMCEhccXh5jE/uF83IoHaHofURZV62t9BEhKXW0LF+iaAwCPC+G4Sttgs6tUtqEGsPqj5RnbdipsQ==} + dev: false - '@itwin/object-storage-azure@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14)': + /@itwin/object-storage-azure@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-WHECH+aBo9OVk5xcY5cdGnj5g08d2jMQefm6Q4rvHcqlfFtCKh4hfUMkaU5GAF8peNZxkxy06Goe206RWTtsVw==} + peerDependencies: + inversify: ^6.0.1 + reflect-metadata: ^0.1.13 + peerDependenciesMeta: + inversify: + optional: true + reflect-metadata: + optional: true dependencies: '@azure/core-paging': 1.6.2 '@azure/storage-blob': 12.26.0 '@itwin/cloud-agnostic-core': 2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14) '@itwin/object-storage-core': 2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14) - optionalDependencies: inversify: 6.0.3 reflect-metadata: 0.1.14 transitivePeerDependencies: - debug - supports-color + dev: false - '@itwin/object-storage-core@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14)': + /@itwin/object-storage-core@2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-PAHaTMG7sE1hLlXBmSimxo/oZDJZJ81vS/hJ1p7QnwEu6MEtLgo5wXMU7sy7fHtOeh8ZqzKpXWkQyry5kRDXAg==} + peerDependencies: + inversify: ^6.0.1 + reflect-metadata: ^0.1.13 + peerDependenciesMeta: + inversify: + optional: true + reflect-metadata: + optional: true dependencies: '@itwin/cloud-agnostic-core': 2.3.0(inversify@6.0.3)(reflect-metadata@0.1.14) axios: 1.7.9 - optionalDependencies: inversify: 6.0.3 reflect-metadata: 0.1.14 transitivePeerDependencies: - debug - '@itwin/presentation-backend@4.10.6(@itwin/core-backend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))))': + /@itwin/presentation-backend@4.10.6(@itwin/core-backend@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6): + resolution: {integrity: sha512-HmnzyX2ue8Qm8DRg1i6huW3uPzizRVqkhTZxV1+hKWYr2PXSR2M7yLf1wc0aaV1YQZ5HS/TIMNUcCcjzBnJUFQ==} + peerDependencies: + '@itwin/core-backend': ^4.10.6 + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-common': ^4.10.6 + '@itwin/core-quantity': ^4.10.6 + '@itwin/ecschema-metadata': ^4.10.6 + '@itwin/presentation-common': ^4.10.6 dependencies: - '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6) + '@itwin/core-backend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) - '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) + '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) object-hash: 1.3.1 rxjs: 7.8.1 rxjs-for-await: 1.0.0(rxjs@7.8.1) - semver: 7.6.3 + semver: 7.7.1 + dev: false - '@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))': + /@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6): + resolution: {integrity: sha512-EOm4D0SNNgj8GJGohIXFNPYB7omTPqpbRqGObyKWBbDaSoCZj5XK2QB0RDxod6gfUeaN5msmnAzxQyvQIgTk1Q==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-common': ^4.10.6 + '@itwin/core-quantity': ^4.10.6 + '@itwin/ecschema-metadata': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) - '@itwin/presentation-components@5.10.0(aigiuhnhbkjkftotbvmxxdsbe4)': + /@itwin/presentation-components@5.11.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/ecschema-metadata@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@itwin/presentation-common@4.10.6)(@itwin/presentation-frontend@4.10.6)(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-8J7YBj+PuJdO/bRiKJ1wXBT/yqsLLmfdh67pAVHJCyq3HiWfZAtpKsLOBs3DmGYZTgdaT5vy0o1w5NrdTjXrmA==} + peerDependencies: + '@itwin/appui-abstract': ^4.4.0 || ^5.0.0 + '@itwin/components-react': ^4.9.0 || ^5.0.0 + '@itwin/core-bentley': ^4.4.0 || ^5.0.0 + '@itwin/core-common': ^4.4.0 || ^5.0.0 + '@itwin/core-frontend': ^4.4.0 || ^5.0.0 + '@itwin/core-quantity': ^4.4.0 || ^5.0.0 + '@itwin/core-react': ^4.9.0 || ^5.0.0 + '@itwin/ecschema-metadata': ^4.4.0 || ^5.0.0 + '@itwin/imodel-components-react': ^4.9.0 || ^5.0.0 + '@itwin/itwinui-react': ^3.0.0 + '@itwin/presentation-common': ^4.4.0 || ^5.0.0 + '@itwin/presentation-frontend': ^4.4.0 || ^5.0.0 + '@itwin/unified-selection-react': ^1.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@itwin/unified-selection-react': + optional: true dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) - '@itwin/imodel-components-react': 5.0.5(t7hi6llosdstuyilze33aykrsq) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) - '@itwin/presentation-core-interop': 1.2.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) - '@itwin/presentation-frontend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) + '@itwin/imodel-components-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0)(react@18.3.1) + '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) + '@itwin/presentation-core-interop': 1.3.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) + '@itwin/presentation-frontend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6) '@itwin/presentation-shared': 1.2.0 '@itwin/unified-selection': 1.3.0 classnames: 2.5.1 @@ -4611,29 +1719,50 @@ snapshots: fast-sort: 3.4.1 micro-memoize: 4.1.3 react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react-dom: 18.0.0(react@18.3.1) react-error-boundary: 4.1.2(react@18.3.1) rxjs: 7.8.1 transitivePeerDependencies: - '@itwin/core-geometry' + dev: false - '@itwin/presentation-components@5.10.0(pify4slrbry3bdfrsqmik6gbee)': + /@itwin/presentation-components@5.11.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/ecschema-metadata@4.10.6)(@itwin/imodel-components-react@5.1.0)(@itwin/itwinui-react@3.16.6)(@itwin/presentation-common@4.10.6)(@itwin/presentation-frontend@4.10.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-8J7YBj+PuJdO/bRiKJ1wXBT/yqsLLmfdh67pAVHJCyq3HiWfZAtpKsLOBs3DmGYZTgdaT5vy0o1w5NrdTjXrmA==} + peerDependencies: + '@itwin/appui-abstract': ^4.4.0 || ^5.0.0 + '@itwin/components-react': ^4.9.0 || ^5.0.0 + '@itwin/core-bentley': ^4.4.0 || ^5.0.0 + '@itwin/core-common': ^4.4.0 || ^5.0.0 + '@itwin/core-frontend': ^4.4.0 || ^5.0.0 + '@itwin/core-quantity': ^4.4.0 || ^5.0.0 + '@itwin/core-react': ^4.9.0 || ^5.0.0 + '@itwin/ecschema-metadata': ^4.4.0 || ^5.0.0 + '@itwin/imodel-components-react': ^4.9.0 || ^5.0.0 + '@itwin/itwinui-react': ^3.0.0 + '@itwin/presentation-common': ^4.4.0 || ^5.0.0 + '@itwin/presentation-frontend': ^4.4.0 || ^5.0.0 + '@itwin/unified-selection-react': ^1.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@itwin/unified-selection-react': + optional: true dependencies: '@itwin/appui-abstract': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) + '@itwin/components-react': 5.0.5(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/core-react': 5.0.5(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1))(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) - '@itwin/imodel-components-react': 5.0.5(4ihtqazybsdwzghixnn5lgqzle) - '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.0.0(react@18.3.1))(react@18.3.1) - '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) - '@itwin/presentation-core-interop': 1.2.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) - '@itwin/presentation-frontend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))) + '@itwin/core-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) + '@itwin/imodel-components-react': 5.1.0(@itwin/appui-abstract@4.10.6)(@itwin/components-react@5.0.5)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/core-react@5.1.0)(@itwin/itwinui-react@3.16.6)(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-icons-react': 2.9.0(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-illustrations-react': 2.1.0(react-dom@18.3.1)(react@18.3.1) + '@itwin/itwinui-react': 3.16.6(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1) + '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) + '@itwin/presentation-core-interop': 1.3.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) + '@itwin/presentation-frontend': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6) '@itwin/presentation-shared': 1.2.0 '@itwin/unified-selection': 1.3.0 classnames: 2.5.1 @@ -4641,79 +1770,113 @@ snapshots: fast-sort: 3.4.1 micro-memoize: 4.1.3 react: 18.3.1 - react-dom: 18.0.0(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) react-error-boundary: 4.1.2(react@18.3.1) rxjs: 7.8.1 transitivePeerDependencies: - '@itwin/core-geometry' + dev: true - '@itwin/presentation-core-interop@1.2.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))': + /@itwin/presentation-core-interop@1.3.0(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6): + resolution: {integrity: sha512-3EK+a4BI418w+bCKi13n+GMCETOHbxsvXck1aMl9TFKUnYa4z0/UmYNR4WFyICdv6HYeb4lgfeUPN0li/hNNvw==} + peerDependencies: + '@itwin/core-bentley': ^4.1.0 || ^5.0.0 + '@itwin/core-common': ^4.1.0 || ^5.0.0 + '@itwin/core-geometry': ^4.1.0 || ^5.0.0 + '@itwin/core-quantity': ^4.1.0 || ^5.0.0 + '@itwin/ecschema-metadata': ^4.1.0 || ^5.0.0 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) '@itwin/core-geometry': 4.10.6 '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/presentation-shared': 1.2.0 rxjs: 7.8.1 - '@itwin/presentation-frontend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-frontend@4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)))(@itwin/presentation-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))))': + /@itwin/presentation-frontend@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-frontend@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6)(@itwin/presentation-common@4.10.6): + resolution: {integrity: sha512-NXjZY6so/+QGAsJb2gTj/vdGv0LJTpW00DWnshWF6Or2PzH4UW7tp9HMY92y3B5aVf+7AE0I1trTtMroPuGCXA==} + peerDependencies: + '@itwin/core-bentley': ^4.10.6 + '@itwin/core-common': ^4.10.6 + '@itwin/core-frontend': ^4.10.6 + '@itwin/core-quantity': ^4.10.6 + '@itwin/ecschema-metadata': ^4.10.6 + '@itwin/presentation-common': ^4.10.6 dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/core-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6) - '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(inversify@6.0.3)(reflect-metadata@0.1.14) + '@itwin/core-frontend': 4.10.6(@itwin/appui-abstract@4.10.6)(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-geometry@4.10.6)(@itwin/core-orbitgt@4.10.6)(@itwin/core-quantity@4.10.6) '@itwin/core-quantity': 4.10.6(@itwin/core-bentley@4.10.6) - '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6)) - '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-geometry@4.10.6))(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))(@itwin/ecschema-metadata@4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6(@itwin/core-bentley@4.10.6))) + '@itwin/ecschema-metadata': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-quantity@4.10.6) + '@itwin/presentation-common': 4.10.6(@itwin/core-bentley@4.10.6)(@itwin/core-common@4.10.6)(@itwin/core-quantity@4.10.6)(@itwin/ecschema-metadata@4.10.6) '@itwin/unified-selection': 1.3.0 rxjs: 7.8.1 rxjs-for-await: 1.0.0(rxjs@7.8.1) - '@itwin/presentation-shared@1.2.0': + /@itwin/presentation-shared@1.2.0: + resolution: {integrity: sha512-+esa0GJhWxO1MaF5cGH439mOXPXWNX/SZGgaVfPyRE/1DdH33ECaXaeJVSpFqNrrBHn5XxYN5/7Rayb78k2LOg==} dependencies: '@itwin/core-bentley': 4.10.6 - '@itwin/unified-selection@1.3.0': + /@itwin/unified-selection@1.3.0: + resolution: {integrity: sha512-Txh9UrgcV8cXOaCV01Wx1ajc/xN4aVzdvmNtXQzinDqAiCG6rfFLLcXksLKIYpXl0STl/QHw+SXpGnxrv8vk9A==} dependencies: '@itwin/core-bentley': 4.10.6 '@itwin/presentation-shared': 1.2.0 rxjs: 7.8.1 rxjs-for-await: 1.0.0(rxjs@7.8.1) - '@itwin/webgl-compatibility@4.10.6': + /@itwin/webgl-compatibility@4.10.6: + resolution: {integrity: sha512-yepzz9VMSP7KA0smfnbyK4cWXm17v9pnt19UQkowW3u2GylG6Tc67QCBqCAHUpcOQb6ANu+8N/UDWXy0HkR8ZQ==} dependencies: '@itwin/core-bentley': 4.10.6 - '@jridgewell/gen-mapping@0.3.8': + /@jridgewell/gen-mapping@0.3.8: + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + dev: true - '@jridgewell/resolve-uri@3.1.2': {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/sourcemap-codec@1.5.0': {} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + dev: false - '@loaders.gl/core@3.4.15': + /@loaders.gl/core@3.4.15: + resolution: {integrity: sha512-rPOOTuusWlRRNMWg7hymZBoFmPCXWThsA5ZYRfqqXnsgVeQIi8hzcAhJ7zDUIFAd/OSR8ravtqb0SH+3k6MOFQ==} dependencies: '@babel/runtime': 7.26.7 '@loaders.gl/loader-utils': 3.4.15 '@loaders.gl/worker-utils': 3.4.15 '@probe.gl/log': 3.6.0 - '@loaders.gl/draco@3.4.15': + /@loaders.gl/draco@3.4.15: + resolution: {integrity: sha512-SStmyP0ZnS4JbWZb2NhrfiHW65uy3pVTTzQDTgXfkR5cD9oDAEu4nCaHbQ8x38/m39FHliCPgS9b1xWvLKQo8w==} dependencies: '@babel/runtime': 7.26.7 '@loaders.gl/loader-utils': 3.4.15 @@ -4721,28 +1884,34 @@ snapshots: '@loaders.gl/worker-utils': 3.4.15 draco3d: 1.5.5 - '@loaders.gl/loader-utils@3.4.15': + /@loaders.gl/loader-utils@3.4.15: + resolution: {integrity: sha512-uUx6tCaky6QgCRkqCNuuXiUfpTzKV+ZlJOf6C9bKp62lpvFOv9AwqoXmL23j8nfsENdlzsX3vPhc3en6QQyksA==} dependencies: '@babel/runtime': 7.26.7 '@loaders.gl/worker-utils': 3.4.15 '@probe.gl/stats': 3.6.0 - '@loaders.gl/schema@3.4.15': + /@loaders.gl/schema@3.4.15: + resolution: {integrity: sha512-8oRtstz0IsqES7eZd2jQbmCnmExCMtL8T6jWd1+BfmnuyZnQ0B6TNccy++NHtffHdYuzEoQgSELwcdmhSApYew==} dependencies: '@types/geojson': 7946.0.16 - '@loaders.gl/worker-utils@3.4.15': + /@loaders.gl/worker-utils@3.4.15: + resolution: {integrity: sha512-zUUepOYRYmcYIcr/c4Mchox9h5fBFNkD81rsGnLlZyq19QvyHzN+93SVxrLc078gw93t2RKrVcOOZY13zT3t1w==} dependencies: '@babel/runtime': 7.26.7 - '@manypkg/find-root@1.1.0': + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.26.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 + dev: false - '@manypkg/get-packages@1.1.3': + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.26.7 '@changesets/types': 4.1.0 @@ -4750,59 +1919,137 @@ snapshots: fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 + dev: false - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: false - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.0 + dev: false - '@parcel/watcher-android-arm64@2.5.1': + /@parcel/watcher-android-arm64@2.5.1: + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + /@parcel/watcher-darwin-arm64@2.5.1: + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@parcel/watcher-darwin-x64@2.5.1': + /@parcel/watcher-darwin-x64@2.5.1: + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + /@parcel/watcher-freebsd-x64@2.5.1: + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + /@parcel/watcher-linux-arm-glibc@2.5.1: + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + /@parcel/watcher-linux-arm-musl@2.5.1: + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + /@parcel/watcher-linux-arm64-glibc@2.5.1: + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + /@parcel/watcher-linux-arm64-musl@2.5.1: + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + /@parcel/watcher-linux-x64-glibc@2.5.1: + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + /@parcel/watcher-linux-x64-musl@2.5.1: + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@parcel/watcher-win32-arm64@2.5.1': + /@parcel/watcher-win32-arm64@2.5.1: + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@parcel/watcher-win32-ia32@2.5.1': + /@parcel/watcher-win32-ia32@2.5.1: + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@parcel/watcher-win32-x64@2.5.1': + /@parcel/watcher-win32-x64@2.5.1: + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@parcel/watcher@2.5.1': + /@parcel/watcher@2.5.1: + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + requiresBuild: true dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 @@ -4824,153 +2071,311 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true optional: true - '@probe.gl/env@3.6.0': + /@probe.gl/env@3.6.0: + resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} dependencies: '@babel/runtime': 7.26.7 - '@probe.gl/log@3.6.0': + /@probe.gl/log@3.6.0: + resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==} dependencies: '@babel/runtime': 7.26.7 '@probe.gl/env': 3.6.0 - '@probe.gl/stats@3.6.0': + /@probe.gl/stats@3.6.0: + resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==} dependencies: '@babel/runtime': 7.26.7 - '@remix-run/router@1.21.1': {} + /@remix-run/router@1.22.0: + resolution: {integrity: sha512-MBOl8MeOzpK0HQQQshKB7pABXbmyHizdTpqnrIseTbsv0nAepwC2ENZa1aaBExNQcpLoXmWthhak8SABLzvGPw==} + engines: {node: '>=14.0.0'} + dev: false - '@rollup/rollup-android-arm-eabi@4.32.1': + /@rollup/rollup-android-arm-eabi@4.34.6: + resolution: {integrity: sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==} + cpu: [arm] + os: [android] + requiresBuild: true optional: true - '@rollup/rollup-android-arm64@4.32.1': + /@rollup/rollup-android-arm64@4.34.6: + resolution: {integrity: sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - '@rollup/rollup-darwin-arm64@4.32.1': + /@rollup/rollup-darwin-arm64@4.34.6: + resolution: {integrity: sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@rollup/rollup-darwin-x64@4.32.1': + /@rollup/rollup-darwin-x64@4.34.6: + resolution: {integrity: sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@rollup/rollup-freebsd-arm64@4.32.1': + /@rollup/rollup-freebsd-arm64@4.34.6: + resolution: {integrity: sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true - '@rollup/rollup-freebsd-x64@4.32.1': + /@rollup/rollup-freebsd-x64@4.34.6: + resolution: {integrity: sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': + /@rollup/rollup-linux-arm-gnueabihf@4.34.6: + resolution: {integrity: sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm-musleabihf@4.32.1': + /@rollup/rollup-linux-arm-musleabihf@4.34.6: + resolution: {integrity: sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm64-gnu@4.32.1': + /@rollup/rollup-linux-arm64-gnu@4.34.6: + resolution: {integrity: sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm64-musl@4.32.1': + /@rollup/rollup-linux-arm64-musl@4.34.6: + resolution: {integrity: sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': + /@rollup/rollup-linux-loongarch64-gnu@4.34.6: + resolution: {integrity: sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': + /@rollup/rollup-linux-powerpc64le-gnu@4.34.6: + resolution: {integrity: sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-riscv64-gnu@4.32.1': + /@rollup/rollup-linux-riscv64-gnu@4.34.6: + resolution: {integrity: sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-s390x-gnu@4.32.1': + /@rollup/rollup-linux-s390x-gnu@4.34.6: + resolution: {integrity: sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-x64-gnu@4.32.1': + /@rollup/rollup-linux-x64-gnu@4.34.6: + resolution: {integrity: sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-x64-musl@4.32.1': + /@rollup/rollup-linux-x64-musl@4.34.6: + resolution: {integrity: sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-win32-arm64-msvc@4.32.1': + /@rollup/rollup-win32-arm64-msvc@4.34.6: + resolution: {integrity: sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@rollup/rollup-win32-ia32-msvc@4.32.1': + /@rollup/rollup-win32-ia32-msvc@4.34.6: + resolution: {integrity: sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@rollup/rollup-win32-x64-msvc@4.32.1': + /@rollup/rollup-win32-x64-msvc@4.34.6: + resolution: {integrity: sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@swc/core-darwin-arm64@1.10.11': + /@swc/core-darwin-arm64@1.10.15: + resolution: {integrity: sha512-zFdZ6/yHqMCPk7OhLFqHy/MQ1EqJhcZMpNHd1gXYT7VRU3FaqvvKETrUlG3VYl65McPC7AhMRfXPyJ0JO/jARQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@swc/core-darwin-x64@1.10.11': + /@swc/core-darwin-x64@1.10.15: + resolution: {integrity: sha512-8g4yiQwbr8fxOOjKXdot0dEkE5zgE8uNZudLy/ZyAhiwiZ8pbJ8/wVrDOu6dqbX7FBXAoDnvZ7fwN1jk4C8jdA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@swc/core-linux-arm-gnueabihf@1.10.11': + /@swc/core-linux-arm-gnueabihf@1.10.15: + resolution: {integrity: sha512-rl+eVOltl2+7WXOnvmWBpMgh6aO13G5x0U0g8hjwlmD6ku3Y9iRcThpOhm7IytMEarUp5pQxItNoPq+VUGjVHg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@swc/core-linux-arm64-gnu@1.10.11': + /@swc/core-linux-arm64-gnu@1.10.15: + resolution: {integrity: sha512-qxWEQeyAJMWJqjaN4hi58WMpPdt3Tn0biSK9CYRegQtvZWCbewr6v2agtSu5AZ2rudeH6OfCWAMDQQeSgn6PJQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@swc/core-linux-arm64-musl@1.10.11': + /@swc/core-linux-arm64-musl@1.10.15: + resolution: {integrity: sha512-QcELd9/+HjZx0WCxRrKcyKGWTiQ0485kFb5w8waxcSNd0d9Lgk4EFfWWVyvIb5gIHpDQmhrgzI/yRaWQX4YSZQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@swc/core-linux-x64-gnu@1.10.11': + /@swc/core-linux-x64-gnu@1.10.15: + resolution: {integrity: sha512-S1+ZEEn3+a/MiMeQqQypbwTGoBG8/sPoCvpNbk+uValyygT+jSn3U0xVr45FbukpmMB+NhBMqfedMLqKA0QnJA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@swc/core-linux-x64-musl@1.10.11': + /@swc/core-linux-x64-musl@1.10.15: + resolution: {integrity: sha512-qW+H9g/2zTJ4jP7NDw4VAALY0ZlNEKzYsEoSj/HKi7k3tYEHjMzsxjfsY9I8WZCft23bBdV3RTCPoxCshaj1CQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@swc/core-win32-arm64-msvc@1.10.11': + /@swc/core-win32-arm64-msvc@1.10.15: + resolution: {integrity: sha512-AhRB11aA6LxjIqut+mg7qsu/7soQDmbK6MKR9nP3hgBszpqtXbRba58lr24xIbBCMr+dpo6kgEapWt+t5Po6Zg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@swc/core-win32-ia32-msvc@1.10.11': + /@swc/core-win32-ia32-msvc@1.10.15: + resolution: {integrity: sha512-UGdh430TQwbDn6KjgvRTg1fO022sbQ4yCCHUev0+5B8uoBwi9a89qAz3emy2m56C8TXxUoihW9Y9OMfaRwPXUw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@swc/core-win32-x64-msvc@1.10.11': + /@swc/core-win32-x64-msvc@1.10.15: + resolution: {integrity: sha512-XJzBCqO1m929qbJsOG7FZXQWX26TnEoMctS3QjuCoyBmkHxxQmZsy78KjMes1aomTcKHCyFYgrRGWgVmk7tT4Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@swc/core@1.10.11(@swc/helpers@0.5.15)': + /@swc/core@1.10.15: + resolution: {integrity: sha512-/iFeQuNaGdK7mfJbQcObhAhsMqLT7qgMYl7jX2GEIO+VDTejESpzAyKwaMeYXExN8D6e5BRHBCe7M5YlsuzjDA==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.11 - '@swc/core-darwin-x64': 1.10.11 - '@swc/core-linux-arm-gnueabihf': 1.10.11 - '@swc/core-linux-arm64-gnu': 1.10.11 - '@swc/core-linux-arm64-musl': 1.10.11 - '@swc/core-linux-x64-gnu': 1.10.11 - '@swc/core-linux-x64-musl': 1.10.11 - '@swc/core-win32-arm64-msvc': 1.10.11 - '@swc/core-win32-ia32-msvc': 1.10.11 - '@swc/core-win32-x64-msvc': 1.10.11 - '@swc/helpers': 0.5.15 - - '@swc/counter@0.1.3': {} + '@swc/core-darwin-arm64': 1.10.15 + '@swc/core-darwin-x64': 1.10.15 + '@swc/core-linux-arm-gnueabihf': 1.10.15 + '@swc/core-linux-arm64-gnu': 1.10.15 + '@swc/core-linux-arm64-musl': 1.10.15 + '@swc/core-linux-x64-gnu': 1.10.15 + '@swc/core-linux-x64-musl': 1.10.15 + '@swc/core-win32-arm64-msvc': 1.10.15 + '@swc/core-win32-ia32-msvc': 1.10.15 + '@swc/core-win32-x64-msvc': 1.10.15 + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.15': + /@swc/helpers@0.5.15: + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} dependencies: tslib: 2.8.1 - '@swc/types@0.1.17': + /@swc/types@0.1.17: + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} dependencies: '@swc/counter': 0.1.3 - '@tanstack/react-virtual@3.11.3(react-dom@18.0.0(react@18.3.1))(react@18.3.1)': + /@tanstack/react-virtual@3.13.0(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: - '@tanstack/virtual-core': 3.11.3 + '@tanstack/virtual-core': 3.13.0 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - '@tanstack/react-virtual@3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@tanstack/react-virtual@3.13.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: - '@tanstack/virtual-core': 3.11.3 + '@tanstack/virtual-core': 3.13.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.11.3': {} + /@tanstack/virtual-core@3.13.0: + resolution: {integrity: sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==} - '@testing-library/dom@10.4.0': + /@testing-library/dom@10.4.0: + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} dependencies: '@babel/code-frame': 7.26.2 '@babel/runtime': 7.26.7 @@ -4980,89 +2385,199 @@ snapshots: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.26.7 '@testing-library/dom': 10.4.0 + '@types/react': 18.3.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.18 - '@types/react-dom': 18.3.5(@types/react@18.3.18) + dev: true - '@tsconfig/node10@1.0.11': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: false - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: false - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: false - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: false - '@types/aria-query@5.0.4': {} + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true - '@types/body-parser@1.19.5': + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.67 + '@types/node': 18.19.75 + dev: true - '@types/connect@3.4.38': + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.75 + dev: true + + /@types/dotenv-flow@3.3.3: + resolution: {integrity: sha512-aJjBsKw4bfGjvaRwrxBtEOfYZxCAq+LiFTpZ4DGTEK2b9eLVt/IAClapSxMfgV4Mi/2bIBKKjoTCO0lOh4ACLg==} + dev: false + + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/dotenv-flow@3.3.3': {} + /@types/express-serve-static-core@5.0.6: + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + dependencies: + '@types/node': 18.19.75 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true - '@types/estree@1.0.6': {} + /@types/express@5.0.0: + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.6 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + dev: true - '@types/geojson@7946.0.16': {} + /@types/geojson@7946.0.16: + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/hoist-non-react-statics@3.3.6': + /@types/hoist-non-react-statics@3.3.6: + resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} dependencies: '@types/react': 18.3.18 hoist-non-react-statics: 3.3.2 - '@types/node@12.20.55': {} + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: false - '@types/node@18.19.74': + /@types/node@18.19.75: + resolution: {integrity: sha512-UIksWtThob6ZVSyxcOqCLOUNg/dyO1Qvx4McgeuhrEtHTLFTf7BBhEazaE4K806FGTPtzd/2sE90qn4fVr7cyw==} dependencies: undici-types: 5.26.5 - '@types/prop-types@15.7.14': {} + /@types/prop-types@15.7.14: + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + /@types/qs@6.9.18: + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + dev: true - '@types/react-dom@18.3.5(@types/react@18.3.18)': + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/react-dom@18.3.5(@types/react@18.3.18): + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 dependencies: '@types/react': 18.3.18 + dev: false - '@types/react-redux@7.1.34': + /@types/react-redux@7.1.34: + resolution: {integrity: sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==} dependencies: '@types/hoist-non-react-statics': 3.3.6 '@types/react': 18.3.18 hoist-non-react-statics: 3.3.2 redux: 4.2.1 - '@types/react-table@7.7.20': + /@types/react-table@7.7.20: + resolution: {integrity: sha512-ahMp4pmjVlnExxNwxyaDrFgmKxSbPwU23sGQw2gJK4EhCvnvmib2s/O/+y1dfV57dXOwpr2plfyBol+vEHbi2w==} dependencies: '@types/react': 18.3.18 + dev: true - '@types/react-window-infinite-loader@1.0.9': + /@types/react-window-infinite-loader@1.0.9: + resolution: {integrity: sha512-gEInTjQwURCnDOFyIEK2+fWB5gTjqwx30O62QfxA9stE5aiB6EWkGj4UMhc0axq7/FV++Gs/TGW8FtgEx0S6Tw==} dependencies: '@types/react': 18.3.18 '@types/react-window': 1.8.8 + dev: true - '@types/react-window@1.8.8': + /@types/react-window@1.8.8: + resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} dependencies: '@types/react': 18.3.18 + dev: true - '@types/react@18.3.18': + /@types/react@18.3.18: + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 - '@types/strip-bom@3.0.0': {} + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.75 + dev: true + + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 18.19.75 + '@types/send': 0.17.4 + dev: true + + /@types/strip-bom@3.0.0: + resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} + dev: false - '@types/strip-json-comments@0.0.30': {} + /@types/strip-json-comments@0.0.30: + resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} + dev: false - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4)': + /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.5.4): + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.5.4) @@ -5075,12 +2590,20 @@ snapshots: ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.4.3(typescript@5.5.4) - optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4)': + /@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4): + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 @@ -5088,31 +2611,52 @@ snapshots: '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.0 eslint: 8.57.1 - optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/scope-manager@7.18.0': + /@typescript-eslint/scope-manager@7.18.0: + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 + dev: false - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.5.4)': + /@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.5.4): + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.5.4) debug: 4.4.0 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.5.4) - optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/types@7.18.0': {} + /@typescript-eslint/types@7.18.0: + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: false - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + /@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4): + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -5120,14 +2664,18 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.1 ts-api-utils: 1.4.3(typescript@5.5.4) - optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.5.4)': + /@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.5.4): + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 @@ -5137,22 +2685,38 @@ snapshots: transitivePeerDependencies: - supports-color - typescript + dev: false - '@typescript-eslint/visitor-keys@7.18.0': + /@typescript-eslint/visitor-keys@7.18.0: + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 + dev: false - '@ungap/structured-clone@1.3.0': {} + /@ungap/structured-clone@1.3.0: + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + dev: false - '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4))': + /@vitejs/plugin-react-swc@3.8.0(vite@5.4.14): + resolution: {integrity: sha512-T4sHPvS+DIqDP51ifPqa9XIRAz/kIvIi8oXcnOZZgHmMotgmmdxe/DD5tMFlt5nuIRzT0/QuiwmKlH0503Aapw==} + peerDependencies: + vite: ^4 || ^5 || ^6 dependencies: - '@swc/core': 1.10.11(@swc/helpers@0.5.15) - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + '@swc/core': 1.10.15 + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) transitivePeerDependencies: - '@swc/helpers' - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@18.19.74)(happy-dom@15.11.7)(sass@1.83.4))': + /@vitest/coverage-v8@2.1.9(vitest@2.1.9): + resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==} + peerDependencies: + '@vitest/browser': 2.1.9 + vitest: 2.1.9 + peerDependenciesMeta: + '@vitest/browser': + optional: true dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -5166,117 +2730,193 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@18.19.74)(happy-dom@15.11.7)(sass@1.83.4) + vitest: 2.1.9(@types/node@18.19.75)(happy-dom@15.11.7) transitivePeerDependencies: - supports-color + dev: true - '@vitest/expect@2.1.8': + /@vitest/expect@2.1.9: + resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} dependencies: - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 chai: 5.1.2 tinyrainbow: 1.2.0 + dev: true - '@vitest/mocker@2.1.8(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4))': + /@vitest/mocker@2.1.9(vite@5.4.14): + resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true dependencies: - '@vitest/spy': 2.1.8 + '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) + dev: true - '@vitest/pretty-format@2.1.8': + /@vitest/pretty-format@2.1.9: + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} dependencies: tinyrainbow: 1.2.0 + dev: true - '@vitest/runner@2.1.8': + /@vitest/runner@2.1.9: + resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} dependencies: - '@vitest/utils': 2.1.8 + '@vitest/utils': 2.1.9 pathe: 1.1.2 + dev: true - '@vitest/snapshot@2.1.8': + /@vitest/snapshot@2.1.9: + resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/pretty-format': 2.1.9 magic-string: 0.30.17 pathe: 1.1.2 + dev: true - '@vitest/spy@2.1.8': + /@vitest/spy@2.1.9: + resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} dependencies: tinyspy: 3.0.2 + dev: true - '@vitest/utils@2.1.8': + /@vitest/utils@2.1.9: + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/pretty-format': 2.1.9 loupe: 3.1.3 tinyrainbow: 1.2.0 + dev: true - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + dev: false - acorn-jsx@5.3.2(acorn@8.14.0): + /acorn-jsx@5.3.2(acorn@8.14.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.14.0 + dev: false - acorn-walk@8.3.4: + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} dependencies: acorn: 8.14.0 + dev: false - acorn@8.14.0: {} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false - agent-base@7.1.3: {} + /agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: false - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: false - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.1.0: {} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + dev: true - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: false - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: false - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: false - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false - aria-query@5.3.0: + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 + dev: true - array-buffer-byte-length@1.0.2: + /array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 is-array-buffer: 3.0.5 - array-flatten@1.1.1: {} + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false - array-includes@3.1.8: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -5284,10 +2924,16 @@ snapshots: es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 is-string: 1.1.1 + dev: false - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false - array.prototype.findlast@1.2.5: + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -5295,30 +2941,42 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 + dev: false - array.prototype.flat@1.3.3: + /array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 + dev: false - array.prototype.flatmap@1.3.3: + /array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 + dev: false - array.prototype.tosorted@1.1.4: + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 + dev: false - arraybuffer.prototype.slice@1.0.4: + /arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 @@ -5328,17 +2986,26 @@ snapshots: get-intrinsic: 1.2.7 is-array-buffer: 3.0.5 - assertion-error@2.0.1: {} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + dev: true - async-function@1.0.0: {} + /async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 - axios@1.7.9: + /axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} dependencies: follow-redirects: 1.15.9 form-data: 4.0.1 @@ -5346,17 +3013,29 @@ snapshots: transitivePeerDependencies: - debug - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base64-js@0.0.8: {} + /base64-js@0.0.8: + resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} + engines: {node: '>= 0.4'} + dev: false - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: false - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false - body-parser@1.20.3: + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -5372,69 +3051,105 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.3: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false - bytes@3.1.2: {} + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false - cac@6.7.14: {} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true - call-bind-apply-helpers@1.0.1: + /call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + /call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 get-intrinsic: 1.2.7 set-function-length: 1.2.2 - call-bound@1.0.3: + /call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.7 - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false - chai@5.1.2: + /chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 loupe: 3.1.3 pathval: 2.0.0 + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: false - check-error@2.1.1: {} + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -5445,48 +3160,82 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: false - chokidar@4.0.3: + /chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} dependencies: readdirp: 4.1.1 - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: false - classnames@2.3.1: {} + /classnames@2.3.1: + resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} + dev: false - classnames@2.5.1: {} + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - clsx@2.1.1: {} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - content-disposition@0.5.4: + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: false - content-type@1.0.5: {} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false - cookie-signature@1.0.6: {} + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false - cookie@0.7.1: {} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + dev: false - cpx2@5.0.0: + /cpx2@5.0.0: + resolution: {integrity: sha512-43LMini/KvlKMHjU7solCgVgNBspCmQ1noP5ckMa0VApaXrJFLcdfSxZxcdvH3wWcOvCwFGvOPBawOesI3oWMQ==} + engines: {node: '>=16'} + hasBin: true dependencies: debounce: 1.2.1 debug: 4.4.0 @@ -5503,16 +3252,22 @@ snapshots: subarg: 1.0.0 transitivePeerDependencies: - supports-color + dev: true - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: false - cross-fetch@3.1.5: + /cross-fetch@3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: node-fetch: 2.6.7 transitivePeerDependencies: - encoding - cross-spawn@6.0.6: + /cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} dependencies: nice-try: 1.0.5 path-key: 2.0.1 @@ -5520,142 +3275,251 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.6: + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-js@4.2.0: {} + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false - csstype@3.1.3: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-view-buffer@1.0.2: + /data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-length@1.0.2: + /data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-offset@1.0.1: + /data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - debounce@1.2.1: {} + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: true - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + dev: false - debug@4.4.0: + /debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 - deep-eql@5.0.2: {} + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + dev: true - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} - depd@1.1.2: {} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false - depd@2.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true - destroy@1.2.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false - detect-indent@6.1.0: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: false - detect-libc@1.0.3: + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + requiresBuild: true optional: true - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: false - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: false - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: false - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: false - dom-accessibility-api@0.5.16: {} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true - dom-helpers@5.2.1: + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.26.7 csstype: 3.1.3 - dompurify@2.5.8: {} + /dompurify@2.5.8: + resolution: {integrity: sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==} - dotenv-flow@3.3.0: + /dotenv-flow@3.3.0: + resolution: {integrity: sha512-GLSvRqDZ1TGhloS6ZCZ5chdqqv/3XMqZxAnX9rliJiHn6uyJLguKeu+3M2kcagBkoVCnLWYfbR4rfFe1xSU39A==} + engines: {node: '>= 8.0.0'} dependencies: dotenv: 8.6.0 + dev: false - dotenv@8.6.0: {} + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: false - draco3d@1.5.5: {} + /draco3d@1.5.5: + resolution: {integrity: sha512-JVuNV0EJzD3LBYhGyIXJLeBID/EVtmFO1ZNhAYflTgiMiAJlbhXQmRRda/azjc8MRVMHh0gqGhiqHUo5dIXM8Q==} - dunder-proto@1.0.1: + /dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - duplexer@0.1.2: {} + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true - dynamic-dedupe@0.3.0: + /dynamic-dedupe@0.3.0: + resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} dependencies: xtend: 4.0.2 + dev: false - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true - ee-first@1.1.1: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false - encodeurl@2.0.0: {} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + dev: false - enquirer@2.4.1: + /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: false - entities@4.5.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.9: + /es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -5688,9 +3552,9 @@ snapshots: is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 - is-weakref: 1.1.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 own-keys: 1.0.1 @@ -5709,11 +3573,17 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.18 - es-define-property@1.0.1: {} + /es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - es-errors@1.3.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - es-iterator-helpers@1.2.1: + /es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -5731,33 +3601,49 @@ snapshots: internal-slot: 1.1.0 iterator.prototype: 1.1.5 safe-array-concat: 1.1.3 + dev: false - es-module-lexer@1.6.0: {} + /es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + dev: true - es-object-atoms@1.1.1: + /es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.1.0: + /es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 get-intrinsic: 1.2.7 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.2 + dev: false - es-to-primitive@1.3.0: + /es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.1.0 is-symbol: 1.1.1 - es6-promise@4.2.8: {} + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - esbuild@0.21.5: + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 '@esbuild/android-arm': 0.21.5 @@ -5783,17 +3669,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - escape-html@1.0.3: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.57.1 + dev: false - eslint-plugin-react@7.37.4(eslint@8.57.1): + /eslint-plugin-react@7.37.4(eslint@8.57.1): + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -5814,15 +3716,26 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + dev: false - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: false - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false - eslint@8.57.1: + /eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@eslint-community/regexpp': 4.12.1 @@ -5864,46 +3777,84 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: false - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 + dev: false - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false - esquery@1.6.0: + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: false - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: false - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: false - estree-walker@3.0.3: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.6 + dev: true - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false - etag@1.8.1: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - expect-type@1.1.0: {} + /expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + dev: true - express-ws@5.0.2(express@4.21.2): + /express-ws@5.0.2(express@4.21.2): + resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==} + engines: {node: '>=4.5.0'} + peerDependencies: + express: ^4.0.0 || ^5.0.0-alpha.1 dependencies: express: 4.21.2 ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - express@4.21.2: + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -5938,48 +3889,75 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: false - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: false - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 + dev: false - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false - fast-sort@3.4.1: {} + /fast-sort@3.4.1: + resolution: {integrity: sha512-76uvGPsF6So53sZAqenP9UVT3p5l7cyTHkLWVCMinh41Y8NDrK1IYXJgaBMfc1gk7nJiSRZp676kddFG2Aa5+A==} - fast-xml-parser@4.5.1: + /fast-xml-parser@4.5.1: + resolution: {integrity: sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fastq@1.18.0: + /fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} dependencies: reusify: 1.0.4 + dev: false - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.2.0 + dev: false - fill-range@7.1.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 2.0.0 @@ -5990,76 +3968,127 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - find-index@0.1.1: {} + /find-index@0.1.1: + resolution: {integrity: sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==} + dev: true - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: false - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: false - flat-cache@3.2.0: + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.3.2 keyv: 4.5.4 rimraf: 3.0.2 + dev: false - flatbuffers@1.12.0: {} + /flatbuffers@1.12.0: + resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} - flatted@3.3.2: {} + /flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + dev: false - follow-redirects@1.15.9: {} + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true - for-each@0.3.4: + /for-each@0.3.4: + resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + dev: true - form-data@4.0.1: + /form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - forwarded@0.2.0: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false - fs-extra@11.3.0: + /fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.8: + /function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -6068,11 +4097,16 @@ snapshots: hasown: 2.0.2 is-callable: 1.2.7 - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - fuse.js@3.6.1: {} + /fuse.js@3.6.1: + resolution: {integrity: sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==} + engines: {node: '>=6'} - get-intrinsic@1.2.7: + /get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 @@ -6085,38 +4119,56 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-proto@1.0.1: + /get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-symbol-description@1.1.0: + /get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - glob-gitignore@1.0.15: + /glob-gitignore@1.0.15: + resolution: {integrity: sha512-22pvDWt2hMPfL3UF6lWcZpP+VIwBekJyj6xyb1DpeSALJm+n/0gI9lWD30kvA/h3bgPqYeAX7xGONzmyHrSfqQ==} + engines: {node: '>= 6'} dependencies: glob: 7.2.3 ignore: 5.3.2 lodash: 4.17.21 make-array: 1.0.5 util.inherits: 1.0.3 + dev: true - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: false - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: false - glob2base@0.0.12: + /glob2base@0.0.12: + resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} + engines: {node: '>= 0.10'} dependencies: find-index: 0.1.1 + dev: true - glob@10.4.5: + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true dependencies: foreground-child: 3.3.0 jackspeak: 3.4.3 @@ -6124,8 +4176,11 @@ snapshots: minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + dev: true - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -6134,16 +4189,23 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: false - globalthis@1.0.4: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -6151,144 +4213,220 @@ snapshots: ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 + dev: false - globrex@0.1.2: {} + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false - gopd@1.2.0: {} + /gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false - happy-dom@15.11.7: + /happy-dom@15.11.7: + resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} + engines: {node: '>=18.0.0'} dependencies: entities: 4.5.0 webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 + dev: true - has-bigints@1.1.0: {} + /has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: + /has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 - has-symbols@1.1.0: {} + /has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.1.0 - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - hoist-non-react-statics@3.3.2: + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 - hosted-git-info@2.8.9: {} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - http-errors@1.8.1: + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 1.5.0 toidentifier: 1.0.1 + dev: false - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 + dev: false - http-proxy-agent@7.0.2: + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@7.0.6: + /https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: false - human-id@1.0.2: {} + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: false - i18next-browser-languagedetector@6.1.8: + /i18next-browser-languagedetector@6.1.8: + resolution: {integrity: sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==} dependencies: '@babel/runtime': 7.26.7 - i18next-http-backend@1.4.5: + /i18next-http-backend@1.4.5: + resolution: {integrity: sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==} dependencies: cross-fetch: 3.1.5 transitivePeerDependencies: - encoding - i18next@21.10.0: + /i18next@21.10.0: + resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} dependencies: '@babel/runtime': 7.26.7 - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: false - ignore@5.3.2: {} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - immer@10.1.1: {} + /immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - immer@9.0.6: {} + /immer@9.0.6: + resolution: {integrity: sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==} + dev: false - immutable@5.0.3: {} + /immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - import-fresh@3.3.0: + /import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: false - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: false - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - internal-slot@1.1.0: + /internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 - inversify@6.0.3: {} + /inversify@6.0.3: + resolution: {integrity: sha512-s/svzcRQ/scaGUUyaVtFSL1dvOaRgyvE7VvpGcJwXmFz7CCzfSfxC/Uyl7iSHDEmBabJ2gbDES72DaygtMmwvg==} - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false - is-array-buffer@3.0.5: + /is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 get-intrinsic: 1.2.7 - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.1: + /is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} dependencies: async-function: 1.0.0 call-bound: 1.0.3 @@ -6296,137 +4434,212 @@ snapshots: has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 - is-bigint@1.1.0: + /is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} dependencies: has-bigints: 1.1.0 - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: false - is-boolean-object@1.2.1: + /is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} - is-core-module@2.16.1: + /is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - is-data-view@1.0.2: + /is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 get-intrinsic: 1.2.7 is-typed-array: 1.1.15 - is-date-object@1.1.0: + /is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: + /is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true - is-generator-function@1.1.0: + /is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-map@2.0.3: {} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} - is-number-object@1.1.1: + /is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false - is-regex@1.2.1: + /is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - is-set@2.0.3: {} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.4: + /is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - is-string@1.1.1: + /is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: false - is-symbol@1.1.1: + /is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.15: + /is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.18 - is-weakmap@2.0.2: {} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} - is-weakref@1.1.0: + /is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - is-weakset@2.0.4: + /is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 get-intrinsic: 1.2.7 - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: false - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - istanbul-lib-coverage@3.2.2: {} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true - istanbul-lib-report@3.0.1: + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@5.0.6: + /istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 debug: 4.4.0 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.1.7: + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + dev: true - iterator.prototype@1.1.5: + /iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-object-atoms: 1.1.1 @@ -6434,209 +4647,364 @@ snapshots: get-proto: 1.0.1 has-symbols: 1.1.0 set-function-name: 2.0.2 + dev: false - jackspeak@3.4.3: + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true - jotai@2.11.1(@types/react@18.3.18)(react@18.3.1): - optionalDependencies: + /jotai@2.11.3(@types/react@18.3.18)(react@18.3.1): + resolution: {integrity: sha512-B/PsewAQ0UOS5e2+TTWegUPQ3SCLPCjPY24LYUjfn2EorGlluTA2dFjVLgF1+xHLjK9Jit3y5mKHyMG3Xq/GZg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: '@types/react': 18.3.18 react: 18.3.1 - js-base64@3.7.7: {} + /js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: false - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: false - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: false - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: false - jsonfile@6.1.0: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 + dev: false - jwt-decode@3.1.2: {} + /jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + dev: false - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: false - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: false - linebreak@1.1.0: + /linebreak@1.1.0: + resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} dependencies: base64-js: 0.0.8 unicode-trie: 2.0.0 + dev: false - linkify-it@2.2.0: + /linkify-it@2.2.0: + resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} dependencies: uc.micro: 1.0.6 - load-json-file@4.0.0: + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} dependencies: graceful-fs: 4.2.11 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: false - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: false - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: false - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} + /loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + dev: true - lru-cache@10.4.3: {} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true - lz-string@1.5.0: {} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true - magic-string@0.30.17: + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - magicast@0.3.5: + /magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} dependencies: - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.8 + '@babel/types': 7.26.8 source-map-js: 1.2.1 + dev: true - make-array@1.0.5: {} + /make-array@1.0.5: + resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} + engines: {node: '>=0.10.0'} + dev: true - make-dir@4.0.0: + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - semver: 7.6.3 + semver: 7.7.1 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: false - math-intrinsics@1.1.0: {} + /math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - media-typer@0.3.0: {} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false - memoize-one@5.2.1: {} + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - memorystream@0.3.1: {} + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} - merge-descriptors@1.0.3: {} + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + dev: false - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false - meshoptimizer@0.20.0: {} + /meshoptimizer@0.20.0: + resolution: {integrity: sha512-olcJ1q+YVnjroRJpCL1Dj5aZxr2JMr2hRutMUwhuHZvpAL7SIZgOT6eMlFF4TbBGSR89tawE/gqB79J/LrW/Nw==} - methods@1.1.2: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false - micro-memoize@4.1.3: {} + /micro-memoize@4.1.3: + resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==} - micromatch@4.0.8: + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mime@1.6.0: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@9.0.5: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false - mri@1.2.0: {} + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false - ms@2.0.0: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multiparty@4.2.3: + /multiparty@4.2.3: + resolution: {integrity: sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==} + engines: {node: '>= 0.10'} dependencies: http-errors: 1.8.1 safe-buffer: 5.2.1 uid-safe: 2.1.5 + dev: false - nanoid@3.3.8: {} + /nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: false - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false - nice-try@1.0.5: {} + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - node-addon-api@7.1.1: + /node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + requiresBuild: true optional: true - node-fetch@2.6.7: + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 - normalize-package-data@2.5.0: + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false - npm-run-all@4.1.5: + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true dependencies: ansi-styles: 3.2.1 chalk: 2.4.2 @@ -6648,17 +5016,30 @@ snapshots: shell-quote: 1.8.2 string.prototype.padend: 3.1.6 - object-assign@3.0.0: {} + /object-assign@3.0.0: + resolution: {integrity: sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==} + engines: {node: '>=0.10.0'} - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-hash@1.3.1: {} + /object-hash@1.3.1: + resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} + engines: {node: '>= 0.10.0'} + dev: false - object-inspect@1.13.3: {} + /object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} - object.assign@4.1.7: + /object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -6667,40 +5048,58 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.8: + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: false - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 es-object-atoms: 1.1.1 + dev: false - object.values@1.2.1: + /object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: false - oidc-client-ts@2.4.1: + /oidc-client-ts@2.4.1: + resolution: {integrity: sha512-IxlGMsbkZPsHJGCliWT3LxjUcYzmiN21656n/Zt2jDncZlBFc//cd8WqFF0Lt681UT3AImM57E6d4N53ziTCYA==} + engines: {node: '>=12.13.0'} dependencies: crypto-js: 4.2.0 jwt-decode: 3.1.2 + dev: false - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - optionator@0.9.4: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -6708,148 +5107,269 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 + dev: false - os-tmpdir@1.0.2: {} + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: false - outdent@0.5.0: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: false - own-keys@1.0.1: + /own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.7 object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: false - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: false - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: false - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: false - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: false - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: false - p-map@6.0.0: {} + /p-map@6.0.0: + resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} + engines: {node: '>=16'} + dev: true - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false - package-json-from-dist@1.0.1: {} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: true - package-manager-detector@0.2.8: {} + /package-manager-detector@0.2.9: + resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==} + dev: false - pako@0.2.9: {} + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: false - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@2.0.1: {} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.4.3 minipass: 7.1.2 + dev: true - path-to-regexp@0.1.12: {} + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + dev: false - path-type@3.0.0: + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} dependencies: pify: 3.0.0 - path-type@4.0.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false - pathe@1.1.2: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true - pathval@2.0.0: {} + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + dev: true - picocolors@1.1.1: {} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - pidtree@0.3.1: {} + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true - pify@3.0.0: {} + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: false - possible-typed-array-names@1.0.0: {} + /possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} - postcss@8.5.1: + /postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: false - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false - pretty-format@27.5.1: + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + dev: true - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: false - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - punycode@2.3.1: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: false - qs@6.13.0: + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.1.0 + dev: false - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false - random-bytes@1.0.0: {} + /random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + dev: false - range-parser@1.2.1: {} + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false - raw-body@2.5.2: + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: false - react-autosuggest@10.1.0(react@18.3.1): + /react-autosuggest@10.1.0(react@18.3.1): + resolution: {integrity: sha512-/azBHmc6z/31s/lBf6irxPf/7eejQdR0IqnZUzjdSibtlS8+Rw/R79pgDAo6Ft5QqCUTyEQ+f0FhL+1olDQ8OA==} + peerDependencies: + react: '>=16.3.0' dependencies: es6-promise: 4.2.8 prop-types: 15.8.1 @@ -6858,33 +5378,59 @@ snapshots: section-iterator: 2.0.0 shallow-equal: 1.2.1 - react-dom@18.0.0(react@18.3.1): + /react-dom@18.0.0(react@18.3.1): + resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} + peerDependencies: + react: ^18.0.0 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.21.0 + dev: false - react-dom@18.3.1(react@18.3.1): + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - react-error-boundary@4.1.2(react@18.3.1): + /react-error-boundary@4.1.2(react@18.3.1): + resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} + peerDependencies: + react: '>=16.13.1' dependencies: '@babel/runtime': 7.26.7 react: 18.3.1 - react-error-boundary@5.0.0(react@18.3.1): + /react-error-boundary@5.0.0(react@18.3.1): + resolution: {integrity: sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ==} + peerDependencies: + react: '>=16.13.1' dependencies: '@babel/runtime': 7.26.7 react: 18.3.1 + dev: false - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@17.0.2: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-redux@7.2.9(react-dom@18.0.0(react@18.3.1))(react@18.3.1): + /react-redux@7.2.9(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true dependencies: '@babel/runtime': 7.26.7 '@types/react-redux': 7.1.34 @@ -6892,11 +5438,21 @@ snapshots: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.3.1 - react-is: 17.0.2 - optionalDependencies: react-dom: 18.0.0(react@18.3.1) + react-is: 17.0.2 + dev: false - react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /react-redux@7.2.9(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true dependencies: '@babel/runtime': 7.26.7 '@types/react-redux': 7.1.34 @@ -6904,31 +5460,50 @@ snapshots: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.3.1 - react-is: 17.0.2 - optionalDependencies: react-dom: 18.3.1(react@18.3.1) + react-is: 17.0.2 + dev: true - react-router-dom@6.28.2(react-dom@18.0.0(react@18.3.1))(react@18.3.1): + /react-router-dom@6.29.0(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-pkEbJPATRJ2iotK+wUwHfy0xs2T59YPEN8BQxVCPeBZvK7kfPESRc/nyxzdcxR17hXgUPYx2whMwl+eo9cUdnQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.21.1 + '@remix-run/router': 1.22.0 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) - react-router: 6.28.2(react@18.3.1) + react-router: 6.29.0(react@18.3.1) + dev: false - react-router@6.28.2(react@18.3.1): + /react-router@6.29.0(react@18.3.1): + resolution: {integrity: sha512-DXZJoE0q+KyeVw75Ck6GkPxFak63C4fGqZGNijnWgzB/HzSP1ZfTlBj5COaGWwhrMQ/R8bXiq5Ooy4KG+ReyjQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' dependencies: - '@remix-run/router': 1.21.1 + '@remix-run/router': 1.22.0 react: 18.3.1 + dev: false - react-table@7.8.0(react@18.3.1): + /react-table@7.8.0(react@18.3.1): + resolution: {integrity: sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==} + peerDependencies: + react: ^16.8.3 || ^17.0.0-0 || ^18.0.0 dependencies: react: 18.3.1 - react-themeable@1.1.0: + /react-themeable@1.1.0: + resolution: {integrity: sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w==} dependencies: object-assign: 3.0.0 - react-transition-group@4.4.5(react-dom@18.0.0(react@18.3.1))(react@18.3.1): + /react-transition-group@4.4.5(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' dependencies: '@babel/runtime': 7.26.7 dom-helpers: 5.2.1 @@ -6936,8 +5511,13 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' dependencies: '@babel/runtime': 7.26.7 dom-helpers: 5.2.1 @@ -6946,55 +5526,88 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-window-infinite-loader@1.0.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /react-window-infinite-loader@1.0.10(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-NO/csdHlxjWqA2RJZfzQgagAjGHspbO2ik9GtWZb0BY1Nnapq0auG8ErI+OhGCzpjYJsCYerqUlK6hkq9dfAAA==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - react-window@1.8.11(react-dom@18.0.0(react@18.3.1))(react@18.3.1): + /react-window@1.8.11(react-dom@18.0.0)(react@18.3.1): + resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: '@babel/runtime': 7.26.7 memoize-one: 5.2.1 react: 18.3.1 react-dom: 18.0.0(react@18.3.1) + dev: false - react-window@1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /react-window@1.8.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: '@babel/runtime': 7.26.7 memoize-one: 5.2.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react@18.3.1: + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-pkg@3.0.0: + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} dependencies: load-json-file: 4.0.0 normalize-package-data: 2.5.0 path-type: 3.0.0 - read-yaml-file@1.1.0: + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: false - readdirp@4.1.1: {} + /readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} - redux@4.2.1: + /redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: '@babel/runtime': 7.26.7 - reflect-metadata@0.1.14: {} + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - reflect.getprototypeof@1.0.10: + /reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -7005,9 +5618,12 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexp.prototype.flags@1.5.4: + /regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -7016,70 +5632,104 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: false - resolve@1.22.10: + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false - rimraf@2.7.1: + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 + dev: false - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 + dev: false - rollup@4.32.1: + /rollup@4.34.6: + resolution: {integrity: sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.32.1 - '@rollup/rollup-android-arm64': 4.32.1 - '@rollup/rollup-darwin-arm64': 4.32.1 - '@rollup/rollup-darwin-x64': 4.32.1 - '@rollup/rollup-freebsd-arm64': 4.32.1 - '@rollup/rollup-freebsd-x64': 4.32.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.32.1 - '@rollup/rollup-linux-arm-musleabihf': 4.32.1 - '@rollup/rollup-linux-arm64-gnu': 4.32.1 - '@rollup/rollup-linux-arm64-musl': 4.32.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.32.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.32.1 - '@rollup/rollup-linux-riscv64-gnu': 4.32.1 - '@rollup/rollup-linux-s390x-gnu': 4.32.1 - '@rollup/rollup-linux-x64-gnu': 4.32.1 - '@rollup/rollup-linux-x64-musl': 4.32.1 - '@rollup/rollup-win32-arm64-msvc': 4.32.1 - '@rollup/rollup-win32-ia32-msvc': 4.32.1 - '@rollup/rollup-win32-x64-msvc': 4.32.1 + '@rollup/rollup-android-arm-eabi': 4.34.6 + '@rollup/rollup-android-arm64': 4.34.6 + '@rollup/rollup-darwin-arm64': 4.34.6 + '@rollup/rollup-darwin-x64': 4.34.6 + '@rollup/rollup-freebsd-arm64': 4.34.6 + '@rollup/rollup-freebsd-x64': 4.34.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.6 + '@rollup/rollup-linux-arm-musleabihf': 4.34.6 + '@rollup/rollup-linux-arm64-gnu': 4.34.6 + '@rollup/rollup-linux-arm64-musl': 4.34.6 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.6 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.6 + '@rollup/rollup-linux-riscv64-gnu': 4.34.6 + '@rollup/rollup-linux-s390x-gnu': 4.34.6 + '@rollup/rollup-linux-x64-gnu': 4.34.6 + '@rollup/rollup-linux-x64-musl': 4.34.6 + '@rollup/rollup-win32-arm64-msvc': 4.34.6 + '@rollup/rollup-win32-ia32-msvc': 4.34.6 + '@rollup/rollup-win32-x64-msvc': 4.34.6 fsevents: 2.3.3 - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: false - rxjs-for-await@1.0.0(rxjs@7.8.1): + /rxjs-for-await@1.0.0(rxjs@7.8.1): + resolution: {integrity: sha512-MJhvf1vtQaljd5wlzsasvOjcohVogzkHkUI0gFE9nGhZ15/fT2vR1CjkLEh37oRqWwpv11vHo5D+sLM+Aw9Y8g==} + peerDependencies: + rxjs: ^7.0.0 dependencies: rxjs: 7.8.1 - rxjs@7.8.1: + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.8.1 - safe-array-concat@1.1.3: + /safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -7087,22 +5737,32 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: + /safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 isarray: 2.0.5 - safe-regex-test@1.1.0: + /safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-regex: 1.2.1 - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false - sass@1.83.4: + /sass@1.84.0: + resolution: {integrity: sha512-XDAbhEPJRxi7H0SxrnOpiXFQoUJHwkR2u3Zc4el+fK/Tt5Hpzw5kkQ59qVDfvdaUq6gCrEZIbySFBM2T9DNKHg==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: chokidar: 4.0.3 immutable: 5.0.3 @@ -7110,23 +5770,37 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 - scheduler@0.21.0: + /scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} dependencies: loose-envify: 1.4.0 + dev: false - scheduler@0.23.2: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 - section-iterator@2.0.0: {} + /section-iterator@2.0.0: + resolution: {integrity: sha512-xvTNwcbeDayXotnV32zLb3duQsP+4XosHpb/F+tu6VzEZFmIjzPdNk6/O+QOOx5XTh08KL2ufdXeCO33p380pQ==} - semver@5.7.2: {} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false - semver@7.6.3: {} + /semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true - send@0.19.0: + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -7143,8 +5817,11 @@ snapshots: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: false - serve-static@1.16.2: + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 @@ -7152,8 +5829,11 @@ snapshots: send: 0.19.0 transitivePeerDependencies: - supports-color + dev: false - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -7162,122 +5842,187 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - set-proto@1.0.0: + /set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false - shallow-equal@1.2.1: {} + /shallow-equal@1.2.1: + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.2: {} + /shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} - side-channel-list@1.0.0: + /side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 - side-channel-map@1.0.1: + /side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 - side-channel-weakmap@1.0.2: + /side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map: 1.0.1 - side-channel@1.1.0: + /side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - siginfo@2.0.0: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - signal-exit@4.1.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false - source-map-js@1.2.1: {} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false - spawndamnit@3.0.1: + /spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + dev: false - spdx-correct@3.2.0: + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.21 - spdx-exceptions@2.5.0: {} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - spdx-expression-parse@3.0.1: + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.21 - spdx-license-ids@3.0.21: {} + /spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false - stackback@0.0.2: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false - std-env@3.8.0: {} + /std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + dev: true - string.prototype.matchall@4.0.12: + /string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -7292,20 +6037,27 @@ snapshots: regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 side-channel: 1.1.0 + dev: false - string.prototype.padend@3.1.6: + /string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 es-object-atoms: 1.1.1 - string.prototype.repeat@1.0.0: + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 es-abstract: 1.23.9 + dev: false - string.prototype.trim@1.2.10: + /string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -7315,96 +6067,177 @@ snapshots: es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.9: + /string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.1.1 - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.1.1 - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.1.0 + dev: true - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false - subarg@1.0.0: + /subarg@1.0.0: + resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} dependencies: minimist: 1.2.8 + dev: true - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - tabbable@6.2.0: {} + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - term-size@2.2.1: {} + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: false - test-exclude@7.0.1: + /test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 10.4.5 minimatch: 9.0.5 + dev: true - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false - tiny-inflate@1.0.3: {} + /tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: false - tinybench@2.9.0: {} + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + dev: true - tinyexec@0.3.2: {} + /tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + dev: true - tinypool@1.0.2: {} + /tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + dev: true - tinyrainbow@1.2.0: {} + /tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + dev: true - tinyspy@3.0.2: {} + /tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + dev: true - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: false - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false - touch@3.1.1: {} + /touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + dev: false - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tree-kill@1.2.2: {} + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: false - ts-api-utils@1.4.3(typescript@5.5.4): + /ts-api-utils@1.4.3(typescript@5.5.4): + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.5.4 + dev: false - ts-key-enum@2.0.13: {} + /ts-key-enum@2.0.13: + resolution: {integrity: sha512-zixs6j8+NhzazLUQ1SiFrlo1EFWG/DbqLuUGcWWZ5zhwjRT7kbi1hBlofxdqel+h28zrby2It5TrOyKp04kvqw==} - ts-node-dev@2.0.0(@swc/core@1.10.11(@swc/helpers@0.5.15))(@types/node@18.19.74)(typescript@5.5.4): + /ts-node-dev@2.0.0(@types/node@18.19.75)(typescript@5.5.4): + resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} + engines: {node: '>=0.8.0'} + hasBin: true + peerDependencies: + node-notifier: '*' + typescript: '*' + peerDependenciesMeta: + node-notifier: + optional: true dependencies: chokidar: 3.6.0 dynamic-dedupe: 0.3.0 @@ -7414,22 +6247,35 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.10.11(@swc/helpers@0.5.15))(@types/node@18.19.74)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@18.19.75)(typescript@5.5.4) tsconfig: 7.0.0 typescript: 5.5.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' + dev: false - ts-node@10.9.2(@swc/core@1.10.11(@swc/helpers@0.5.15))(@types/node@18.19.74)(typescript@5.5.4): + /ts-node@10.9.2(@types/node@18.19.75)(typescript@5.5.4): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.74 + '@types/node': 18.19.75 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -7439,40 +6285,64 @@ snapshots: typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.11(@swc/helpers@0.5.15) + dev: false - tsconfck@3.1.4(typescript@5.5.4): - optionalDependencies: + /tsconfck@3.1.5(typescript@5.5.4): + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: typescript: 5.5.4 + dev: false - tsconfig@7.0.0: + /tsconfig@7.0.0: + resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} dependencies: '@types/strip-bom': 3.0.0 '@types/strip-json-comments': 0.0.30 strip-bom: 3.0.0 strip-json-comments: 2.0.1 + dev: false - tslib@2.8.1: {} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: false - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false - type-is@1.6.18: + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + dev: false - typed-array-buffer@1.0.3: + /typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-typed-array: 1.1.15 - typed-array-byte-length@1.0.3: + /typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 for-each: 0.3.4 @@ -7480,7 +6350,9 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.4: + /typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -7490,71 +6362,114 @@ snapshots: is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 - typed-array-length@1.0.7: + /typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 for-each: 0.3.4 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.5.4: {} + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true - uc.micro@1.0.6: {} + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - uid-safe@2.1.5: + /uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} dependencies: random-bytes: 1.0.0 + dev: false - unbox-primitive@1.1.0: + /unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - unicode-trie@2.0.0: + /unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 + dev: false - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false - universalify@2.0.1: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + dev: false - use-sync-external-store@1.4.0(react@18.3.1): + /use-sync-external-store@1.4.0(react@18.3.1): + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: react: 18.3.1 + dev: false - util.inherits@1.0.3: {} + /util.inherits@1.0.3: + resolution: {integrity: sha512-gMirHcfcq5D87nXDwbZqf5vl65S0mpMZBsHXJsXOO3Hc3G+JoQLwgaJa1h+PL7h3WhocnuLqoe8CuvMlztkyCA==} + engines: {node: '>=4'} + dev: true - utils-merge@1.0.1: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: false - validate-npm-package-license@3.0.4: + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false - vite-node@2.1.8(@types/node@18.19.74)(sass@1.83.4): + /vite-node@2.1.9(@types/node@18.19.75): + resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) transitivePeerDependencies: - '@types/node' - less @@ -7565,48 +6480,114 @@ snapshots: - sugarss - supports-color - terser + dev: true - vite-plugin-static-copy@1.0.6(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)): + /vite-plugin-static-copy@1.0.6(vite@5.4.14): + resolution: {integrity: sha512-3uSvsMwDVFZRitqoWHj0t4137Kz7UynnJeq1EZlRW7e25h2068fyIZX4ORCCOAkfp1FklGxJNVJBkBOD+PZIew==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 dependencies: chokidar: 3.6.0 fast-glob: 3.3.3 fs-extra: 11.3.0 picocolors: 1.1.1 - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) + dev: false - vite-tsconfig-paths@5.1.4(typescript@5.5.4)(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)): + /vite-tsconfig-paths@5.1.4(typescript@5.5.4)(vite@5.4.14): + resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: debug: 4.4.0 globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.5.4) - optionalDependencies: - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) + tsconfck: 3.1.5(typescript@5.5.4) + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) transitivePeerDependencies: - supports-color - typescript + dev: false - vite@5.4.14(@types/node@18.19.74)(sass@1.83.4): + /vite@5.4.14(@types/node@18.19.75)(sass@1.84.0): + resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: + '@types/node': 18.19.75 esbuild: 0.21.5 postcss: 8.5.1 - rollup: 4.32.1 + rollup: 4.34.6 + sass: 1.84.0 optionalDependencies: - '@types/node': 18.19.74 fsevents: 2.3.3 - sass: 1.83.4 - vitest@2.1.8(@types/node@18.19.74)(happy-dom@15.11.7)(sass@1.83.4): + /vitest@2.1.9(@types/node@18.19.75)(happy-dom@15.11.7): + resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.9 + '@vitest/ui': 2.1.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@18.19.74)(sass@1.83.4)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 + '@types/node': 18.19.75 + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.14) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 + happy-dom: 15.11.7 magic-string: 0.30.17 pathe: 1.1.2 std-env: 3.8.0 @@ -7614,12 +6595,9 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.14(@types/node@18.19.74)(sass@1.83.4) - vite-node: 2.1.8(@types/node@18.19.74)(sass@1.83.4) + vite: 5.4.14(@types/node@18.19.75)(sass@1.84.0) + vite-node: 2.1.9(@types/node@18.19.75) why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 18.19.74 - happy-dom: 15.11.7 transitivePeerDependencies: - less - lightningcss @@ -7630,27 +6608,40 @@ snapshots: - sugarss - supports-color - terser + dev: true - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: {} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true - whatwg-mimetype@3.0.0: {} + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: + /which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 - which-builtin-type@1.2.1: + /which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 function.prototype.name: 1.1.8 @@ -7660,20 +6651,24 @@ snapshots: is-finalizationregistry: 1.1.1 is-generator-function: 1.1.0 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 which-typed-array: 1.1.18 - which-collection@1.0.2: + /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.4 - which-typed-array@1.1.18: + /which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -7682,59 +6677,126 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true - wms-capabilities@0.4.0: + /wms-capabilities@0.4.0: + resolution: {integrity: sha512-dGe1SQ4GySIfsmGF+yk07QRsed0DgJJkPpimbmehE9nGXLqIGhbpi6pNk71YENqupLPSqcABDrKZ1UqepOhCyA==} + hasBin: true dependencies: minimist: 1.2.8 - word-wrap@1.2.5: {} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: false - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: true - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@7.5.10: {} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: false - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: false - zustand@4.5.6(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1): + /zustand@4.5.6(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1): + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true dependencies: - use-sync-external-store: 1.4.0(react@18.3.1) - optionalDependencies: '@types/react': 18.3.18 immer: 10.1.1 react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + dev: false - zustand@4.5.6(@types/react@18.3.18)(immer@9.0.6)(react@18.3.1): + /zustand@4.5.6(@types/react@18.3.18)(immer@9.0.6)(react@18.3.1): + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true dependencies: - use-sync-external-store: 1.4.0(react@18.3.1) - optionalDependencies: '@types/react': 18.3.18 immer: 9.0.6 react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + dev: false From 60f371fff0c494475ab9d0da15cbda33a7e29876 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 11 Feb 2025 14:46:11 -0600 Subject: [PATCH 03/42] Frontend to backend comms --- .../src/api/VersionCompare.ts | 10 +++++++--- .../common/versionCompareV2WidgetUtils.ts | 4 ++++ .../src/RPC/ChangesetGroupRPCImpl.ts | 2 +- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 14 +++++++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index a3b62898..7859145c 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { getClassName } from "@itwin/appui-abstract"; import type { AccessToken } from "@itwin/core-bentley"; -import type { ModelProps } from "@itwin/core-common"; +import type { ModelProps, ChangedElements, ChangesetIdWithIndex } from "@itwin/core-common"; import { IModelApp, IModelConnection, ViewState } from "@itwin/core-frontend"; import { KeySet } from "@itwin/presentation-common"; @@ -91,13 +91,17 @@ export interface VersionCompareOptions { getAccessToken?: () => Promise; createVisualizationHandler: (manager: VersionCompareManager) => VisualizationHandler; + changesetProcessor: (endChangesetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - + private static _changesetProcessor: (endChangesetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + public static get changesetProcessor() { + return VersionCompare._changesetProcessor; + } public static get logCategory(): string { return "VersionCompare"; } @@ -137,7 +141,7 @@ export class VersionCompare { public static initialize(options: VersionCompareOptions): void { // Initialize manager VersionCompare._manager = new VersionCompareManager(options); - + VersionCompare._changesetProcessor= options.changesetProcessor; // get the access token VersionCompare._getAccessToken = options.getAccessToken ?? IModelApp.getAccessToken; diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index e6664418..357d2e19 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,6 +26,10 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { + await VersionCompare.changesetProcessor({ + id: args.targetVersion.changesetId ?? "", + index: args.targetVersion.changesetIndex ?? 0, + },args.iModelConnection) // await VersionCompare.rpcGroupClient.getChangesetGroup(args.iModelConnection.getRpcProps(), // { // id: args.targetVersion.changesetId ?? "", diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index 9836e18a..8210081a 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -3,6 +3,6 @@ import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface.js"; export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { public getChangesetGroup(_iModelToken: IModelRpcProps , endChangeset:ChangesetIdWithIndex ): Promise { - throw new Error("Method not implemented."); + throw new Error("BOOO BAAAA."); } } diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index 6d23d2b6..f14baf8b 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -16,10 +16,10 @@ import { } from "@itwin/changed-elements-react"; import { Id64 } from "@itwin/core-bentley"; import { - AuthorizationClient, BentleyCloudRpcManager, BentleyCloudRpcParams, IModelReadRpcInterface, IModelTileRpcInterface + AuthorizationClient, BentleyCloudRpcManager, BentleyCloudRpcParams, ChangesetIdWithIndex, IModelReadRpcInterface, IModelTileRpcInterface } from "@itwin/core-common"; import { - CheckpointConnection, IModelApp, QuantityFormatter, ViewCreator3d, type IModelConnection, + CheckpointConnection, IModelApp, IModelConnection, QuantityFormatter, ViewCreator3d, type ViewState } from "@itwin/core-frontend"; import { ITwinLocalization } from "@itwin/core-i18n"; @@ -177,6 +177,13 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli ]); + const blah = async (changedsetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { + const client = ChangesetGroupRPCInterface.getClient(); + await client.getChangesetGroup(iModelConnection.getRpcProps(), changedsetId); + return []; + } + + VersionCompare.initialize({ changedElementsApiBaseUrl: applyUrlPrefix("https://api.bentley.com/changedelements"), getAccessToken: () => authorizationClient.getAccessToken(), @@ -187,10 +194,11 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli { frontstageIds: [MainFrontstageProvider.name] }, ), featureTracking: featureTrackingTesterFunctions, + changesetProcessor: blah, }); ReducerRegistryInstance.registerReducer("versionCompareState", VersionCompareReducer); -} + } export type Toaster = ReturnType; function useIModel( From 8ed3041f2d812dcbbe251dce2bc7e8d7c34bd5f7 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 17 Feb 2025 12:32:13 -0600 Subject: [PATCH 04/42] Changeset downloaded --- packages/test-app-backend/package.json | 10 +++---- .../src/ChangeElementsGroupHelper.ts | 26 ++++++++++++------- .../src/RPC/ChangesetGroupRPCImpl.ts | 8 +++--- .../src/RPC/ChangesetGroupRPCInterface.ts | 2 +- packages/test-app-backend/src/main.ts | 1 - .../src/App/ITwinJsApp/ITwinJsApp.tsx | 2 +- 6 files changed, 29 insertions(+), 20 deletions(-) diff --git a/packages/test-app-backend/package.json b/packages/test-app-backend/package.json index 5278e9e9..517ca109 100644 --- a/packages/test-app-backend/package.json +++ b/packages/test-app-backend/package.json @@ -11,9 +11,9 @@ "start": "ts-node-dev --transpile-only --respawn -- src/main.ts", "typecheck": "tsc --noEmit" }, - "devDependencies": { - "@types/express":"5.0.0" - }, + "devDependencies": { + "@types/express": "5.0.0" + }, "dependencies": { "@itwin/core-backend": "^4.10.6", "@itwin/core-bentley": "^4.10.6", @@ -26,8 +26,8 @@ "@types/dotenv-flow": "^3.2.0", "@types/node": "^18.0.0", "dotenv-flow": "^3.2.0", + "express": "4.21.2", "ts-node-dev": "^2.0.0", - "typescript": "~5.5.4", - "express":"4.21.2" + "typescript": "~5.5.4" } } diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index 89e6acfa..3b4d72c3 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -1,6 +1,7 @@ import { AnyDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelHost, PartialECChangeUnifier, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; import { DbOpcode, Id64String } from "@itwin/core-bentley"; -import { ChangedElements, ChangesetFileProps, ChangesetIdWithIndex } from "@itwin/core-common"; +import { BentleyCloudRpcManager, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex } from "@itwin/core-common"; +import { AuthClient } from './RPC/ChangesetGroupRPCInterface'; /** * Representation of a Changed Element during ChangesetGroup processing. @@ -21,14 +22,21 @@ export interface ChangesetGroupChangedElement { export class ChangesetGroup { - public static async _downloadChangesetFiles(endChangesetId: ChangesetIdWithIndex,iModelId:string):Promise { - await IModelHost.getHubAccess()?.downloadChangesets({ - targetDir: BriefcaseManager.getChangeSetsPath(iModelId), - iModelId: iModelId, - range: { - first: endChangesetId.index as number, - }, - }) + public static async _downloadChangesetFiles(endChangesetId: ChangesetIdWithIndex, iModelId: string, authToken :string): Promise { + const changesetPath = BriefcaseManager.getChangeSetsPath(iModelId) + const authClient: AuthClient = { + getAccessToken: function (): Promise { + return Promise.resolve(authToken); + }, + } + IModelHost.authorizationClient = authClient; + await IModelHost.getHubAccess()?.downloadChangesets({ + targetDir: changesetPath, + iModelId: iModelId, + range: { + first: endChangesetId.index as number, + }, + }) } /** diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index 8210081a..bfe2b458 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -1,8 +1,10 @@ import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; -import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface.js"; +import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; +import { ChangesetGroup } from "../ChangeElementsGroupHelper"; export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { - public getChangesetGroup(_iModelToken: IModelRpcProps , endChangeset:ChangesetIdWithIndex ): Promise { - throw new Error("BOOO BAAAA."); + public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset: ChangesetIdWithIndex, authToken:string ): Promise { + await ChangesetGroup._downloadChangesetFiles(endChangeset, _iModelToken.iModelId!, authToken); + return Promise.resolve("success"); } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index ca554099..65a2836c 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -6,5 +6,5 @@ export abstract class ChangesetGroupRPCInterface extends RpcInterface { public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface public static interfaceVersion = "0.0.1"; // The API version of the interface public static getClient() { return RpcManager.getClientForInterface(this); } - public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset:ChangesetIdWithIndex): Promise { return this.forward(arguments); } // this does something cool + public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset: ChangesetIdWithIndex, authToken:string ): Promise { return this.forward(arguments); } // this does something cool } diff --git a/packages/test-app-backend/src/main.ts b/packages/test-app-backend/src/main.ts index e50f8ab1..23f2da01 100644 --- a/packages/test-app-backend/src/main.ts +++ b/packages/test-app-backend/src/main.ts @@ -36,7 +36,6 @@ void (async () => { ); const app = express(); const server = new IModelJsExpressServer(rpcConfig.protocol); - await server.initialize(port); console.log(`Backend (PID ${process.pid}) is listening on port ${port}.`); diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index f14baf8b..a068d52b 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -179,7 +179,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli const blah = async (changedsetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { const client = ChangesetGroupRPCInterface.getClient(); - await client.getChangesetGroup(iModelConnection.getRpcProps(), changedsetId); + await client.getChangesetGroup(iModelConnection.getRpcProps(), changedsetId, await authorizationClient.getAccessToken() ); return []; } From f59683ad31cd04d49840153c04f98ba6d1ec5ff9 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 17 Feb 2025 15:48:52 -0600 Subject: [PATCH 05/42] Got Affans code working --- .../src/api/VersionCompare.ts | 4 +- .../common/versionCompareV2WidgetUtils.ts | 9 ++- .../src/ChangeElementsGroupHelper.ts | 78 +++++++++++++++---- .../src/RPC/ChangesetGroupRPCImpl.ts | 7 +- .../src/RPC/ChangesetGroupRPCInterface.ts | 4 +- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 4 +- 6 files changed, 79 insertions(+), 27 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index 7859145c..0d90b4d0 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -91,14 +91,14 @@ export interface VersionCompareOptions { getAccessToken?: () => Promise; createVisualizationHandler: (manager: VersionCompareManager) => VisualizationHandler; - changesetProcessor: (endChangesetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - private static _changesetProcessor: (endChangesetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + private static _changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; public static get changesetProcessor() { return VersionCompare._changesetProcessor; } diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 357d2e19..8b1e5b5a 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,10 +26,11 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { - await VersionCompare.changesetProcessor({ - id: args.targetVersion.changesetId ?? "", - index: args.targetVersion.changesetIndex ?? 0, - },args.iModelConnection) + await VersionCompare.changesetProcessor( + { id: args.targetVersion.changesetId ?? "", index: args.targetVersion.changesetIndex ?? 0}, + { + id: args.currentVersion.changesetId ?? "", index: args.currentVersion.changesetIndex ?? 0, + }, args.iModelConnection) // await VersionCompare.rpcGroupClient.getChangesetGroup(args.iModelConnection.getRpcProps(), // { // id: args.targetVersion.changesetId ?? "", diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index 3b4d72c3..f20c4b52 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -1,6 +1,6 @@ -import { AnyDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelHost, PartialECChangeUnifier, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; -import { DbOpcode, Id64String } from "@itwin/core-bentley"; -import { BentleyCloudRpcManager, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex } from "@itwin/core-common"; +import { AnyDb, BriefcaseDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelDb, IModelHost, PartialECChangeUnifier, RequestNewBriefcaseArg, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; +import { DbOpcode, Id64String, OpenMode } from "@itwin/core-bentley"; +import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelVersion } from "@itwin/core-common"; import { AuthClient } from './RPC/ChangesetGroupRPCInterface'; /** @@ -22,21 +22,73 @@ export interface ChangesetGroupChangedElement { export class ChangesetGroup { - public static async _downloadChangesetFiles(endChangesetId: ChangesetIdWithIndex, iModelId: string, authToken :string): Promise { - const changesetPath = BriefcaseManager.getChangeSetsPath(iModelId) + private static async _downloadChangesetFiles(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string): Promise { const authClient: AuthClient = { getAccessToken: function (): Promise { return Promise.resolve(authToken); }, } IModelHost.authorizationClient = authClient; - await IModelHost.getHubAccess()?.downloadChangesets({ - targetDir: changesetPath, - iModelId: iModelId, - range: { - first: endChangesetId.index as number, - }, - }) + try { + const csFileProps = []; + // TODO: should the first changeset in a reverse sync really be included even though its 'initialized branch provenance'? The answer is no, its a bug that needs to be fixed. + const fileProps = await IModelHost.hubAccess.downloadChangesets({ + iModelId: iModelId, + targetDir: BriefcaseManager.getChangeSetsPath(iModelId), + range: { first: startChangesetIdWithIndex.index!, end: endChangesetIdWithIndex.index! }, + accessToken: authToken, + }); + csFileProps.push(...fileProps); + return csFileProps; + } catch (e: unknown) { + return []; + } + } + + + /** + * Download and open a briefcase for an iModel + * @param contextId + * @param iModelId + * @param changesetId + * @returns The open iModel briefcase + */ + private static async _downloadBriefcase( + contextId: string, + iModelId: string, + changesetId: string, + authToken: string, + ): Promise { + const args: RequestNewBriefcaseArg = { + iModelId, + iTwinId: contextId, + asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), + briefcaseId: BriefcaseIdValue.Unassigned, + accessToken: authToken, + }; + // Download briefcase for the oldest changeset Id + const briefcaseProps = await BriefcaseManager.downloadBriefcase( + args + ); + + return BriefcaseDb.open(briefcaseProps); + } + + private static async cleanUp(iModelId: string, authToken: string, db: IModelDb) { + BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); + db.close(); + // await BriefcaseManager.deleteBriefcaseFiles(BriefcaseManager.getBriefcaseBasePath(iModelId), authToken) + // BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); + } + + public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { + const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); + //check if stuff is downloaded? + const db = await this._downloadBriefcase(contextId, iModelId, startChangesetIdWithIndex.id, authToken); + const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) + await this.cleanUp(iModelId, authToken, db); + //const changedElements = this.transformToAPIChangedElements(changedECInstance); + return { elements: [], classIds: [], modelIds: [], opcodes: [], type: [], properties: [], parentIds: [], parentClassIds: [] }; } /** @@ -75,7 +127,7 @@ export class ChangesetGroup { * @param changedElements * @returns */ - private static transformToAPIChangedElements (changedElements: ChangesetGroupChangedElement[]): ChangedElements { + private static transformToAPIChangedElements(changedElements: ChangedECInstance[]): ChangedElements { const ce: ChangedElements = ChangesetGroup.createEmptyChangedElements(); for (const elem of changedElements) { ce.elements.push(elem.id); diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index bfe2b458..06e456d1 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -1,10 +1,9 @@ -import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; +import { ChangedElements, ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; import { ChangesetGroup } from "../ChangeElementsGroupHelper"; export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { - public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset: ChangesetIdWithIndex, authToken:string ): Promise { - await ChangesetGroup._downloadChangesetFiles(endChangeset, _iModelToken.iModelId!, authToken); - return Promise.resolve("success"); + public async getChangesetGroup(_iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { + return ChangesetGroup.runGroupComparison(startChangeset, endChangeset, _iModelToken.iModelId!, authToken, _iModelToken.iTwinId!) ; } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index 65a2836c..06bc251f 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -1,10 +1,10 @@ /* eslint-disable prefer-rest-params */ /* eslint-disable prefer-spread */ -import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex } from "@itwin/core-common"; +import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex, ChangedElements } from "@itwin/core-common"; export abstract class ChangesetGroupRPCInterface extends RpcInterface { public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface public static interfaceVersion = "0.0.1"; // The API version of the interface public static getClient() { return RpcManager.getClientForInterface(this); } - public async getChangesetGroup(_iModelToken: IModelRpcProps, endChangeset: ChangesetIdWithIndex, authToken:string ): Promise { return this.forward(arguments); } // this does something cool + public async getChangesetGroup(_iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { return this.forward(arguments); } // this does something cool } diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index a068d52b..6c8e9930 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -177,9 +177,9 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli ]); - const blah = async (changedsetId: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { + const blah = async (startChangedset: ChangesetIdWithIndex,endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { const client = ChangesetGroupRPCInterface.getClient(); - await client.getChangesetGroup(iModelConnection.getRpcProps(), changedsetId, await authorizationClient.getAccessToken() ); + await client.getChangesetGroup(iModelConnection.getRpcProps(), startChangedset ,endChangedset, await authorizationClient.getAccessToken() ); return []; } From 22e241000e1dce4b1727575dd092063bbd86676d Mon Sep 17 00:00:00 2001 From: Caleb German Date: Thu, 20 Feb 2025 16:27:17 -0600 Subject: [PATCH 06/42] Frontend has change elements from backend --- .../src/api/VersionCompare.ts | 4 +-- .../common/versionCompareV2WidgetUtils.ts | 2 +- .../src/ChangeElementsGroupHelper.ts | 30 ++++++++++--------- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 3 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index 0d90b4d0..4dfb9bad 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -91,14 +91,14 @@ export interface VersionCompareOptions { getAccessToken?: () => Promise; createVisualizationHandler: (manager: VersionCompareManager) => VisualizationHandler; - changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - private static _changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + private static _changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; public static get changesetProcessor() { return VersionCompare._changesetProcessor; } diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 8b1e5b5a..a8c72196 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,7 +26,7 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { - await VersionCompare.changesetProcessor( + const blah = await VersionCompare.changesetProcessor( { id: args.targetVersion.changesetId ?? "", index: args.targetVersion.changesetIndex ?? 0}, { id: args.currentVersion.changesetId ?? "", index: args.currentVersion.changesetIndex ?? 0, diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index f20c4b52..6be3ac1c 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -1,6 +1,6 @@ import { AnyDb, BriefcaseDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelDb, IModelHost, PartialECChangeUnifier, RequestNewBriefcaseArg, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; import { DbOpcode, Id64String, OpenMode } from "@itwin/core-bentley"; -import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelVersion } from "@itwin/core-common"; +import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelVersion, TypeOfChange } from "@itwin/core-common"; import { AuthClient } from './RPC/ChangesetGroupRPCInterface'; /** @@ -62,7 +62,7 @@ export class ChangesetGroup { const args: RequestNewBriefcaseArg = { iModelId, iTwinId: contextId, - asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), + //asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), briefcaseId: BriefcaseIdValue.Unassigned, accessToken: authToken, }; @@ -84,11 +84,12 @@ export class ChangesetGroup { public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); //check if stuff is downloaded? + // todo check if we can get db another way? const db = await this._downloadBriefcase(contextId, iModelId, startChangesetIdWithIndex.id, authToken); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) await this.cleanUp(iModelId, authToken, db); - //const changedElements = this.transformToAPIChangedElements(changedECInstance); - return { elements: [], classIds: [], modelIds: [], opcodes: [], type: [], properties: [], parentIds: [], parentClassIds: [] }; + const changedElements = this.transformToAPIChangedElements(changedECInstance); + return changedElements; } /** @@ -129,18 +130,19 @@ export class ChangesetGroup { */ private static transformToAPIChangedElements(changedElements: ChangedECInstance[]): ChangedElements { const ce: ChangedElements = ChangesetGroup.createEmptyChangedElements(); - for (const elem of changedElements) { - ce.elements.push(elem.id); - ce.classIds.push(elem.classId); - ce.opcodes.push(ChangesetGroup.stringToOpcode(elem.operation)); - ce.type?.push(elem.type); - ce.parentIds?.push(elem.parentId); - ce.parentClassIds?.push(elem.parentRelClassId); - ce.properties?.push(Array.from(elem.properties.values())); - ce.modelIds?.push(elem.modelId); + const ceMap: Map = new Map(); + changedElements.forEach((elem) => { + if (!ceMap.has(`${elem.ECInstanceId}:${elem.ECClassId}`)) { + ceMap.set(`${elem.ECInstanceId}:${elem.ECClassId}`, elem); + } + }); + for (const elem of ceMap.values()) { + ce.elements.push(elem.ECInstanceId); + ce.classIds.push(elem.ECClassId ?? ""); + ce.opcodes.push(ChangesetGroup.stringToOpcode(elem.$meta?.op ?? "")); + ce.type.push(TypeOfChange.NoChange); // TODO: Do we need checksums anymore? If doing parallel processing, maybe... } - return ce; } diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index 6c8e9930..df666f71 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -179,8 +179,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli const blah = async (startChangedset: ChangesetIdWithIndex,endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { const client = ChangesetGroupRPCInterface.getClient(); - await client.getChangesetGroup(iModelConnection.getRpcProps(), startChangedset ,endChangedset, await authorizationClient.getAccessToken() ); - return []; + return client.getChangesetGroup(iModelConnection.getRpcProps(), startChangedset, endChangedset, await authorizationClient.getAccessToken()); } From 7ee0ffd4fdac6ea283dc0725262d20baf19adbc3 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 25 Feb 2025 15:30:39 -0600 Subject: [PATCH 07/42] pushing new changed elements into manager --- .../comparisonJobWidget/common/versionCompareV2WidgetUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index a8c72196..eca7dd9e 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -51,12 +51,12 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 if (args.runOnJobUpdate) { void args.runOnJobUpdate("ComparisonVisualizationStarting", jobAndNamedVersion); } - const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); + const changedElements = blah; VersionCompare.manager?.startComparisonV2( args.iModelConnection, args.currentVersion, await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), - [changedElements.changedElements]).catch((e) => { + [changedElements]).catch((e) => { Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); }); }; From 716af6001fff6acb3c9e5b49a345425841191177 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Wed, 19 Mar 2025 10:32:50 -0500 Subject: [PATCH 08/42] Working all the way --- .../changed-elements-react/src/api/ChangedElementsManager.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/changed-elements-react/src/api/ChangedElementsManager.ts b/packages/changed-elements-react/src/api/ChangedElementsManager.ts index 9e5b6207..4cade2eb 100644 --- a/packages/changed-elements-react/src/api/ChangedElementsManager.ts +++ b/packages/changed-elements-react/src/api/ChangedElementsManager.ts @@ -293,6 +293,8 @@ export const extractProperties = ( ): Map | undefined => { if (changeset.opcodes[index] === DbOpcode.Update && changeset.properties) { const map: Map = new Map(); + if (changeset.properties[index] === undefined) + return undefined; for ( let propIndex = 0; propIndex < changeset.properties[index].length; From 42bf6b84db1c52912910c286527e288f828a3d38 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Wed, 19 Mar 2025 12:55:33 -0500 Subject: [PATCH 09/42] Updated group helper --- .../src/ChangeElementsGroupHelper.ts | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index 6be3ac1c..cc96b8b0 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -58,6 +58,7 @@ export class ChangesetGroup { iModelId: string, changesetId: string, authToken: string, + briefcasePath:string, ): Promise { const args: RequestNewBriefcaseArg = { iModelId, @@ -65,29 +66,27 @@ export class ChangesetGroup { //asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), briefcaseId: BriefcaseIdValue.Unassigned, accessToken: authToken, + fileName: briefcasePath, }; - // Download briefcase for the oldest changeset Id - const briefcaseProps = await BriefcaseManager.downloadBriefcase( - args - ); - - return BriefcaseDb.open(briefcaseProps); + await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); + await BriefcaseManager.downloadBriefcase(args); + return BriefcaseDb.open({ + fileName: briefcasePath, + }); } - private static async cleanUp(iModelId: string, authToken: string, db: IModelDb) { - BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); + private static async cleanUp(iModelId: string, authToken: string, db: IModelDb, briefcasePath:string) { db.close(); - // await BriefcaseManager.deleteBriefcaseFiles(BriefcaseManager.getBriefcaseBasePath(iModelId), authToken) - // BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); + await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); + BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); } public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { + const briefcasePath = `${process.cwd()}` const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); - //check if stuff is downloaded? - // todo check if we can get db another way? - const db = await this._downloadBriefcase(contextId, iModelId, startChangesetIdWithIndex.id, authToken); + const db = await this._downloadBriefcase(contextId, iModelId, startChangesetIdWithIndex.id, authToken, briefcasePath); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) - await this.cleanUp(iModelId, authToken, db); + await this.cleanUp(iModelId, authToken, db, briefcasePath); const changedElements = this.transformToAPIChangedElements(changedECInstance); return changedElements; } From 74b777d88bbae54584f620ac5721699b37daac96 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Wed, 19 Mar 2025 14:01:16 -0500 Subject: [PATCH 10/42] WIP --- .../src/ChangeElementsGroupHelper.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index cc96b8b0..cba1fab7 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -63,13 +63,17 @@ export class ChangesetGroup { const args: RequestNewBriefcaseArg = { iModelId, iTwinId: contextId, - //asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), + asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), briefcaseId: BriefcaseIdValue.Unassigned, accessToken: authToken, fileName: briefcasePath, }; await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); - await BriefcaseManager.downloadBriefcase(args); + const localBriefCaseProps = await BriefcaseManager.downloadBriefcase(args); + await BriefcaseManager.releaseBriefcase(authToken,{ + iModelId: localBriefCaseProps.iModelId, + briefcaseId: localBriefCaseProps.briefcaseId, + }); return BriefcaseDb.open({ fileName: briefcasePath, }); @@ -77,17 +81,16 @@ export class ChangesetGroup { private static async cleanUp(iModelId: string, authToken: string, db: IModelDb, briefcasePath:string) { db.close(); - await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); } public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { - const briefcasePath = `${process.cwd()}` + const briefcasePath = `${process.cwd()}\\breifcase-${iModelId}\\breifcase-${iModelId}.bim`; const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); - const db = await this._downloadBriefcase(contextId, iModelId, startChangesetIdWithIndex.id, authToken, briefcasePath); + const db = await this._downloadBriefcase(contextId, iModelId, endChangesetIdWithIndex.id, authToken, briefcasePath); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) - await this.cleanUp(iModelId, authToken, db, briefcasePath); const changedElements = this.transformToAPIChangedElements(changedECInstance); + await this.cleanUp(iModelId, authToken, db, briefcasePath); return changedElements; } From a61ca9f9ee5400d7b7448e5f37721cd686c274fe Mon Sep 17 00:00:00 2001 From: Caleb German Date: Wed, 19 Mar 2025 16:06:50 -0500 Subject: [PATCH 11/42] WIP --- packages/test-app-backend/src/ChangeElementsGroupHelper.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index cba1fab7..ca2d7a00 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -68,7 +68,6 @@ export class ChangesetGroup { accessToken: authToken, fileName: briefcasePath, }; - await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); const localBriefCaseProps = await BriefcaseManager.downloadBriefcase(args); await BriefcaseManager.releaseBriefcase(authToken,{ iModelId: localBriefCaseProps.iModelId, @@ -82,6 +81,7 @@ export class ChangesetGroup { private static async cleanUp(iModelId: string, authToken: string, db: IModelDb, briefcasePath:string) { db.close(); BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); + await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); } public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { @@ -90,7 +90,7 @@ export class ChangesetGroup { const db = await this._downloadBriefcase(contextId, iModelId, endChangesetIdWithIndex.id, authToken, briefcasePath); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) const changedElements = this.transformToAPIChangedElements(changedECInstance); - await this.cleanUp(iModelId, authToken, db, briefcasePath); + //await this.cleanUp(iModelId, authToken, db, briefcasePath); return changedElements; } From a8fb1f382aede718fe68d1434f0c77debc038508 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Fri, 21 Mar 2025 12:31:00 -0500 Subject: [PATCH 12/42] WIP direct comparison result --- .../src/api/VersionCompareManager.ts | 133 ++++++++++++++++++ .../common/versionCompareV2WidgetUtils.ts | 28 ++-- .../src/ChangeElementsGroupHelper.ts | 40 +++--- 3 files changed, 174 insertions(+), 27 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 5973663d..16f644b9 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -373,6 +373,139 @@ export class VersionCompareManager { return success; } + + public async startDirectComparison( + currentIModel: IModelConnection, + currentVersion: NamedVersion, + targetVersion: NamedVersion): Promise { + this._currentIModel = currentIModel; + this._startedComparing = true; + let success = true; + try { + // Setup visualization handler + this._initializeVisualizationHandler(); + // Raise event that comparison is starting + this.versionCompareStarting.raiseEvent(); + + if (!this._currentIModel.iModelId || !this._currentIModel.iTwinId) { + throw new Error("Cannot compare with an iModel lacking iModelId or iTwinId (aka projectId)"); + } + + this.loadingProgressEvent.raiseEvent( + IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_openingTarget"), + ); + + // Open the target version IModel + const changesetId = targetVersion.changesetId; + this._targetIModel = await CheckpointConnection.openRemote( + this._currentIModel.iTwinId, + this._currentIModel.iModelId, + IModelVersion.asOfChangeSet(changesetId!), + ); + const changedElements = [await VersionCompare.changesetProcessor( + { id: targetVersion.changesetId ?? "", index: targetVersion.changesetIndex ?? 0 }, + { + id: currentVersion.changesetId ?? "", index: currentVersion.changesetIndex ?? 0, + }, currentIModel)]; + if (!targetVersion.changesetId) { + throw new Error("Cannot compare to a version if it doesn't contain a changeset Id"); + } + + // Keep metadata around for UI uses and other queries + this.currentVersion = currentVersion; + this.targetVersion = targetVersion; + + this.loadingProgressEvent.raiseEvent( + IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_getChangedElements"), + ); + + this.loadingProgressEvent.raiseEvent( + IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_initializingComparison"), + ); + + let wantedModelClasses = [ + GeometricModel2dState.classFullName, + GeometricModel3dState.classFullName, + ]; + if (this.options.wantedModelClasses) { + wantedModelClasses = this.options.wantedModelClasses; + } + let filteredChangedElements = changedElements; + if (this.ignoredElementIds !== undefined) { + filteredChangedElements = this._filterIgnoredElementsFromChangesets(changedElements); + } + await this.changedElementsManager.initialize( + this._currentIModel, + this._targetIModel, + filteredChangedElements, + this.wantAllModels ? undefined : wantedModelClasses, + false, + this.filterSpatial, + this.loadingProgressEvent, + ); + const changedElementEntries = this.changedElementsManager.entryCache.getAll(); + + // We have parent Ids available if any entries contain undefined parent data + this._hasParentIds = changedElementEntries.some( + (entry) => entry.parent !== undefined && entry.parentClassId !== undefined, + ); + // We have type of change available if any of the entries has a valid type of change value + this._hasTypeOfChange = changedElementEntries.some((entry) => entry.type !== 0); + // We have property filtering available if any of the entries has a valid array of changed properties + this._hasPropertiesForFiltering = changedElementEntries.some( + (entry) => entry.properties !== undefined && entry.properties.size !== 0, + ); + + // Get the entries + this.loadingProgressEvent.raiseEvent( + IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_findingAssemblies"), + ); + await this.changedElementsManager.entryCache.initialLoad(changedElementEntries.map((entry) => entry.id)); + + // Reset the select tool to allow external iModels to be located + await IModelApp.toolAdmin.startDefaultTool(); + + // Enable visualization of version comparison + await this.enableVisualization(false); + + // Raise event + this.versionCompareStarted.raiseEvent(this._currentIModel, this._targetIModel, changedElementEntries); + VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerStartedComparison); + VersionCompare.manager?.featureTracking?.trackVersionSelectorV2Usage(); + } catch (ex) { + // Let user know comparison failed - TODO: Give better errors + const briefError = IModelApp.localization.getLocalizedString( + "VersionCompare:versionCompare.error_versionCompare", + ); + const detailed = IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.error_cantStart"); + let errorMessage = "Unknown Error"; + if (ex instanceof Error) { + errorMessage = ex.message; + } else if (typeof ex === "string") { + errorMessage = ex; + } + + IModelApp.notifications.outputMessage( + new NotifyMessageDetails(OutputMessagePriority.Error, briefError, `${detailed}: ${errorMessage}`), + ); + try { + this.versionCompareStartFailed.raiseEvent(); + } finally { + this._currentIModel = undefined; + this._targetIModel = undefined; + this._startedComparing = false; + success = false; + VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerErrorStarting); + + await this.stopComparison(); + } + } + + return success; + + + + } /** * Starts comparison by opening a new iModelConnection and setting up the store. * @param currentIModel Current IModelConnection to be used to compare against diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index eca7dd9e..3edfce0c 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,11 +26,11 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { - const blah = await VersionCompare.changesetProcessor( - { id: args.targetVersion.changesetId ?? "", index: args.targetVersion.changesetIndex ?? 0}, - { - id: args.currentVersion.changesetId ?? "", index: args.currentVersion.changesetIndex ?? 0, - }, args.iModelConnection) +// const blah = await VersionCompare.changesetProcessor( +// { id: args.targetVersion.changesetId ?? "", index: args.targetVersion.changesetIndex ?? 0}, +// { +// id: args.currentVersion.changesetId ?? "", index: args.currentVersion.changesetIndex ?? 0, +// }, args.iModelConnection) // await VersionCompare.rpcGroupClient.getChangesetGroup(args.iModelConnection.getRpcProps(), // { // id: args.targetVersion.changesetId ?? "", @@ -51,14 +51,20 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 if (args.runOnJobUpdate) { void args.runOnJobUpdate("ComparisonVisualizationStarting", jobAndNamedVersion); } - const changedElements = blah; - VersionCompare.manager?.startComparisonV2( + VersionCompare.manager?.startDirectComparison( args.iModelConnection, args.currentVersion, - await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), - [changedElements]).catch((e) => { - Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); - }); + await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient)).catch((e) => { + Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); + }); + //const changedElements = blah; + // VersionCompare.manager?.startComparisonV2( + // args.iModelConnection, + // args.currentVersion, + // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), + // [changedElements]).catch((e) => { + // Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); + // }); }; const updateTargetVersion = async (iModelConnection: IModelConnection, targetVersion: NamedVersion, iModelsClient: IModelsClient) => { diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index ca2d7a00..5c9f5047 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -60,19 +60,26 @@ export class ChangesetGroup { authToken: string, briefcasePath:string, ): Promise { - const args: RequestNewBriefcaseArg = { - iModelId, - iTwinId: contextId, - asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), - briefcaseId: BriefcaseIdValue.Unassigned, - accessToken: authToken, - fileName: briefcasePath, - }; - const localBriefCaseProps = await BriefcaseManager.downloadBriefcase(args); - await BriefcaseManager.releaseBriefcase(authToken,{ - iModelId: localBriefCaseProps.iModelId, - briefcaseId: localBriefCaseProps.briefcaseId, - }); + const args: RequestNewBriefcaseArg = { + iModelId, + iTwinId: contextId, + asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), + briefcaseId: BriefcaseIdValue.Unassigned, + accessToken: authToken, + fileName: briefcasePath, + }; + try { + await BriefcaseManager.downloadBriefcase(args); + } catch (error) { + if (error instanceof Error && error.message.includes("already exists")) { + return BriefcaseDb.open({ + fileName: briefcasePath, + readonly: true, + }); + } else { + throw error; + } + } return BriefcaseDb.open({ fileName: briefcasePath, }); @@ -81,16 +88,17 @@ export class ChangesetGroup { private static async cleanUp(iModelId: string, authToken: string, db: IModelDb, briefcasePath:string) { db.close(); BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); - await BriefcaseManager.deleteBriefcaseFiles(briefcasePath, authToken); } public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { - const briefcasePath = `${process.cwd()}\\breifcase-${iModelId}\\breifcase-${iModelId}.bim`; + const briefcasePath = `${process.cwd()}\\${BriefcaseManager.cacheDir}\\breifcase-${iModelId}\\breifcase-${endChangesetIdWithIndex.id}.bim`; + //const cacheDir = BriefcaseManager.cacheDir.replace("\\imodels", ""); + //const briefcasePath = `${process.cwd()}\\${cacheDir}\\profiles\\default\\CloudCaches\\Checkpoints\\imodelblocks-${iModelId}\\${endChangesetIdWithIndex.id}.bim`; const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); const db = await this._downloadBriefcase(contextId, iModelId, endChangesetIdWithIndex.id, authToken, briefcasePath); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) const changedElements = this.transformToAPIChangedElements(changedECInstance); - //await this.cleanUp(iModelId, authToken, db, briefcasePath); + await this.cleanUp(iModelId, authToken, db, briefcasePath); return changedElements; } From 2ce152938e809f24596f59e823933ac90f22ad7f Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 24 Mar 2025 12:11:05 -0500 Subject: [PATCH 13/42] Added optimizations --- .../src/api/ChangedElementEntryCache.ts | 23 +++++--- .../src/api/ChangedElementsChildrenCache.ts | 4 +- .../src/api/ChangedElementsManager.ts | 47 +++++++++------- .../src/api/ElementQueries.ts | 3 +- .../src/api/VersionCompareManager.ts | 15 +++-- .../src/ChangeElementsGroupHelper.ts | 55 +------------------ .../src/RPC/ChangesetGroupRPCImpl.ts | 2 +- 7 files changed, 60 insertions(+), 89 deletions(-) diff --git a/packages/changed-elements-react/src/api/ChangedElementEntryCache.ts b/packages/changed-elements-react/src/api/ChangedElementEntryCache.ts index 25879504..4aab9aa8 100644 --- a/packages/changed-elements-react/src/api/ChangedElementEntryCache.ts +++ b/packages/changed-elements-react/src/api/ChangedElementEntryCache.ts @@ -604,15 +604,20 @@ export class ChangedElementEntryCache { (currentEntryIds.length + targetEntryIds.length) / this._findTopParentChunkSize + 1; + if (!this._manager.skipParentChildRelationships) { this._setCurrentLoadingMessage("msg_findingParents", numTopParentQueries); - const currentTopParents = await this._findTopParents( + } + + const currentTopParents = !this._manager.skipParentChildRelationships ? await this._findTopParents( this._currentIModel, currentEntryIds, - ); - const targetTopParents = await this._findTopParents( + ) : currentEntryIds; + + const targetTopParents = !this._manager.skipParentChildRelationships ? await this._findTopParents( this._targetIModel, targetEntryIds, - ); + ): targetEntryIds; + // Find which parents require querying and which ones are available in entries const unchangedCurrentTopParents = []; @@ -651,7 +656,7 @@ export class ChangedElementEntryCache { : currentTopParents, this._queryEntryChunkSize, this._updateLoadingProgress, - ); + ) const targetParentEntries = await queryEntryDataBulk( this._targetIModel, VersionCompare.manager?.wantFastParentLoad @@ -659,8 +664,7 @@ export class ChangedElementEntryCache { : targetTopParents, this._queryEntryChunkSize, this._updateLoadingProgress, - ); - + ) // Put all data into arrays const currentQueryData: ChangedElementQueryData[] = []; const targetQueryData: ChangedElementQueryData[] = []; @@ -703,7 +707,7 @@ export class ChangedElementEntryCache { } // Load child elements of the root nodes if we are not using fast parent loading - if (this._childrenCache && !VersionCompare.manager?.wantFastParentLoad) { + if (this._childrenCache && !VersionCompare.manager?.wantFastParentLoad && !this._manager.skipParentChildRelationships) { // Set update function for UI updates this._childrenCache.updateFunction = this._updateLoadingProgress; const numQueries = this._childrenCache.calculateNumberOfRequests( @@ -735,7 +739,8 @@ export class ChangedElementEntryCache { this._overrideEntriesInCache(finalEntries); // Go through all our entries and use the top parent information // to create the children arrays of top parents - this._findChildrenOfTopParents(); + if (!this._manager.skipParentChildRelationships) + this._findChildrenOfTopParents(); // Create the data provider and load the changed model nodes if (this._uiDataProvider === undefined) { diff --git a/packages/changed-elements-react/src/api/ChangedElementsChildrenCache.ts b/packages/changed-elements-react/src/api/ChangedElementsChildrenCache.ts index 27a29fef..676f50e1 100644 --- a/packages/changed-elements-react/src/api/ChangedElementsChildrenCache.ts +++ b/packages/changed-elements-react/src/api/ChangedElementsChildrenCache.ts @@ -9,6 +9,7 @@ import { IModelConnection } from "@itwin/core-frontend"; import { ChangedElementDataCache } from "./ChangedElementDataCache.js"; import { ChangeElementType, type ChangedElement, type ChangedElementEntry } from "./ChangedElementEntryCache.js"; import type { ChangedElementQueryData } from "./ElementQueries.js"; +import { VersionCompare } from "./VersionCompare.js"; interface ParentChildData { directChildren: ChangedElementQueryData[]; @@ -115,7 +116,8 @@ export class ChangedElementsChildrenCache extends ChangedElementDataCache { map: Map, elementIds: string[], ) => { - if (elementIds.length === 0) { + //todo make manager prop from skipping parent,children relationship + if (elementIds.length === 0 || VersionCompare.manager?.skipParentChildRelationships) { return; } diff --git a/packages/changed-elements-react/src/api/ChangedElementsManager.ts b/packages/changed-elements-react/src/api/ChangedElementsManager.ts index 4cade2eb..d7590ed0 100644 --- a/packages/changed-elements-react/src/api/ChangedElementsManager.ts +++ b/packages/changed-elements-react/src/api/ChangedElementsManager.ts @@ -844,8 +844,10 @@ export class ChangedElementsManager { cleanMergedElements(this._changedElements); } - // Fix missing model Ids before we filter by model class - await this._fixModelIds(currentIModel, targetIModel); + if (!this._manager.skipParentChildRelationships) { + // Fix missing model Ids before we filter by model class + await this._fixModelIds(currentIModel, targetIModel); + } // Filter out changed elements that we don't care about given the model classes if (wantedModelClasses) { @@ -863,6 +865,7 @@ export class ChangedElementsManager { return; } + // Filter out elements that are not GeometricElement3d const ecsql = "SELECT SourceECInstanceId FROM meta.ClasshasAllBaseClasses WHERE TargetECInstanceId = " + geom3dId; @@ -882,8 +885,10 @@ export class ChangedElementsManager { } } - // Find proper models to display elements under - await this._findParentModels(currentIModel, targetIModel); + if (!this._manager.skipParentChildRelationships) { + // Find proper models to display elements under + await this._findParentModels(currentIModel, targetIModel); + } } /** @@ -1171,26 +1176,28 @@ export class ChangedElementsManager { IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_computingChangedModels"), ); } + if (!this._manager.skipParentChildRelationships) { + // Find changed models + this._changedModels = await this.findChangedModels( + currentIModel, + targetIModel, + forward ?? false, + progressLoadingEvent, + ); - // Find changed models - this._changedModels = await this.findChangedModels( - currentIModel, - targetIModel, - forward ?? false, - progressLoadingEvent, - ); + if (progressLoadingEvent) { + progressLoadingEvent.raiseEvent( + IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_computingUnchangedModels"), + ); + } - if (progressLoadingEvent) { - progressLoadingEvent.raiseEvent( - IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_computingUnchangedModels"), + // Find unchanged models + this._unchangedModels = await this.findUnchangedModels( + currentIModel, + this._changedModels, ); - } - // Find unchanged models - this._unchangedModels = await this.findUnchangedModels( - currentIModel, - this._changedModels, - ); + } await this.generateEntries(currentIModel, targetIModel); } diff --git a/packages/changed-elements-react/src/api/ElementQueries.ts b/packages/changed-elements-react/src/api/ElementQueries.ts index 4de59e4d..e679fa6c 100644 --- a/packages/changed-elements-react/src/api/ElementQueries.ts +++ b/packages/changed-elements-react/src/api/ElementQueries.ts @@ -9,6 +9,7 @@ import { KeySet, type InstanceKey, type Key } from "@itwin/presentation-common"; import { Presentation } from "@itwin/presentation-frontend"; import { ChangeElementType, type ChangedElementEntry } from "./ChangedElementEntryCache.js"; +import { VersionCompare } from "./VersionCompare.js"; /** * Interface for query data @@ -108,7 +109,7 @@ export const queryEntryData = async ( classFullName: (row.className as string).replace(".", ":"), modelId: row.model.id, classId: row.classId, - parent: row.parent ? row.parent.id : undefined, + parent: row.parent && !VersionCompare.manager?.skipParentChildRelationships ? row.parent.id : undefined, }; result.push(data); } diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 16f644b9..7a6bc594 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -39,6 +39,7 @@ export class VersionCompareManager { private _hasTypeOfChange = false; private _hasPropertiesForFiltering = false; private _hasParentIds = false; + private _skipParentChildRelationships = false; /** Version Compare ITwinLocalization Namespace */ public static namespace = "VersionCompare"; @@ -79,6 +80,10 @@ export class VersionCompareManager { return this.options.filterSpatial ?? true; } + public get skipParentChildRelationships(): boolean { + return this._skipParentChildRelationships; + } + public get wantPropertyFiltering(): boolean { return this._hasPropertiesForFiltering; } @@ -381,6 +386,7 @@ export class VersionCompareManager { this._currentIModel = currentIModel; this._startedComparing = true; let success = true; + this._skipParentChildRelationships = true; try { // Setup visualization handler this._initializeVisualizationHandler(); @@ -446,9 +452,7 @@ export class VersionCompareManager { const changedElementEntries = this.changedElementsManager.entryCache.getAll(); // We have parent Ids available if any entries contain undefined parent data - this._hasParentIds = changedElementEntries.some( - (entry) => entry.parent !== undefined && entry.parentClassId !== undefined, - ); + this._hasParentIds = false; // We have type of change available if any of the entries has a valid type of change value this._hasTypeOfChange = changedElementEntries.some((entry) => entry.type !== 0); // We have property filtering available if any of the entries has a valid array of changed properties @@ -460,7 +464,7 @@ export class VersionCompareManager { this.loadingProgressEvent.raiseEvent( IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_findingAssemblies"), ); - await this.changedElementsManager.entryCache.initialLoad(changedElementEntries.map((entry) => entry.id)); + await this.changedElementsManager.entryCache.initialLoad(changedElementEntries.map((entry) => entry.id), true); // Reset the select tool to allow external iModels to be located await IModelApp.toolAdmin.startDefaultTool(); @@ -495,6 +499,7 @@ export class VersionCompareManager { this._targetIModel = undefined; this._startedComparing = false; success = false; + this._skipParentChildRelationships = false; VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerErrorStarting); await this.stopComparison(); @@ -659,7 +664,6 @@ export class VersionCompareManager { public async stopComparison(): Promise { // Let listeners know we are cleaning up comparison this.versionCompareStopping.raiseEvent(); - try { if (this._targetIModel) { await this._targetIModel.close(); @@ -683,6 +687,7 @@ export class VersionCompareManager { this._currentIModel = undefined; this._targetIModel = undefined; this._startedComparing = false; + this._skipParentChildRelationships = false; // Clean-up visualization handler await this._visualizationHandler?.cleanUp(); diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts index 5c9f5047..7ad4012f 100644 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts @@ -1,6 +1,6 @@ import { AnyDb, BriefcaseDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelDb, IModelHost, PartialECChangeUnifier, RequestNewBriefcaseArg, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; import { DbOpcode, Id64String, OpenMode } from "@itwin/core-bentley"; -import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelVersion, TypeOfChange } from "@itwin/core-common"; +import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelRpcProps, IModelVersion, TypeOfChange } from "@itwin/core-common"; import { AuthClient } from './RPC/ChangesetGroupRPCInterface'; /** @@ -45,60 +45,11 @@ export class ChangesetGroup { } } - - /** - * Download and open a briefcase for an iModel - * @param contextId - * @param iModelId - * @param changesetId - * @returns The open iModel briefcase - */ - private static async _downloadBriefcase( - contextId: string, - iModelId: string, - changesetId: string, - authToken: string, - briefcasePath:string, - ): Promise { - const args: RequestNewBriefcaseArg = { - iModelId, - iTwinId: contextId, - asOf: IModelVersion.asOfChangeSet(changesetId).toJSON(), - briefcaseId: BriefcaseIdValue.Unassigned, - accessToken: authToken, - fileName: briefcasePath, - }; - try { - await BriefcaseManager.downloadBriefcase(args); - } catch (error) { - if (error instanceof Error && error.message.includes("already exists")) { - return BriefcaseDb.open({ - fileName: briefcasePath, - readonly: true, - }); - } else { - throw error; - } - } - return BriefcaseDb.open({ - fileName: briefcasePath, - }); - } - - private static async cleanUp(iModelId: string, authToken: string, db: IModelDb, briefcasePath:string) { - db.close(); - BriefcaseManager.deleteChangeSetsFromLocalDisk(iModelId); - } - - public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string): Promise { - const briefcasePath = `${process.cwd()}\\${BriefcaseManager.cacheDir}\\breifcase-${iModelId}\\breifcase-${endChangesetIdWithIndex.id}.bim`; - //const cacheDir = BriefcaseManager.cacheDir.replace("\\imodels", ""); - //const briefcasePath = `${process.cwd()}\\${cacheDir}\\profiles\\default\\CloudCaches\\Checkpoints\\imodelblocks-${iModelId}\\${endChangesetIdWithIndex.id}.bim`; + public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string,_iModelToken: IModelRpcProps): Promise { const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); - const db = await this._downloadBriefcase(contextId, iModelId, endChangesetIdWithIndex.id, authToken, briefcasePath); + const db = IModelDb.findByKey(_iModelToken.key); const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) const changedElements = this.transformToAPIChangedElements(changedECInstance); - await this.cleanUp(iModelId, authToken, db, briefcasePath); return changedElements; } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index 06e456d1..430ebc33 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -4,6 +4,6 @@ import { ChangesetGroup } from "../ChangeElementsGroupHelper"; export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { public async getChangesetGroup(_iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { - return ChangesetGroup.runGroupComparison(startChangeset, endChangeset, _iModelToken.iModelId!, authToken, _iModelToken.iTwinId!) ; + return ChangesetGroup.runGroupComparison(startChangeset, endChangeset, _iModelToken.iModelId!, authToken, _iModelToken.iTwinId!,_iModelToken); } } From 8a8f43441dfc15e062329b4113a9bb93d37b13ec Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 24 Mar 2025 14:17:29 -0500 Subject: [PATCH 14/42] Adding timings --- .../NamedVersionSelector/useComparisonJobs.ts | 8 +++++- .../src/api/ChangedElementsManager.ts | 2 +- .../src/api/VersionCompareManager.ts | 5 ++++ .../src/widgets/EnhancedElementsInspector.tsx | 5 ++++ .../common/versionCompareV2WidgetUtils.ts | 26 ++++++------------- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/packages/changed-elements-react/src/NamedVersionSelector/useComparisonJobs.ts b/packages/changed-elements-react/src/NamedVersionSelector/useComparisonJobs.ts index dcfaecd7..16bd8637 100644 --- a/packages/changed-elements-react/src/NamedVersionSelector/useComparisonJobs.ts +++ b/packages/changed-elements-react/src/NamedVersionSelector/useComparisonJobs.ts @@ -87,7 +87,7 @@ export function useComparisonJobs(args: UseComparisonJobsArgs): UseComparisonJob job, watchJob: async function* (pollingIntervalMs: number, signal?: AbortSignal) { signal?.throwIfAborted(); - + const startTime = new Date(); while (job.status === "Queued" || job.status === "Started") { await new Promise((resolve) => setTimeout(resolve, pollingIntervalMs)); const comparisonJob = await getComparisonJob({ @@ -98,6 +98,12 @@ export function useComparisonJobs(args: UseComparisonJobsArgs): UseComparisonJob signal, }); job = comparisonJobToStatus(comparisonJob ?? job.jobId, namedVersion); + if (job.status === "Completed" || job.status === "Failed") { + const endTime = new Date(); + console.log(`Job Processing start time: ${startTime.toISOString()}`); + console.log(`Job Processing end time: ${endTime.toISOString()}`); + console.log(`Job Processing time for front end: ${endTime.getTime() - startTime.getTime()} milliseconds`); + } yield job; } }, diff --git a/packages/changed-elements-react/src/api/ChangedElementsManager.ts b/packages/changed-elements-react/src/api/ChangedElementsManager.ts index d7590ed0..448c2f0d 100644 --- a/packages/changed-elements-react/src/api/ChangedElementsManager.ts +++ b/packages/changed-elements-react/src/api/ChangedElementsManager.ts @@ -859,7 +859,7 @@ export class ChangedElementsManager { } // Filter by spatial elements if we want - if (filterSpatial) { + if (filterSpatial && !this._manager.skipParentChildRelationships) { const geom3dId = await this._getGeometricElement3dClassId(currentIModel); if (!geom3dId) { return; diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 7a6bc594..f78d357b 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -387,6 +387,7 @@ export class VersionCompareManager { this._startedComparing = true; let success = true; this._skipParentChildRelationships = true; + const startTime = new Date(); try { // Setup visualization handler this._initializeVisualizationHandler(); @@ -476,6 +477,10 @@ export class VersionCompareManager { this.versionCompareStarted.raiseEvent(this._currentIModel, this._targetIModel, changedElementEntries); VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerStartedComparison); VersionCompare.manager?.featureTracking?.trackVersionSelectorV2Usage(); + const endTime = new Date(); + console.log(`Direct Comparison started at: ${startTime.toISOString()}`); + console.log(`Direct Comparison ended at: ${endTime.toISOString()}`); + console.log(`Direct Comparison Duration: ${endTime.getTime() - startTime.getTime()} milliseconds`); } catch (ex) { // Let user know comparison failed - TODO: Give better errors const briefError = IModelApp.localization.getLocalizedString( diff --git a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx index f9e09733..f96260f3 100644 --- a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx +++ b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx @@ -1110,8 +1110,13 @@ export class ChangedElementsListComponent extends Component => { + const startTime = new Date(); await this.props.dataProvider.load(nodes); await this._reloadNodes(); + const endTime = new Date(); + console.log(`First entries loaded in tree at: ${startTime.toISOString()}`); + console.log(`First entries loaded in tree ended at: ${endTime.toISOString()}`); + console.log(`First entries loaded in tree duration: ${endTime.getTime() - startTime.getTime()} milliseconds`); }; private _isNodeLoaded = (node: TreeNodeItem): boolean => { diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 3edfce0c..6eaf167a 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -26,16 +26,6 @@ export type ManagerStartComparisonV2Args = { }; export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2Args) => { -// const blah = await VersionCompare.changesetProcessor( -// { id: args.targetVersion.changesetId ?? "", index: args.targetVersion.changesetIndex ?? 0}, -// { -// id: args.currentVersion.changesetId ?? "", index: args.currentVersion.changesetIndex ?? 0, -// }, args.iModelConnection) - // await VersionCompare.rpcGroupClient.getChangesetGroup(args.iModelConnection.getRpcProps(), - // { - // id: args.targetVersion.changesetId ?? "", - // index: args.targetVersion.changesetIndex ?? 0, - // }); if (VersionCompare.manager?.isComparing) { await VersionCompare.manager?.stopComparison(); } @@ -57,14 +47,14 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient)).catch((e) => { Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); }); - //const changedElements = blah; - // VersionCompare.manager?.startComparisonV2( - // args.iModelConnection, - // args.currentVersion, - // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), - // [changedElements]).catch((e) => { - // Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); - // }); + // const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); + // VersionCompare.manager?.startComparisonV2( + // args.iModelConnection, + // args.currentVersion, + // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), + // [changedElements.changedElements]).catch((e) => { + // Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); + // }); }; const updateTargetVersion = async (iModelConnection: IModelConnection, targetVersion: NamedVersion, iModelsClient: IModelsClient) => { From e2bd4a3af7fcdd923401e6c0cf0be74805cbdb9b Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 24 Mar 2025 14:39:51 -0500 Subject: [PATCH 15/42] Fixed merged files --- .../src/api/VersionCompareManager.ts | 5 -- pnpm-lock.yaml | 62 +++++++++++++++++++ 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 77d03836..01b5a78a 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -387,7 +387,6 @@ export class VersionCompareManager { currentVersion: NamedVersion, targetVersion: NamedVersion): Promise { this._currentIModel = currentIModel; - this._startedComparing = true; let success = true; this._skipParentChildRelationships = true; const startTime = new Date(); @@ -505,7 +504,6 @@ export class VersionCompareManager { } finally { this._currentIModel = undefined; this._targetIModel = undefined; - this._startedComparing = false; success = false; this._skipParentChildRelationships = false; VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerErrorStarting); @@ -515,9 +513,6 @@ export class VersionCompareManager { } return success; - - - } /** * Starts comparison by opening a new iModelConnection and setting up the store. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4407b2b8..d646f3a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2453,6 +2453,19 @@ packages: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} dev: true + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.76 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 18.19.76 + dev: true + /@types/dotenv-flow@3.3.3: resolution: {integrity: sha512-aJjBsKw4bfGjvaRwrxBtEOfYZxCAq+LiFTpZ4DGTEK2b9eLVt/IAClapSxMfgV4Mi/2bIBKKjoTCO0lOh4ACLg==} dev: false @@ -2460,6 +2473,24 @@ packages: /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + /@types/express-serve-static-core@5.0.6: + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + dependencies: + '@types/node': 18.19.76 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@5.0.0: + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.6 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + dev: true + /@types/geojson@7946.0.16: resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} @@ -2469,6 +2500,14 @@ packages: '@types/react': 18.3.18 hoist-non-react-statics: 3.3.2 + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false @@ -2481,6 +2520,14 @@ packages: /@types/prop-types@15.7.14: resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + /@types/qs@6.9.18: + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + /@types/react-dom@18.3.5(@types/react@18.3.18): resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} peerDependencies: @@ -2522,6 +2569,21 @@ packages: '@types/prop-types': 15.7.14 csstype: 3.1.3 + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.76 + dev: true + + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 18.19.76 + '@types/send': 0.17.4 + dev: true + /@types/strip-bom@3.0.0: resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} dev: false From 3dece232d445b6c790d8fb8b92f2b2dded427e77 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Mon, 24 Mar 2025 14:45:29 -0500 Subject: [PATCH 16/42] Added more logging for timing --- .../src/api/VersionCompareManager.ts | 5 ++++ .../common/versionCompareV2WidgetUtils.ts | 24 +++++++++---------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 01b5a78a..4f52ed63 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -529,6 +529,7 @@ export class VersionCompareManager { ): Promise { this._currentIModel = currentIModel; let success = true; + const startTime = new Date(); try { if (!targetVersion.changesetId) { throw new Error("Cannot compare to a version if it doesn't contain a changeset Id"); @@ -617,6 +618,10 @@ export class VersionCompareManager { VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.versionCompareManagerStartedComparison); this._isComparisonStarted = true; VersionCompare.manager?.featureTracking?.trackVersionSelectorV2Usage(); + const endTime = new Date(); + console.log(`V2 Comparison started at: ${startTime.toISOString()}`); + console.log(`V2 Comparison ended at: ${endTime.toISOString()}`); + console.log(`V2 Comparison Duration: ${endTime.getTime() - startTime.getTime()} milliseconds`); } catch (ex) { // Let user know comparison failed - TODO: Give better errors const briefError = IModelApp.localization.getLocalizedString( diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 6eaf167a..87885e09 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -41,20 +41,20 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 if (args.runOnJobUpdate) { void args.runOnJobUpdate("ComparisonVisualizationStarting", jobAndNamedVersion); } - VersionCompare.manager?.startDirectComparison( - args.iModelConnection, - args.currentVersion, - await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient)).catch((e) => { - Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); - }); - // const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); - // VersionCompare.manager?.startComparisonV2( - // args.iModelConnection, - // args.currentVersion, - // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), - // [changedElements.changedElements]).catch((e) => { + // VersionCompare.manager?.startDirectComparison( + // args.iModelConnection, + // args.currentVersion, + // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient)).catch((e) => { // Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); // }); + const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); + VersionCompare.manager?.startComparisonV2( + args.iModelConnection, + args.currentVersion, + await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), + [changedElements.changedElements]).catch((e) => { + Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); + }); }; const updateTargetVersion = async (iModelConnection: IModelConnection, targetVersion: NamedVersion, iModelsClient: IModelsClient) => { From ee65f18930158db424509e221973ae8b50a42222 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 25 Mar 2025 12:28:21 -0500 Subject: [PATCH 17/42] Added experiment.md --- experiment.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 experiment.md diff --git a/experiment.md b/experiment.md new file mode 100644 index 00000000..6b693808 --- /dev/null +++ b/experiment.md @@ -0,0 +1,33 @@ +## Changed Elements React Experiment - Direct Comparison Workflow + +### HYPOTHESIS: +If we use changeset group processing without processing the changed elements, then the result of the direct processing will be produced faster and will resemble GitHub's diff functionality by displaying a flat list of changes. + +### REASON FOR EXPERIMENT +Changed elements does a lot of processing to ensure that we show a presentation-based summary of what has changed in an iModel. We want to understand how a feature-like Version Comparison would operate if we used the raw changeset group results instead of doing presentation ruleset-based property path traversal. We expect to see faster loading times for running a Direct Comparison due to removing excess processing but still have an output that would be valuable to the user. + +### EXPERIMENT +We conducted multiple experiments in the hopes of confirming our hypothesis: +Steps for our experiments: + +1. Run Version compare V2 workflow(Post/Get/Display) for a iModel with an unprocessed job range. Record the time till the user was able to interact with the information related to that job on the UI. +2. Run experimental Direct Comparison on the same unprocessed job version. Record the time till the user was able to interact with the information related to that job on the UI. + +#### Results Tabel +We tested across three different iModels of varying sizes in the QA region. We wanted to test a variety of sizes for iModels and the changed elements processed in the group comparison to draw a better conclusion. + +Itwin | IModel |V2 Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | Direct Comparison Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | % diff between V2 and Direct Processing | +-- | -- | -- | -- | -- | -- | -- +413e666d-1e25-4d8e-9927-12db8995dfd0| c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 15909 | 5311 | 13249 | 59368 | 18.24% +413e666d-1e25-4d8e-9927-12db8995dfd0| 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1198084 | 169776 | 204125 | 418309 | 142% +413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 394015 | 112951 | 68022 | 772599 | 141% + +### RESULTS SUMMARY +The most salient findings of our testing: + +1. On iModels with vast amount of data that must be processed. Direct Comparison is about 1.4 times faster than V2 Comparison. +2. On smaller iModels the % difference is slightly better for Direct Comparison workflow. +3. The UI has more elements to look through with Direct comparison workflow than V2 workflow. + +### Conclusion +This experiment proved that Direct Comparison workflow is viable and maybe preferable in some situations for larger iModels due to its speed of processing. Direct comparison may be an efficacious solution to long waiting times for processing, if the user does not desire that full information provided by property traversal. From 0eda6d02e0bae0f862e9de0dc1afb1753f982c0f Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 25 Mar 2025 12:35:07 -0500 Subject: [PATCH 18/42] Updated experiment markdown --- experiment.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/experiment.md b/experiment.md index 6b693808..639144be 100644 --- a/experiment.md +++ b/experiment.md @@ -3,31 +3,30 @@ ### HYPOTHESIS: If we use changeset group processing without processing the changed elements, then the result of the direct processing will be produced faster and will resemble GitHub's diff functionality by displaying a flat list of changes. -### REASON FOR EXPERIMENT -Changed elements does a lot of processing to ensure that we show a presentation-based summary of what has changed in an iModel. We want to understand how a feature-like Version Comparison would operate if we used the raw changeset group results instead of doing presentation ruleset-based property path traversal. We expect to see faster loading times for running a Direct Comparison due to removing excess processing but still have an output that would be valuable to the user. +### REASON FOR EXPERIMENT +Changed elements undergo extensive processing to ensure a presentation-based summary of changes in an iModel. We aim to understand how a feature like Version Comparison would operate using raw changeset group results instead of presentation ruleset-based property path traversal. We expect faster loading times for Direct Comparison due to reduced processing, while still providing valuable output to the user. ### EXPERIMENT -We conducted multiple experiments in the hopes of confirming our hypothesis: -Steps for our experiments: +We conducted multiple experiments to confirm our hypothesis. The steps were: -1. Run Version compare V2 workflow(Post/Get/Display) for a iModel with an unprocessed job range. Record the time till the user was able to interact with the information related to that job on the UI. -2. Run experimental Direct Comparison on the same unprocessed job version. Record the time till the user was able to interact with the information related to that job on the UI. +1. Run the Version Compare V2 workflow (Post/Get/Display) for an iModel with an unprocessed job range. Record the time until the user can interact with the job-related information on the UI. +2. Run the experimental Direct Comparison on the same unprocessed job version. Record the time until the user can interact with the job-related information on the UI. -#### Results Tabel -We tested across three different iModels of varying sizes in the QA region. We wanted to test a variety of sizes for iModels and the changed elements processed in the group comparison to draw a better conclusion. +#### Results Table +We tested across three different iModels of varying sizes in the QA region to draw better conclusions. -Itwin | IModel |V2 Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | Direct Comparison Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | % diff between V2 and Direct Processing | --- | -- | -- | -- | -- | -- | -- -413e666d-1e25-4d8e-9927-12db8995dfd0| c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 15909 | 5311 | 13249 | 59368 | 18.24% -413e666d-1e25-4d8e-9927-12db8995dfd0| 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1198084 | 169776 | 204125 | 418309 | 142% -413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 394015 | 112951 | 68022 | 772599 | 141% +| Itwin | IModel | V2 Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Changed Elements UI Must Process | % diff between V2 and Direct Processing | +| -- | -- | -- | -- | -- | -- | -- | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 15909 | 5311 | 13249 | 59368 | 18.24% | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1198084 | 169776 | 204125 | 418309 | 142% | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 394015 | 112951 | 68022 | 772599 | 141% | ### RESULTS SUMMARY The most salient findings of our testing: -1. On iModels with vast amount of data that must be processed. Direct Comparison is about 1.4 times faster than V2 Comparison. -2. On smaller iModels the % difference is slightly better for Direct Comparison workflow. -3. The UI has more elements to look through with Direct comparison workflow than V2 workflow. +1. On iModels with a vast amount of data to process, Direct Comparison is about 1.4 times faster than V2 Comparison. +2. On smaller iModels, the percentage difference is slightly better for the Direct Comparison workflow. +3. The UI has more elements to process with the Direct Comparison workflow than with the V2 workflow. -### Conclusion -This experiment proved that Direct Comparison workflow is viable and maybe preferable in some situations for larger iModels due to its speed of processing. Direct comparison may be an efficacious solution to long waiting times for processing, if the user does not desire that full information provided by property traversal. +### CONCLUSION +This experiment proved that the Direct Comparison workflow is viable and may be preferable in some situations for larger iModels due to its processing speed. Direct Comparison may be an efficacious solution to long waiting times if the user does not require the full information provided by property traversal. From d7e3d7f9ae3f32a3ef76c46afc35fcb6f50b4ac2 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 25 Mar 2025 12:52:41 -0500 Subject: [PATCH 19/42] Updated table --- experiment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experiment.md b/experiment.md index 639144be..66962ea7 100644 --- a/experiment.md +++ b/experiment.md @@ -15,7 +15,7 @@ We conducted multiple experiments to confirm our hypothesis. The steps were: #### Results Table We tested across three different iModels of varying sizes in the QA region to draw better conclusions. -| Itwin | IModel | V2 Processing Time till interaction in UI (ms) | V2 Changed Elements UI Must Process | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Changed Elements UI Must Process | % diff between V2 and Direct Processing | +| Itwin | IModel | V2 Processing Time till interaction in UI (ms) | V2 Number of Changed Elements Found | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Number of Changed Elements Found | % diff between V2 and Direct Processing | | -- | -- | -- | -- | -- | -- | -- | | 413e666d-1e25-4d8e-9927-12db8995dfd0 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 15909 | 5311 | 13249 | 59368 | 18.24% | | 413e666d-1e25-4d8e-9927-12db8995dfd0 | 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1198084 | 169776 | 204125 | 418309 | 142% | From a5257ebc2f380ba5944b736dc5a225a915935c78 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Tue, 25 Mar 2025 13:21:58 -0500 Subject: [PATCH 20/42] updated table --- experiment.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/experiment.md b/experiment.md index 66962ea7..9597dee7 100644 --- a/experiment.md +++ b/experiment.md @@ -15,11 +15,11 @@ We conducted multiple experiments to confirm our hypothesis. The steps were: #### Results Table We tested across three different iModels of varying sizes in the QA region to draw better conclusions. -| Itwin | IModel | V2 Processing Time till interaction in UI (ms) | V2 Number of Changed Elements Found | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Number of Changed Elements Found | % diff between V2 and Direct Processing | -| -- | -- | -- | -- | -- | -- | -- | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 15909 | 5311 | 13249 | 59368 | 18.24% | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1198084 | 169776 | 204125 | 418309 | 142% | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 394015 | 112951 | 68022 | 772599 | 141% | +| Itwin | IModel | Number Of Changeset Processed (V2 / Direct Comparison) | V2 Processing Time till interaction in UI (ms) | V2 Number of Changed Elements Found | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Number of Changed Elements Found | % diff between V2 and Direct Processing | +| -- | -- | -- | -- | -- | -- | -- | -- | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 13 | 15909 | 5311 | 13249 | 59368 | 18.24% | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1811 | 1198084 | 169776 | 204125 | 418309 | 142% | +| 413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 79 | 394015 | 112951 | 68022 | 772599 | 141% | ### RESULTS SUMMARY The most salient findings of our testing: From f3ac4d32cdd6f91198acd38acfad5cdaa941d929 Mon Sep 17 00:00:00 2001 From: Caleb German Date: Wed, 26 Mar 2025 12:16:41 -0500 Subject: [PATCH 21/42] Got new results --- experiment.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/experiment.md b/experiment.md index 9597dee7..8b74a51a 100644 --- a/experiment.md +++ b/experiment.md @@ -13,20 +13,20 @@ We conducted multiple experiments to confirm our hypothesis. The steps were: 2. Run the experimental Direct Comparison on the same unprocessed job version. Record the time until the user can interact with the job-related information on the UI. #### Results Table -We tested across three different iModels of varying sizes in the QA region to draw better conclusions. +We tested across three different iModels of varying sizes in the DEV region to draw better conclusions. | Itwin | IModel | Number Of Changeset Processed (V2 / Direct Comparison) | V2 Processing Time till interaction in UI (ms) | V2 Number of Changed Elements Found | Direct Comparison Processing Time till interaction in UI (ms) | Direct Comparison Number of Changed Elements Found | % diff between V2 and Direct Processing | | -- | -- | -- | -- | -- | -- | -- | -- | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 13 | 15909 | 5311 | 13249 | 59368 | 18.24% | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | 9576d8b7-3c8f-4857-857d-1e56d2107510 | 1811 | 1198084 | 169776 | 204125 | 418309 | 142% | -| 413e666d-1e25-4d8e-9927-12db8995dfd0 | a9948fe0-022c-4b6c-bd4e-604b632a74a4 | 79 | 394015 | 112951 | 68022 | 772599 | 141% | +| 1036c64d-7fbe-47fd-b03c-4ed7ad7fc829 | c87854bc-1197-4ed9-8d3d-ad9cb5fd1347 | 12 | 22133 | 5342 | 6536 | 28039 | 108.807% | +| 1036c64d-7fbe-47fd-b03c-4ed7ad7fc829 | e657e0d6-fad1-4971-9c22-459bd400534b | 524 | 185067 | 109474 | 71375 | 314907 | 88.6688% | +| 1036c64d-7fbe-47fd-b03c-4ed7ad7fc829 | b8571aeb-dc0b-405f-bf6b-42401af40dd1 | 23 | 109007 | 128803 | 26017 | 22348 | 122.926% | ### RESULTS SUMMARY The most salient findings of our testing: -1. On iModels with a vast amount of data to process, Direct Comparison is about 1.4 times faster than V2 Comparison. -2. On smaller iModels, the percentage difference is slightly better for the Direct Comparison workflow. -3. The UI has more elements to process with the Direct Comparison workflow than with the V2 workflow. +1. On iModels with a vast amount of data to process, Direct Comparison is on average 106.8 % faster than V2 Comparison. +2. The UI has more elements to process with the Direct Comparison workflow than with the V2 workflow. +3. The larger the IModel/changeset range. The v2 processing is faster due to multiple agents used for processing. ### CONCLUSION This experiment proved that the Direct Comparison workflow is viable and may be preferable in some situations for larger iModels due to its processing speed. Direct Comparison may be an efficacious solution to long waiting times if the user does not require the full information provided by property traversal. From 488ad21e4c135c04433f34dc61fdb80ae2ee7b0c Mon Sep 17 00:00:00 2001 From: Diego Pinate Date: Wed, 14 May 2025 09:48:31 -0400 Subject: [PATCH 22/42] Initial pass at domain comparison processors. Allow options to control version of processing to use. Update view creation to use default view with all models. --- .eslintrc.json | 1 + .prettierrc | 7 + .../src/api/VersionCompare.ts | 14 +- .../src/api/VersionCompareManager.ts | 17 +- .../src/api/VersionCompareTiles.ts | 18 +- .../src/api/VersionCompareVisualization.ts | 3 + .../src/widgets/ElementsList.tsx | 3 + .../src/widgets/EnhancedElementsInspector.tsx | 2 + .../common/versionCompareV2WidgetUtils.ts | 42 +-- .../src/ChangeElementsGroupHelper.ts | 144 ---------- .../src/ChangedElementsGroupHelper.ts | 263 ++++++++++++++++++ .../src/OpenSiteComparisonHandler.ts | 189 +++++++++++++ .../src/RPC/ChangesetGroupRPCImpl.ts | 21 +- .../src/RPC/ChangesetGroupRPCInterface.ts | 15 +- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 61 ++-- 15 files changed, 591 insertions(+), 209 deletions(-) create mode 100644 .prettierrc delete mode 100644 packages/test-app-backend/src/ChangeElementsGroupHelper.ts create mode 100644 packages/test-app-backend/src/ChangedElementsGroupHelper.ts create mode 100644 packages/test-app-backend/src/OpenSiteComparisonHandler.ts diff --git a/.eslintrc.json b/.eslintrc.json index 0f556ba9..d3f353bf 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,6 +2,7 @@ "root": true, "extends": [ "eslint:recommended", + "prettier", "plugin:@typescript-eslint/recommended-type-checked" ], "parser": "@typescript-eslint/parser", diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..d50617da --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": false, + "trailingComma": "all", + "printWidth": 150, + "tabWidth": 2, + "useTabs": false +} diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index 4dfb9bad..250b7fbb 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -91,14 +91,22 @@ export interface VersionCompareOptions { getAccessToken?: () => Promise; createVisualizationHandler: (manager: VersionCompareManager) => VisualizationHandler; - changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + + /** + * If provided, this function will be called to process the changeset data instead of using changed elements API + * @param startChangeset Start changeset to compare (oldest) + * @param endChangeset End changeset to compare (newest) + * @param iModelConnection iModel connection to use + * @returns + */ + changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - private static _changesetProcessor: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + private static _changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; public static get changesetProcessor() { return VersionCompare._changesetProcessor; } @@ -141,7 +149,7 @@ export class VersionCompare { public static initialize(options: VersionCompareOptions): void { // Initialize manager VersionCompare._manager = new VersionCompareManager(options); - VersionCompare._changesetProcessor= options.changesetProcessor; + VersionCompare._changesetProcessor = options.changesetProcessor; // get the access token VersionCompare._getAccessToken = options.getAccessToken ?? IModelApp.getAccessToken; diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 4f52ed63..f4a53449 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -77,7 +77,7 @@ export class VersionCompareManager { } public get filterSpatial(): boolean { - return this.options.filterSpatial ?? true; + return this.options.filterSpatial ?? this.options.changesetProcessor === undefined; } public get skipParentChildRelationships(): boolean { @@ -381,7 +381,13 @@ export class VersionCompareManager { return success; } - + /** + * Uses the changeset processor to get the changed elements between two versions. + * @param currentIModel + * @param currentVersion + * @param targetVersion + * @returns + */ public async startDirectComparison( currentIModel: IModelConnection, currentVersion: NamedVersion, @@ -391,6 +397,11 @@ export class VersionCompareManager { this._skipParentChildRelationships = true; const startTime = new Date(); try { + const changesetProcessor = VersionCompare.changesetProcessor; + if (!changesetProcessor) { + throw new Error("Cannot do direct comparison without a changeset processor"); + } + // Setup visualization handler this._initializeVisualizationHandler(); // Raise event that comparison is starting @@ -411,7 +422,7 @@ export class VersionCompareManager { this._currentIModel.iModelId, IModelVersion.asOfChangeSet(changesetId!), ); - const changedElements = [await VersionCompare.changesetProcessor( + const changedElements = [await changesetProcessor( { id: targetVersion.changesetId ?? "", index: targetVersion.changesetIndex ?? 0 }, { id: currentVersion.changesetId ?? "", index: currentVersion.changesetIndex ?? 0, diff --git a/packages/changed-elements-react/src/api/VersionCompareTiles.ts b/packages/changed-elements-react/src/api/VersionCompareTiles.ts index 48d3952c..61c9046e 100644 --- a/packages/changed-elements-react/src/api/VersionCompareTiles.ts +++ b/packages/changed-elements-react/src/api/VersionCompareTiles.ts @@ -388,10 +388,26 @@ export class Provider ? true : undefined, }); + const driven = FeatureAppearance.fromJSON({ + rgb: VersionCompareVisualizationManager.colorModifiedDrivenRgb(), + transparency: this._currentTransparency, + emphasized: + this._options !== undefined && + this._options.emphasized !== undefined && + this._options.emphasized + ? true + : undefined, + }); for (const elem of updatedElems) { // Check if user is emphasizing some elements, and if so, only override said elements if (this._internalAlwaysDrawn.size === 0 || this._internalAlwaysDrawn.has(elem.id)) { - overrides.override({ elementId: elem.id, appearance: elem.indirect ? updatedIndirectly : updated }); + // TODO: Appropriate type of change enum + const appearance = (elem.type & 64) !== 0 + ? driven + : elem.indirect + ? updatedIndirectly + : updated; + overrides.override({ elementId: elem.id, appearance: appearance }); } } } diff --git a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts index 824534f6..d298d44a 100644 --- a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts +++ b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts @@ -44,6 +44,9 @@ export class VersionCompareVisualizationManager { public static colorModifiedRgb() { return new RgbColor(0, 139, 225); } + public static colorModifiedDrivenRgb() { + return new RgbColor(185, 139, 225); + } public static colorModifiedTargetRgb() { return new RgbColor(0, 200, 225); } diff --git a/packages/changed-elements-react/src/widgets/ElementsList.tsx b/packages/changed-elements-react/src/widgets/ElementsList.tsx index 35fcfc58..fab55a12 100644 --- a/packages/changed-elements-react/src/widgets/ElementsList.tsx +++ b/packages/changed-elements-react/src/widgets/ElementsList.tsx @@ -70,6 +70,9 @@ export const ElementsList = forwardRef( // Add selection set of elements that presentation added const allIds = new Set([...ids, ...args.imodel.selectionSet.elements]); + // TODO: Remove log + console.log("Element Selection changed", args.keys.instanceKeys); + const findNodeToFocus = () => { for (const node of props.nodes) { if (allIds.has(node.id)) { diff --git a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx index d7c92f19..1fe27226 100644 --- a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx +++ b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx @@ -1248,6 +1248,8 @@ export class ChangedElementsListComponent extends Component => { const visualizationManager = this.props.manager.visualization?.getSingleViewVisualizationManager(); if (item.extendedData?.isModel && visualizationManager) { + // TODO: Remove log + console.log("Model Selected on List: ", item.extendedData?.modelProps) // Handle zooming to 3d model nodes if (!item.extendedData.is2d) { await visualizationManager.zoomToModel(item.id); diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index 87885e09..c5262722 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -1,13 +1,11 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Bentley Systems, Incorporated. All rights reserved. -* See LICENSE.md in the project root for license terms and full copyright notice. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ import { Logger } from "@itwin/core-bentley"; import type { IModelConnection } from "@itwin/core-frontend"; import { VersionCompare } from "../../../api/VersionCompare.js"; -import type { - ComparisonJobCompleted, ComparisonJobStarted, IComparisonJobClient -} from "../../../clients/IComparisonJobClient.js"; +import type { ComparisonJobCompleted, ComparisonJobStarted, IComparisonJobClient } from "../../../clients/IComparisonJobClient.js"; import type { IModelsClient, NamedVersion } from "../../../clients/iModelsClient.js"; import type { ComparisonJobUpdateType } from "../components/VersionCompareDialogProvider.js"; import type { JobAndNamedVersions, JobStatusAndJobProgress } from "../models/ComparisonJobModels.js"; @@ -41,20 +39,30 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 if (args.runOnJobUpdate) { void args.runOnJobUpdate("ComparisonVisualizationStarting", jobAndNamedVersion); } - // VersionCompare.manager?.startDirectComparison( - // args.iModelConnection, - // args.currentVersion, - // await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient)).catch((e) => { - // Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); - // }); - const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); - VersionCompare.manager?.startComparisonV2( + + const manager = VersionCompare.manager; + if (!manager) { + Logger.logError("VersionCompare", "VersionCompare manager is not initialized"); + return; + } + + try { + const targetVersion = await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient); + if (VersionCompare.changesetProcessor) { + await manager.startDirectComparison(args.iModelConnection, args.currentVersion, targetVersion); + return; + } + + const changedElements = await args.comparisonJobClient.getComparisonJobResult(args.comparisonJob); + await manager.startComparisonV2( args.iModelConnection, args.currentVersion, await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient), - [changedElements.changedElements]).catch((e) => { - Logger.logError(VersionCompare.logCategory, "Could not start version comparison: " + e); - }); + [changedElements.changedElements], + ); + } catch (error) { + Logger.logError("VersionCompare", `Error starting comparison: ${error}`); + } }; const updateTargetVersion = async (iModelConnection: IModelConnection, targetVersion: NamedVersion, iModelsClient: IModelsClient) => { diff --git a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts b/packages/test-app-backend/src/ChangeElementsGroupHelper.ts deleted file mode 100644 index 7ad4012f..00000000 --- a/packages/test-app-backend/src/ChangeElementsGroupHelper.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { AnyDb, BriefcaseDb, BriefcaseManager, ChangedECInstance, ChangeMetaData, ChangesetECAdaptor, IModelDb, IModelHost, PartialECChangeUnifier, RequestNewBriefcaseArg, SqliteChangeOp, SqliteChangesetReader } from "@itwin/core-backend"; -import { DbOpcode, Id64String, OpenMode } from "@itwin/core-bentley"; -import { BentleyCloudRpcManager, BriefcaseIdValue, ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelRpcProps, IModelVersion, TypeOfChange } from "@itwin/core-common"; -import { AuthClient } from './RPC/ChangesetGroupRPCInterface'; - -/** - * Representation of a Changed Element during ChangesetGroup processing. - * - * Including extra {@link meta metadata} from the {@link PartialECChangeUnifier}'s {@link ChangedECInstance instances} - */ -export interface ChangesetGroupChangedElement { - id: Id64String; - classId: Id64String; - modelId: Id64String; - parentId: Id64String; - parentRelClassId: Id64String; - operation: SqliteChangeOp | string; - properties: Set; - type: number; - meta?: ChangeMetaData; // TODO: Only keep what we need. We can remove properties not used during processing to decrease memory usage. -} - -export class ChangesetGroup { - - private static async _downloadChangesetFiles(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string): Promise { - const authClient: AuthClient = { - getAccessToken: function (): Promise { - return Promise.resolve(authToken); - }, - } - IModelHost.authorizationClient = authClient; - try { - const csFileProps = []; - // TODO: should the first changeset in a reverse sync really be included even though its 'initialized branch provenance'? The answer is no, its a bug that needs to be fixed. - const fileProps = await IModelHost.hubAccess.downloadChangesets({ - iModelId: iModelId, - targetDir: BriefcaseManager.getChangeSetsPath(iModelId), - range: { first: startChangesetIdWithIndex.index!, end: endChangesetIdWithIndex.index! }, - accessToken: authToken, - }); - csFileProps.push(...fileProps); - return csFileProps; - } catch (e: unknown) { - return []; - } - } - - public static async runGroupComparison(startChangesetIdWithIndex: ChangesetIdWithIndex,endChangesetIdWithIndex: ChangesetIdWithIndex, iModelId: string, authToken: string, contextId:string,_iModelToken: IModelRpcProps): Promise { - const changesetPaths = await this._downloadChangesetFiles(startChangesetIdWithIndex, endChangesetIdWithIndex, iModelId, authToken); - const db = IModelDb.findByKey(_iModelToken.key); - const changedECInstance = this._getGroupedChangesetChanges(changesetPaths, db) - const changedElements = this.transformToAPIChangedElements(changedECInstance); - return changedElements; - } - - /** - * Get all changes from the range of changesets, grouped together as if they were a single changeset. - * The type of change is automatically resolved by the grouping (e.g., updated + deleted = deleted). - * @param changesetFileProps - * @returns EC Change Instances - */ - private static _getGroupedChangesetChanges(changesetFileProps: Partial[], db: AnyDb): ChangedECInstance[] { - - const ecChangeUnifier = new PartialECChangeUnifier(); - - const changesetFilePaths = changesetFileProps - .filter((csFile) => csFile.pathname !== undefined) - .map((csFile) => csFile.pathname!); - - try { - const csReader = SqliteChangesetReader.openGroup({ - changesetFiles: changesetFilePaths, - db, - disableSchemaCheck: true, - }); - const csAdaptor = new ChangesetECAdaptor(csReader); - while (csAdaptor.step()) { - ecChangeUnifier.appendFrom(csAdaptor); - } - } catch (error: unknown) { - throw Error(`Error appending changeset data: ${error as string}`); - } - - return Array.from(ecChangeUnifier.instances); -} - - /** - * Transforms temporary array of elements to Changed Elements result format - * @param changedElements - * @returns - */ - private static transformToAPIChangedElements(changedElements: ChangedECInstance[]): ChangedElements { - const ce: ChangedElements = ChangesetGroup.createEmptyChangedElements(); - const ceMap: Map = new Map(); - changedElements.forEach((elem) => { - if (!ceMap.has(`${elem.ECInstanceId}:${elem.ECClassId}`)) { - ceMap.set(`${elem.ECInstanceId}:${elem.ECClassId}`, elem); - } - }); - for (const elem of ceMap.values()) { - ce.elements.push(elem.ECInstanceId); - ce.classIds.push(elem.ECClassId ?? ""); - ce.opcodes.push(ChangesetGroup.stringToOpcode(elem.$meta?.op ?? "")); - ce.type.push(TypeOfChange.NoChange); - // TODO: Do we need checksums anymore? If doing parallel processing, maybe... - } - return ce; - } - - /** - * Convert {@link SqliteChangeOp} string to {@link DbOpcode} number. - * - * Throws error if not a valid {@link SqliteChangeOp} string. - */ - private static stringToOpcode (operation: SqliteChangeOp | string): DbOpcode { - switch (operation) { - case "Inserted": - return DbOpcode.Insert; - case "Updated": - return DbOpcode.Update; - case "Deleted": - return DbOpcode.Delete; - default: - throw new Error("Unknown opcode string"); - } - } - - /** - * @returns Empty ChangedElements object - */ - private static createEmptyChangedElements = (): ChangedElements => { - return { - elements: [], - classIds: [], - modelIds: [], - opcodes: [], - type: [], - properties: [], - parentIds: [], - parentClassIds: [], - }; - }; - -} diff --git a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts new file mode 100644 index 00000000..2844ec80 --- /dev/null +++ b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts @@ -0,0 +1,263 @@ +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Bentley Systems, Incorporated. All rights reserved. +* See LICENSE.md in the project root for license terms and full copyright notice. +*--------------------------------------------------------------------------------------------*/ +import { + AnyDb, + BriefcaseDb, + BriefcaseManager, + ChangedECInstance, + ChangeMetaData, + ChangesetECAdaptor, + IModelDb, + IModelHost, + PartialECChangeUnifier, + RequestNewBriefcaseArg, + SqliteChangeOp, + SqliteChangesetReader, +} from "@itwin/core-backend"; +import { DbOpcode, Id64String, OpenMode, OrderedId64Iterable } from "@itwin/core-bentley"; +import { + BentleyCloudRpcManager, + BriefcaseIdValue, + ChangedElements, + ChangesetFileProps, + ChangesetIdWithIndex, + IModelRpcProps, + IModelVersion, + QueryBinder, + TypeOfChange, +} from "@itwin/core-common"; +import { AuthClient } from "./RPC/ChangesetGroupRPCInterface"; +import { ComparisonProcessor } from "./OpenSiteComparisonHandler.js"; + +export enum ExtendedTypeOfChange { + Driven = 64, +} + +/** + * Representation of a Changed Element during ChangesetGroup processing. + * + * Including extra {@link meta metadata} from the {@link PartialECChangeUnifier}'s {@link ChangedECInstance instances} + */ +export interface ChangesetGroupChangedElement { + id: Id64String; + classId: Id64String; + modelId: Id64String; + parentId: Id64String; + parentRelClassId: Id64String; + operation: SqliteChangeOp | string; + properties: Set; + type: number; + meta?: ChangeMetaData; // TODO: Only keep what we need. We can remove properties not used during processing to decrease memory usage. +} + +/** + * Options for processing handlers for domain-specific logic + */ +export interface ProcessingOptions { + processor: ComparisonProcessor; +} + +export class ChangesetGroup { + /** + * + * @param _processingOpts Any special processing options + */ + public constructor(private _processingOpts?: ProcessingOptions) { } + + private async _downloadChangesetFiles( + startChangesetIdWithIndex: ChangesetIdWithIndex, + endChangesetIdWithIndex: ChangesetIdWithIndex, + iModelId: string, + authToken: string, + ): Promise { + const authClient: AuthClient = { + getAccessToken: function (): Promise { + return Promise.resolve(authToken); + }, + }; + IModelHost.authorizationClient = authClient; + try { + const csFileProps = []; + // TODO: should the first changeset in a reverse sync really be included even though its 'initialized branch provenance'? The answer is no, its a bug that needs to be fixed. + const fileProps = await IModelHost.hubAccess.downloadChangesets({ + iModelId: iModelId, + targetDir: BriefcaseManager.getChangeSetsPath(iModelId), + range: { + first: startChangesetIdWithIndex.index!, + end: endChangesetIdWithIndex.index!, + }, + accessToken: authToken, + }); + csFileProps.push(...fileProps); + return csFileProps; + } catch (e: unknown) { + return []; + } + } + + public async runGroupComparison( + iModelToken: IModelRpcProps, + startChangesetIdWithIndex: ChangesetIdWithIndex, + endChangesetIdWithIndex: ChangesetIdWithIndex, + authToken: string, + ): Promise { + const iModelId = iModelToken.iModelId!; + + const changesetPaths = await this._downloadChangesetFiles( + startChangesetIdWithIndex, + endChangesetIdWithIndex, + iModelId, + authToken, + ); + + const db = IModelDb.findByKey(iModelToken.key); + const changedECInstances = await this._getGroupedChangesetChanges( + changesetPaths, + db, + ); + + const changedElements = + await this.transformToAPIChangedElements(db, changedECInstances); + + // Do any extra processing of the changed elements if a processor is provided + if (this._processingOpts?.processor) { + return this._processingOpts.processor.processChangedElements( + db, + changedElements, + ); + } + + return changedElements; + } + + /** + * Get all changes from the range of changesets, grouped together as if they were a single changeset. + * The type of change is automatically resolved by the grouping (e.g., updated + deleted = deleted). + * @param changesetFileProps + * @returns EC Change Instances + */ + private async _getGroupedChangesetChanges( + changesetFileProps: Partial[], + db: IModelDb, + ): Promise { + const ecChangeUnifier = new PartialECChangeUnifier(); + + const changesetFilePaths = changesetFileProps + .filter((csFile) => csFile.pathname !== undefined) + .map((csFile) => csFile.pathname!); + + try { + const csReader = SqliteChangesetReader.openGroup({ + changesetFiles: changesetFilePaths, + db, + disableSchemaCheck: true, + }); + const csAdaptor = new ChangesetECAdaptor(csReader); + while (csAdaptor.step()) { + ecChangeUnifier.appendFrom(csAdaptor); + } + } catch (error: unknown) { + throw Error(`Error appending changeset data: ${error as string}`); + } + + const instances = Array.from(ecChangeUnifier.instances); + + // Use any passed processor to process the instances + const comparisonProcessor = this._processingOpts?.processor; + if (comparisonProcessor) { + await comparisonProcessor.processChangedInstances(db, instances); + } + + return instances; + } + + /** + * Returns a map of the elements to models they belong to + * @param db + * @param changedElements + * @returns + */ + private async _getModelIds(db: IModelDb, instances: ChangedECInstance[]): Promise> { + const query = "SELECT ECInstanceId, Model.Id FROM Bis.Element WHERE InVirtualSet(?, ECInstanceId)"; + const elemToModel = new Map(); + const queryBinder = new QueryBinder(); + + const instanceIds = instances + .filter((elem) => elem.SourceECInstanceId === undefined) + .map((elem) => elem.ECInstanceId); + + queryBinder.bindIdSet(1, OrderedId64Iterable.sortArray(instanceIds)); + for await (const row of db.createQueryReader(query, queryBinder)) { + elemToModel.set(row[0], row[1]); + } + return elemToModel; + } + + /** + * Transforms temporary array of elements to Changed Elements result format + * TODO: This should be done in the frontend, not the backend. + * @param changedElements + * @returns + */ + private async transformToAPIChangedElements( + db: IModelDb, + changedElements: ChangedECInstance[], + ): Promise { + const ce: ChangedElements = this.createEmptyChangedElements(); + const ceMap: Map = new Map< + string, + ChangedECInstance + >(); + changedElements.forEach((elem) => { + if (!ceMap.has(`${elem.ECInstanceId}:${elem.ECClassId}`)) { + ceMap.set(`${elem.ECInstanceId}:${elem.ECClassId}`, elem); + } + }); + // const map = await this._getModelIds(db, changedElements) + for (const elem of ceMap.values()) { + ce.elements.push(elem.ECInstanceId); + ce.classIds.push(elem.ECClassId ?? ""); + ce.opcodes.push(this.stringToOpcode(elem.$meta?.op ?? "")); + ce.type.push(TypeOfChange.NoChange); + // ce.modelIds?.push(map.get(elem.ECInstanceId) ?? "0x1"); + // TODO: Do we need checksums anymore? If doing parallel processing, maybe... + } + return ce; + } + + /** + * Convert {@link SqliteChangeOp} string to {@link DbOpcode} number. + * + * Throws error if not a valid {@link SqliteChangeOp} string. + */ + private stringToOpcode(operation: SqliteChangeOp | string): DbOpcode { + switch (operation) { + case "Inserted": + return DbOpcode.Insert; + case "Updated": + return DbOpcode.Update; + case "Deleted": + return DbOpcode.Delete; + default: + throw new Error("Unknown opcode string"); + } + } + + /** + * @returns Empty ChangedElements object + */ + private createEmptyChangedElements = (): ChangedElements => { + return { + elements: [], + classIds: [], + modelIds: [], + opcodes: [], + type: [], + properties: [], + parentIds: [], + parentClassIds: [], + }; + }; +} diff --git a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts new file mode 100644 index 00000000..09453d12 --- /dev/null +++ b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts @@ -0,0 +1,189 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ +import { ChangedECInstance, Element, ElementDrivesElement, IModelDb, IModelHost } from "@itwin/core-backend"; +import { DbOpcode, Id64String } from "@itwin/core-bentley"; +import { ChangedElements, QueryBinder, TypeOfChange } from "@itwin/core-common"; +import { ExtendedTypeOfChange } from "./ChangedElementsGroupHelperr"; + +export interface InstanceKey { + className: string; + id: string; +} + +export interface RelationshipClassWithDirection { + className: string; + reverse: boolean; +} + +/** + * Query the class id based on a class name + * @param db + * @param className + * @returns + */ +const getClassId = async (db: IModelDb, className: string): Promise => { + const queryBinder = new QueryBinder(); + queryBinder.bindString(1, className); + const queryReader = db.createQueryReader("SELECT ECInstanceId FROM meta.ECClassDef WHERE Name = ?", queryBinder); + const classIds = await queryReader.toArray(); + if (classIds.length === 0) { + throw new Error(`Class ${className} not found`); + } + return classIds[0][0]; +}; + +const getInheritedClassIdsOfMany = async (db: IModelDb, classIds: string[], reverse?: boolean): Promise => { + let query = "SELECT SourceECInstanceId FROM meta.ClassHasAllBaseClasses WHERE InVirtualSet(?, TargetECInstanceId)"; + if (reverse) { + query = "SELECT TargetECInstanceId FROM meta.ClassHasAllBaseClasses WHERE InVirtualSet(?, SourceECInstanceId)"; + } + const queryBinder = new QueryBinder(); + queryBinder.bindIdSet(1, classIds); + const queryReader = db.createQueryReader(query, queryBinder); + const results = await queryReader.toArray(); + return results.map((row) => row[0]); +}; + +/** + * Removes changed elements in the given indices from the changed elements + * @param changedElements + * @param indices + */ +const removeChangedElementsIndices = (changedElements: ChangedElements, indices: number[]) => { + // Remove indices in reverse order to avoid index shifting + const indicesArray = indices.sort((a, b) => b - a); + for (const index of indicesArray) { + changedElements.elements.splice(index, 1); + changedElements.type.splice(index, 1); + changedElements.opcodes.splice(index, 1); + changedElements.classIds.splice(index, 1); + changedElements.parentClassIds?.splice(index, 1); + changedElements.parentIds?.splice(index, 1); + changedElements.modelIds?.splice(index, 1); + changedElements.newChecksums?.splice(index, 1); + changedElements.oldChecksums?.splice(index, 1); + changedElements.properties?.splice(index, 1); + } +}; + +/** + * Returns all inherited classes of a given class recursively + * @param db + * @param className + * @returns + */ +const getInheritedClassIds = async (db: IModelDb, className: string, reverse?: boolean): Promise> => { + const classId = await getClassId(db, className); + const inheritedClassIds = await getInheritedClassIdsOfMany(db, [classId], reverse); + return new Set([classId, ...inheritedClassIds]); +}; + +export interface ComparisonProcessor { + /** Called after all changes are put together with partial unifier */ + processChangedInstances: (db: IModelDb, instances: ChangedECInstance[]) => Promise; + /** Called after the changed instances are transformed in changed elements, this is where you can enrich the version compare input */ + processChangedElements: (db: IModelDb, changedElements: ChangedElements) => Promise; +} + +/** + * Processor for OpenSite specific changes + * 1. Marks elements that are driven by other elements as driven + * 2. Marks those driven elements as Updates instead of Delete + Insert + * 3. Marks the spatial containment of the driven elements as driven based on the OpenSite schema + */ +export class OpenSiteProcessor implements ComparisonProcessor { + private _drivenInstances: ChangedECInstance[] = []; + private _nonDrivenInstances: ChangedECInstance[] = []; + + private getDrivenRelationshipClassNamesForDomain(): RelationshipClassWithDirection[] { + return [ + { className: ElementDrivesElement.className, reverse: false }, + { className: "SpatialOrganizerHoldsSpatialElements", reverse: false }, + ]; + } + + /** + * Gets all relationship class ids that will be used to find driven elements + * @param db + * @returns + */ + private async getDrivenTargetClassIds(db: IModelDb): Promise> { + const drivenClassNames = this.getDrivenRelationshipClassNamesForDomain(); + const relClassIds = new Set(); + for (const relClass of drivenClassNames) { + const currentClassIds = await getInheritedClassIds(db, relClass.className, relClass.reverse); + currentClassIds.forEach((classId) => relClassIds.add(classId)); + } + return relClassIds; + } + + /** + * Finds all relevant driven class elements + * @param db + * @param instances + */ + public async processChangedInstances(db: IModelDb, instances: ChangedECInstance[]): Promise { + const driveMap = new Map(); + const drivenElements = new Set(); + + // Find all class ids that inherit from ElementDrivesElement + const elementDrivesElementClasses = await this.getDrivenTargetClassIds(db); + + // Find driven elements + for (const instance of instances) { + if (instance.ECClassId && elementDrivesElementClasses.has(instance.ECClassId)) { + const source = instance.SourceECInstanceId; + const target = instance.TargetECInstanceId; + drivenElements.add(target); + driveMap.set(source, target); + } + } + + this._drivenInstances = instances.filter((instance) => drivenElements.has(`${instance.ECInstanceId}`)); + this._nonDrivenInstances = instances.filter((instance) => !drivenElements.has(`${instance.ECInstanceId}`)); + } + + /** + * Finds the elements that were driven by changes based on ElementDrivesElement relationship + * @param changedElements + * @returns List of indices of the changed elements that were marked deleted as part of the driving element's update + */ + private markDrivenElementsAsUpdates(changedElements: ChangedElements): number[] { + const drivenInstances = new Set(this._drivenInstances.map((instance) => instance.ECInstanceId)); + + // Indices of the changed elements result to remove for any insert + delete elements that were triggered by element drives element relationship + const indicesToClean = new Set(); + for (let i = 0; i < changedElements.elements.length; i++) { + const elementId = changedElements.elements[i]; + if (drivenInstances.has(elementId)) { + changedElements.type[i] |= ExtendedTypeOfChange.Driven | TypeOfChange.Indirect | TypeOfChange.Geometry | TypeOfChange.Property; + if (changedElements.opcodes[i] === DbOpcode.Insert) { + changedElements.opcodes[i] = DbOpcode.Update; + } else { + indicesToClean.add(i); + } + } + } + + return Array.from(indicesToClean); + } + + /** + * Uses driven cache to find all driven elements and mark them as such + * TODO: This implementation should change to return a non-changed elements-specific representation + * @param db + * @param changedElements + * @returns + */ + public async processChangedElements(db: IModelDb, changedElements: ChangedElements): Promise { + // Indices of the changed elements result to remove for any insert + delete elements that were triggered by element drives element relationship + const deletedDrivenIndices = this.markDrivenElementsAsUpdates(changedElements); + // Clean-up elements that are not driven + // TODO: This should be handled in the frontend, either by affecting the changed elements or adding more handling for the delete/insert cases. + removeChangedElementsIndices(changedElements, deletedDrivenIndices); + + return changedElements; + } +} diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index 430ebc33..b3ed5fb5 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -1,9 +1,24 @@ import { ChangedElements, ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; -import { ChangesetGroup } from "../ChangeElementsGroupHelper"; +import { ChangesetGroup } from "../ChangedElementsGroupHelperr"; +import { OpenSiteProcessor } from "../OpenSiteComparisonHandler"; +/** + * RPC implementation for changes querying + */ export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { - public async getChangesetGroup(_iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { - return ChangesetGroup.runGroupComparison(startChangeset, endChangeset, _iModelToken.iModelId!, authToken, _iModelToken.iTwinId!,_iModelToken); + /** + * Returns changes between two changesets. + * @param iModelToken + * @param startChangeset + * @param endChangeset + * @param authToken + * @returns + */ + public async getChangesetGroup(iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { + // Create instance + const changesetGroup = new ChangesetGroup({ processor: new OpenSiteProcessor()}); + // Run changeset group comparison + return changesetGroup.runGroupComparison(iModelToken, startChangeset, endChangeset, authToken); } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index 06bc251f..9cb4ad0c 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -5,6 +5,17 @@ import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex, Changed export abstract class ChangesetGroupRPCInterface extends RpcInterface { public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface public static interfaceVersion = "0.0.1"; // The API version of the interface - public static getClient() { return RpcManager.getClientForInterface(this); } - public async getChangesetGroup(_iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { return this.forward(arguments); } // this does something cool + public static getClient() { + return RpcManager.getClientForInterface(this); + } + + // TODO: This should not return any ChangedElements specific, perhaps just some new interface with a ChangedInstance array + public async getChangesetGroup( + iModelToken: IModelRpcProps, + startChangeset: ChangesetIdWithIndex, + endChangeset: ChangesetIdWithIndex, + authToken: string, + ): Promise { + return this.forward(arguments); + } } diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index df666f71..b248d9da 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -49,40 +49,30 @@ export function ITwinJsApp(props: ITwinJsAppProps): ReactElement | null { type LoadingState = "opening-imodel" | "opening-viewstate" | "creating-viewstate" | "loaded"; const [loadingState, setLoadingState] = useState("opening-imodel"); const iModel = useIModel(props.iTwinId, props.iModelId, props.authorizationClient); - useEffect( - () => { - if (!iModel) { - return; - } - - let disposed = false; - void (async () => { - await VersionCompare.manager?.stopComparison(); - - setLoadingState("opening-viewstate"); - let viewState = await getStoredViewState(iModel); - if (disposed) { - return; - } - - if (!viewState) { - setLoadingState("creating-viewstate"); - const viewCreator = new ViewCreator3d(iModel); - viewState = await viewCreator.createDefaultView(); - } + useEffect(() => { + if (!iModel) { + return; + } - if (!disposed) { - setLoadingState("loaded"); - UiFramework.setIModelConnection(iModel); - UiFramework.setDefaultViewState(viewState); - UiFramework.frontstages.addFrontstageProvider(new MainFrontstageProvider()); - await UiFramework.frontstages.setActiveFrontstage(MainFrontstageProvider.name); - } - })(); - return () => { disposed = true; }; - }, - [iModel], - ); + let disposed = false; + void (async () => { + await VersionCompare.manager?.stopComparison(); + + setLoadingState("creating-viewstate"); + const viewCreator = new ViewCreator3d(iModel); + const viewState = await viewCreator.createDefaultView(); + if (!disposed) { + setLoadingState("loaded"); + UiFramework.setIModelConnection(iModel); + UiFramework.setDefaultViewState(viewState); + UiFramework.frontstages.addFrontstageProvider(new MainFrontstageProvider()); + await UiFramework.frontstages.setActiveFrontstage(MainFrontstageProvider.name); + } + })(); + return () => { + disposed = true; + }; + }, [iModel]); const iModelsClient = useMemo( () => { @@ -177,12 +167,11 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli ]); - const blah = async (startChangedset: ChangesetIdWithIndex,endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { + const changesetProcessor = async (startChangedset: ChangesetIdWithIndex, endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { const client = ChangesetGroupRPCInterface.getClient(); return client.getChangesetGroup(iModelConnection.getRpcProps(), startChangedset, endChangedset, await authorizationClient.getAccessToken()); } - VersionCompare.initialize({ changedElementsApiBaseUrl: applyUrlPrefix("https://api.bentley.com/changedelements"), getAccessToken: () => authorizationClient.getAccessToken(), @@ -193,7 +182,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli { frontstageIds: [MainFrontstageProvider.name] }, ), featureTracking: featureTrackingTesterFunctions, - changesetProcessor: blah, + changesetProcessor, }); ReducerRegistryInstance.registerReducer("versionCompareState", VersionCompareReducer); From 983db2940d033a227f08753f292fc944f52b8493 Mon Sep 17 00:00:00 2001 From: Diego Pinate Date: Wed, 14 May 2025 16:30:37 -0400 Subject: [PATCH 23/42] Move transformation to changed elements to frontend, and keep the backend and input based on ChangedECInstance --- packages/changed-elements-react/package.json | 1 + .../src/api/VersionCompare.ts | 7 +- .../src/api/VersionCompareManager.ts | 6 +- .../changed-elements-react/src/utils/utils.ts | 84 +++++++++-- .../src/ChangedElementsGroupHelper.ts | 138 +----------------- .../src/OpenSiteComparisonHandler.ts | 78 +++++----- .../src/RPC/ChangesetGroupRPCImpl.ts | 8 +- .../src/RPC/ChangesetGroupRPCInterface.ts | 6 +- 8 files changed, 125 insertions(+), 203 deletions(-) diff --git a/packages/changed-elements-react/package.json b/packages/changed-elements-react/package.json index 27578bdb..792c6c50 100644 --- a/packages/changed-elements-react/package.json +++ b/packages/changed-elements-react/package.json @@ -47,6 +47,7 @@ "@itwin/core-bentley": "^4.10.6", "@itwin/core-common": "^4.10.6", "@itwin/core-frontend": "^4.10.6", + "@itwin/core-backend": "^4.10.6", "@itwin/core-geometry": "^4.10.6", "@itwin/core-react": "^5.0.5", "@itwin/presentation-common": "^4.10.6", diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index 250b7fbb..addf96bc 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -4,8 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { getClassName } from "@itwin/appui-abstract"; import type { AccessToken } from "@itwin/core-bentley"; -import type { ModelProps, ChangedElements, ChangesetIdWithIndex } from "@itwin/core-common"; +import type { ModelProps, ChangesetIdWithIndex } from "@itwin/core-common"; import { IModelApp, IModelConnection, ViewState } from "@itwin/core-frontend"; +import { ChangedECInstance } from "@itwin/core-backend"; import { KeySet } from "@itwin/presentation-common"; import { ChangedElementsApiClient } from "./ChangedElementsApiClient.js"; @@ -99,14 +100,14 @@ export interface VersionCompareOptions { * @param iModelConnection iModel connection to use * @returns */ - changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise<{ changedInstances: ChangedECInstance[] }>; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - private static _changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; + private static _changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise<{ changedInstances: ChangedECInstance[] }>; public static get changesetProcessor() { return VersionCompare._changesetProcessor; } diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index f4a53449..3dbe9323 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -18,6 +18,7 @@ import { ChangesTooltipProvider } from "./ChangesTooltipProvider.js"; import { VersionCompareUtils, VersionCompareVerboseMessages } from "./VerboseMessages.js"; import { VersionCompare, type VersionCompareFeatureTracking, type VersionCompareOptions } from "./VersionCompare.js"; import { VisualizationHandler } from "./VisualizationHandler.js"; +import { transformToAPIChangedElements } from "../utils/utils.js"; const LOGGER_CATEGORY = "Version-Compare"; @@ -422,11 +423,12 @@ export class VersionCompareManager { this._currentIModel.iModelId, IModelVersion.asOfChangeSet(changesetId!), ); - const changedElements = [await changesetProcessor( + const processorResults = await changesetProcessor( { id: targetVersion.changesetId ?? "", index: targetVersion.changesetIndex ?? 0 }, { id: currentVersion.changesetId ?? "", index: currentVersion.changesetIndex ?? 0, - }, currentIModel)]; + }, currentIModel); + const changedElements = [await transformToAPIChangedElements(processorResults.changedInstances)]; if (!targetVersion.changesetId) { throw new Error("Cannot compare to a version if it doesn't contain a changeset Id"); } diff --git a/packages/changed-elements-react/src/utils/utils.ts b/packages/changed-elements-react/src/utils/utils.ts index 6c1fc15c..256b00a2 100644 --- a/packages/changed-elements-react/src/utils/utils.ts +++ b/packages/changed-elements-react/src/utils/utils.ts @@ -1,13 +1,13 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Bentley Systems, Incorporated. All rights reserved. -* See LICENSE.md in the project root for license terms and full copyright notice. -*--------------------------------------------------------------------------------------------*/ - -export async function* splitBeforeEach( - iterable: AsyncIterable, - selector: (value: T) => U, - markers: U[], -): AsyncGenerator { + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ + +import { ChangedECInstance, SqliteChangeOp } from "@itwin/core-backend"; +import { DbOpcode } from "@itwin/core-bentley"; +import { ChangedElements, TypeOfChange } from "@itwin/core-common"; + +export async function* splitBeforeEach(iterable: AsyncIterable, selector: (value: T) => U, markers: U[]): AsyncGenerator { let accumulator: T[] = []; let currentMarkerIndex = 0; for await (const value of iterable) { @@ -23,7 +23,6 @@ export async function* splitBeforeEach( yield accumulator; } - export async function* flatten(iterable: AsyncIterable): AsyncGenerator { for await (const values of iterable) { for (const value of values) { @@ -56,12 +55,7 @@ export async function* skip(iterable: AsyncIterable, n: number): AsyncGene return result.value; } -export async function tryXTimes( - func: () => Promise, - attempts: number, - delayInMilliseconds: number = 5000, - signal?: AbortSignal, -): Promise { +export async function tryXTimes(func: () => Promise, attempts: number, delayInMilliseconds: number = 5000, signal?: AbortSignal): Promise { signal?.throwIfAborted(); let error: unknown = null; @@ -100,3 +94,61 @@ export const arrayToMap = (array: T[], createKey: (entry: T) => U) => { }); return newMap; }; + +/** + * @returns Empty ChangedElements object + */ +const createEmptyChangedElements = (): ChangedElements => { + return { + elements: [], + classIds: [], + modelIds: [], + opcodes: [], + type: [], + properties: [], + parentIds: [], + parentClassIds: [], + }; +}; + +/** + * Convert {@link SqliteChangeOp} string to {@link DbOpcode} number. + * + * Throws error if not a valid {@link SqliteChangeOp} string. + */ +const stringToOpcode = (operation: SqliteChangeOp | string): DbOpcode => { + switch (operation) { + case "Inserted": + return DbOpcode.Insert; + case "Updated": + return DbOpcode.Update; + case "Deleted": + return DbOpcode.Delete; + default: + throw new Error("Unknown opcode string"); + } +}; + +/** + * Transforms ChangedECInstance array to ChangedElements object + * @param changedElements + * @returns + */ +export const transformToAPIChangedElements = (instances: ChangedECInstance[]): ChangedElements => { + const ce: ChangedElements = createEmptyChangedElements(); + const ceMap: Map = new Map(); + instances.forEach((elem) => { + if (!ceMap.has(`${elem.ECInstanceId}:${elem.ECClassId}`)) { + ceMap.set(`${elem.ECInstanceId}:${elem.ECClassId}`, elem); + } + }); + + for (const elem of ceMap.values()) { + ce.elements.push(elem.ECInstanceId); + ce.classIds.push(elem.ECClassId ?? ""); + ce.opcodes.push(stringToOpcode(elem.$meta?.op ?? "")); + ce.type.push(elem.$comparison.type ?? TypeOfChange.NoChange); + } + + return ce; +}; diff --git a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts index 2844ec80..97c1c6c1 100644 --- a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts @@ -3,55 +3,26 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import { - AnyDb, - BriefcaseDb, BriefcaseManager, ChangedECInstance, - ChangeMetaData, ChangesetECAdaptor, IModelDb, IModelHost, PartialECChangeUnifier, - RequestNewBriefcaseArg, - SqliteChangeOp, SqliteChangesetReader, } from "@itwin/core-backend"; -import { DbOpcode, Id64String, OpenMode, OrderedId64Iterable } from "@itwin/core-bentley"; import { - BentleyCloudRpcManager, - BriefcaseIdValue, - ChangedElements, ChangesetFileProps, ChangesetIdWithIndex, IModelRpcProps, - IModelVersion, - QueryBinder, - TypeOfChange, } from "@itwin/core-common"; -import { AuthClient } from "./RPC/ChangesetGroupRPCInterface"; -import { ComparisonProcessor } from "./OpenSiteComparisonHandler.js"; +import { AuthClient, ChangesetGroupResult } from "./RPC/ChangesetGroupRPCInterface"; +import { ComparisonProcessor } from "./OpenSiteComparisonHandler"; export enum ExtendedTypeOfChange { Driven = 64, } -/** - * Representation of a Changed Element during ChangesetGroup processing. - * - * Including extra {@link meta metadata} from the {@link PartialECChangeUnifier}'s {@link ChangedECInstance instances} - */ -export interface ChangesetGroupChangedElement { - id: Id64String; - classId: Id64String; - modelId: Id64String; - parentId: Id64String; - parentRelClassId: Id64String; - operation: SqliteChangeOp | string; - properties: Set; - type: number; - meta?: ChangeMetaData; // TODO: Only keep what we need. We can remove properties not used during processing to decrease memory usage. -} - /** * Options for processing handlers for domain-specific logic */ @@ -102,7 +73,7 @@ export class ChangesetGroup { startChangesetIdWithIndex: ChangesetIdWithIndex, endChangesetIdWithIndex: ChangesetIdWithIndex, authToken: string, - ): Promise { + ): Promise { const iModelId = iModelToken.iModelId!; const changesetPaths = await this._downloadChangesetFiles( @@ -118,18 +89,7 @@ export class ChangesetGroup { db, ); - const changedElements = - await this.transformToAPIChangedElements(db, changedECInstances); - - // Do any extra processing of the changed elements if a processor is provided - if (this._processingOpts?.processor) { - return this._processingOpts.processor.processChangedElements( - db, - changedElements, - ); - } - - return changedElements; + return { changedInstances: changedECInstances }; } /** @@ -167,97 +127,9 @@ export class ChangesetGroup { // Use any passed processor to process the instances const comparisonProcessor = this._processingOpts?.processor; if (comparisonProcessor) { - await comparisonProcessor.processChangedInstances(db, instances); + return await comparisonProcessor.processChangedInstances(db, instances); } return instances; } - - /** - * Returns a map of the elements to models they belong to - * @param db - * @param changedElements - * @returns - */ - private async _getModelIds(db: IModelDb, instances: ChangedECInstance[]): Promise> { - const query = "SELECT ECInstanceId, Model.Id FROM Bis.Element WHERE InVirtualSet(?, ECInstanceId)"; - const elemToModel = new Map(); - const queryBinder = new QueryBinder(); - - const instanceIds = instances - .filter((elem) => elem.SourceECInstanceId === undefined) - .map((elem) => elem.ECInstanceId); - - queryBinder.bindIdSet(1, OrderedId64Iterable.sortArray(instanceIds)); - for await (const row of db.createQueryReader(query, queryBinder)) { - elemToModel.set(row[0], row[1]); - } - return elemToModel; - } - - /** - * Transforms temporary array of elements to Changed Elements result format - * TODO: This should be done in the frontend, not the backend. - * @param changedElements - * @returns - */ - private async transformToAPIChangedElements( - db: IModelDb, - changedElements: ChangedECInstance[], - ): Promise { - const ce: ChangedElements = this.createEmptyChangedElements(); - const ceMap: Map = new Map< - string, - ChangedECInstance - >(); - changedElements.forEach((elem) => { - if (!ceMap.has(`${elem.ECInstanceId}:${elem.ECClassId}`)) { - ceMap.set(`${elem.ECInstanceId}:${elem.ECClassId}`, elem); - } - }); - // const map = await this._getModelIds(db, changedElements) - for (const elem of ceMap.values()) { - ce.elements.push(elem.ECInstanceId); - ce.classIds.push(elem.ECClassId ?? ""); - ce.opcodes.push(this.stringToOpcode(elem.$meta?.op ?? "")); - ce.type.push(TypeOfChange.NoChange); - // ce.modelIds?.push(map.get(elem.ECInstanceId) ?? "0x1"); - // TODO: Do we need checksums anymore? If doing parallel processing, maybe... - } - return ce; - } - - /** - * Convert {@link SqliteChangeOp} string to {@link DbOpcode} number. - * - * Throws error if not a valid {@link SqliteChangeOp} string. - */ - private stringToOpcode(operation: SqliteChangeOp | string): DbOpcode { - switch (operation) { - case "Inserted": - return DbOpcode.Insert; - case "Updated": - return DbOpcode.Update; - case "Deleted": - return DbOpcode.Delete; - default: - throw new Error("Unknown opcode string"); - } - } - - /** - * @returns Empty ChangedElements object - */ - private createEmptyChangedElements = (): ChangedElements => { - return { - elements: [], - classIds: [], - modelIds: [], - opcodes: [], - type: [], - properties: [], - parentIds: [], - parentClassIds: [], - }; - }; } diff --git a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts index 09453d12..16288afa 100644 --- a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts +++ b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts @@ -2,10 +2,10 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -import { ChangedECInstance, Element, ElementDrivesElement, IModelDb, IModelHost } from "@itwin/core-backend"; -import { DbOpcode, Id64String } from "@itwin/core-bentley"; +import { ChangedECInstance, ElementDrivesElement, IModelDb } from "@itwin/core-backend"; +import { Id64String } from "@itwin/core-bentley"; import { ChangedElements, QueryBinder, TypeOfChange } from "@itwin/core-common"; -import { ExtendedTypeOfChange } from "./ChangedElementsGroupHelperr"; +import { ExtendedTypeOfChange } from "./ChangedElementsGroupHelper"; export interface InstanceKey { className: string; @@ -82,9 +82,7 @@ const getInheritedClassIds = async (db: IModelDb, className: string, reverse?: b export interface ComparisonProcessor { /** Called after all changes are put together with partial unifier */ - processChangedInstances: (db: IModelDb, instances: ChangedECInstance[]) => Promise; - /** Called after the changed instances are transformed in changed elements, this is where you can enrich the version compare input */ - processChangedElements: (db: IModelDb, changedElements: ChangedElements) => Promise; + processChangedInstances: (db: IModelDb, instances: ChangedECInstance[]) => Promise; } /** @@ -119,12 +117,29 @@ export class OpenSiteProcessor implements ComparisonProcessor { return relClassIds; } + private extractTypeOfChange(instance: ChangedECInstance): number { + let typeOfChange = 0; + + // TODO: This is incomplete / wrong, fix + for (const prop in instance) { + if (prop.includes("Geometry")) { + typeOfChange |= TypeOfChange.Geometry; + } else if (prop.includes("Origin") || prop.includes("BBox")) { + typeOfChange |= TypeOfChange.Placement; + } else if (!prop.includes("$meta") && !prop.includes("ECClassId") && !prop.includes("ECInstanceId") && !prop.includes("SourceECInstanceId") && !prop.includes("TargetECInstanceId")) { + typeOfChange |= TypeOfChange.Property; + } + } + + return typeOfChange; + } + /** * Finds all relevant driven class elements * @param db * @param instances */ - public async processChangedInstances(db: IModelDb, instances: ChangedECInstance[]): Promise { + public async processChangedInstances(db: IModelDb, instances: ChangedECInstance[]): Promise { const driveMap = new Map(); const drivenElements = new Set(); @@ -143,47 +158,22 @@ export class OpenSiteProcessor implements ComparisonProcessor { this._drivenInstances = instances.filter((instance) => drivenElements.has(`${instance.ECInstanceId}`)); this._nonDrivenInstances = instances.filter((instance) => !drivenElements.has(`${instance.ECInstanceId}`)); - } - /** - * Finds the elements that were driven by changes based on ElementDrivesElement relationship - * @param changedElements - * @returns List of indices of the changed elements that were marked deleted as part of the driving element's update - */ - private markDrivenElementsAsUpdates(changedElements: ChangedElements): number[] { - const drivenInstances = new Set(this._drivenInstances.map((instance) => instance.ECInstanceId)); - - // Indices of the changed elements result to remove for any insert + delete elements that were triggered by element drives element relationship - const indicesToClean = new Set(); - for (let i = 0; i < changedElements.elements.length; i++) { - const elementId = changedElements.elements[i]; - if (drivenInstances.has(elementId)) { - changedElements.type[i] |= ExtendedTypeOfChange.Driven | TypeOfChange.Indirect | TypeOfChange.Geometry | TypeOfChange.Property; - if (changedElements.opcodes[i] === DbOpcode.Insert) { - changedElements.opcodes[i] = DbOpcode.Update; - } else { - indicesToClean.add(i); + // Enrich data with type of change + for (const instance of instances) { + instance["$comparison"] = {}; + if (this._drivenInstances.includes(instance)) { + instance["$comparison"].type |= ExtendedTypeOfChange.Driven | TypeOfChange.Indirect | this.extractTypeOfChange(instance); + if (instance.$meta) { + instance.$meta.op = "Updated"; + } + } else { + if (instance.$meta?.op === "Updated") { + instance["$comparison"].type |= this.extractTypeOfChange(instance); } } } - return Array.from(indicesToClean); - } - - /** - * Uses driven cache to find all driven elements and mark them as such - * TODO: This implementation should change to return a non-changed elements-specific representation - * @param db - * @param changedElements - * @returns - */ - public async processChangedElements(db: IModelDb, changedElements: ChangedElements): Promise { - // Indices of the changed elements result to remove for any insert + delete elements that were triggered by element drives element relationship - const deletedDrivenIndices = this.markDrivenElementsAsUpdates(changedElements); - // Clean-up elements that are not driven - // TODO: This should be handled in the frontend, either by affecting the changed elements or adding more handling for the delete/insert cases. - removeChangedElementsIndices(changedElements, deletedDrivenIndices); - - return changedElements; + return instances; } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts index b3ed5fb5..bda6ff72 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts @@ -1,6 +1,6 @@ -import { ChangedElements, ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; -import { ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; -import { ChangesetGroup } from "../ChangedElementsGroupHelperr"; +import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; +import { ChangesetGroupResult, ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; +import { ChangesetGroup } from "../ChangedElementsGroupHelper"; import { OpenSiteProcessor } from "../OpenSiteComparisonHandler"; /** @@ -15,7 +15,7 @@ export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGrou * @param authToken * @returns */ - public async getChangesetGroup(iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { + public async getChangesetGroup(iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { // Create instance const changesetGroup = new ChangesetGroup({ processor: new OpenSiteProcessor()}); // Run changeset group comparison diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index 9cb4ad0c..88d65c29 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -1,7 +1,11 @@ /* eslint-disable prefer-rest-params */ /* eslint-disable prefer-spread */ +import { ChangedECInstance } from "@itwin/core-backend"; import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex, ChangedElements } from "@itwin/core-common"; +export interface ChangesetGroupResult { + changedInstances: ChangedECInstance[]; +} export abstract class ChangesetGroupRPCInterface extends RpcInterface { public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface public static interfaceVersion = "0.0.1"; // The API version of the interface @@ -15,7 +19,7 @@ export abstract class ChangesetGroupRPCInterface extends RpcInterface { startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string, - ): Promise { + ): Promise { return this.forward(arguments); } } From 9a78eb4d3608ced210253fe47ef07f270582792f Mon Sep 17 00:00:00 2001 From: Diego Pinate Date: Mon, 19 May 2025 16:48:33 -0400 Subject: [PATCH 24/42] Add driven property filter, ability to maintain driven element information for UI purposes. Maintain visibility of driven elements when looking at models that contain changes for those driven elements. --- .../public/locales/en/VersionCompare.json | 3 + .../src/api/ChangedElementsManager.ts | 60 +++++++++++- .../src/api/ChangesTooltipProvider.ts | 11 ++- .../src/api/VersionCompareManager.ts | 5 +- .../changed-elements-react/src/utils/utils.ts | 31 +++++++ .../src/widgets/ChangedElementsInspector.scss | 5 + .../src/widgets/ElementNodeComponent.tsx | 12 +++ .../src/widgets/ElementsList.tsx | 2 +- .../src/widgets/EnhancedElementsInspector.tsx | 20 +++- .../src/ChangedElementsGroupHelper.ts | 8 ++ .../src/OpenSiteComparisonHandler.ts | 55 ++++++----- .../src/RPC/ChangesetGroupRPCInterface.ts | 3 +- packages/test-app-backend/src/TypeOfChange.ts | 93 +++++++++++++++++++ 13 files changed, 278 insertions(+), 30 deletions(-) create mode 100644 packages/test-app-backend/src/TypeOfChange.ts diff --git a/packages/changed-elements-react/public/locales/en/VersionCompare.json b/packages/changed-elements-react/public/locales/en/VersionCompare.json index 7fcc75f7..24a8fff9 100644 --- a/packages/changed-elements-react/public/locales/en/VersionCompare.json +++ b/packages/changed-elements-react/public/locales/en/VersionCompare.json @@ -45,6 +45,7 @@ "searchResults": "Search Results", "removed": "Removed", "modified": "Modified", + "driven": "Driven by another change", "loading": "Loading...", "versions": "Versions", "version": "Version", @@ -150,8 +151,10 @@ "hiddenProperty": "Hidden Properties", "placement": "Placement", "indirect": "Indirect", + "driven": "Driven", "modifiedIndirectly": "Children modified", "modelHasChanges": "Model has changed elements", + "modelHasDrivenChanges": "Model was changed indirectly", "childrenModified": "Child elements were modified", "childrenChanges": "Children changes", "childrenAdded": "Children were added", diff --git a/packages/changed-elements-react/src/api/ChangedElementsManager.ts b/packages/changed-elements-react/src/api/ChangedElementsManager.ts index 448c2f0d..af43c9cb 100644 --- a/packages/changed-elements-react/src/api/ChangedElementsManager.ts +++ b/packages/changed-elements-react/src/api/ChangedElementsManager.ts @@ -6,7 +6,7 @@ import { BeEvent, DbOpcode } from "@itwin/core-bentley"; import { QueryBinder, QueryRowFormat, TypeOfChange, type ChangedElements } from "@itwin/core-common"; import { IModelApp, IModelConnection, ModelState } from "@itwin/core-frontend"; -import { ChangedElementEntryCache, type ChangedElement, type Checksums } from "./ChangedElementEntryCache.js"; +import { ChangedElementEntry, ChangedElementEntryCache, type ChangedElement, type Checksums } from "./ChangedElementEntryCache.js"; import { ChangedElementsChildrenCache } from "./ChangedElementsChildrenCache.js"; import { ChangedElementsLabelsCache } from "./ChangedElementsLabelCache.js"; import { VersionCompareManager } from "./VersionCompareManager.js"; @@ -379,6 +379,16 @@ export class ChangedElementsManager { public modelToParentModelMap: Map | undefined; + public elementToDrivenElement: Map = new Map(); + public setElementToDrivenElementMap(_map: Map) { + this.elementToDrivenElement = _map; + } + + public elementDrivesElement: Map = new Map(); + public setElementDrivesElementMap(_map: Map) { + this.elementDrivesElement = _map; + } + /** * * @returns Set of parent model ids used to parent elements in UI tree @@ -533,6 +543,54 @@ export class ChangedElementsManager { return models; }; + private _getDirectlyDrivenElements = (entries: ChangedElementEntry[]): ChangedElementEntry[] => { + const relevantChangedElements = []; + for (const entry of entries) { + const key = `${entry.id}`; + // const drivenElements = this.elementToDrivenElement.get(key); + const drivenElements = this.elementDrivesElement.get(key); + if (drivenElements) { + // TODO: Seems like everything is using instance id without class id, that seems wrong... + for (const instanceId of drivenElements) { + const changedElement = this._entryCache.changedElementEntries.get(instanceId); + if (changedElement) { + relevantChangedElements.push(changedElement); + } + } + } + } + return relevantChangedElements; + } + + /** + * Returns any elements (recursively) that were changed by direct changes of the given instances with multiple jumps + * @param entries + * @returns + */ + public getDrivenElementsRecursive = (entries: ChangedElementEntry[]): ChangedElementEntry[] => { + const relevantChangedElements = []; + let currentElements = entries; + while (currentElements.length > 0) { + const drivenElements = this._getDirectlyDrivenElements(currentElements); + if (drivenElements.length === 0) { + break; + } + currentElements = drivenElements; + relevantChangedElements.push(...drivenElements); + } + + return relevantChangedElements; + } + + /** + * Returns any elements that were changed by direct changes of the given instances with multiple jumps + * @param entries + * @returns + */ + public getDrivenElements = (entries: ChangedElementEntry[]): ChangedElementEntry[] => { + return this._getDirectlyDrivenElements(entries); + } + /** * Get props for all elements and get changed models. Later on this data will be provided in the Changed Elements Service * @param currentIModel Current IModelConnection diff --git a/packages/changed-elements-react/src/api/ChangesTooltipProvider.ts b/packages/changed-elements-react/src/api/ChangesTooltipProvider.ts index 53148ad4..da533429 100644 --- a/packages/changed-elements-react/src/api/ChangesTooltipProvider.ts +++ b/packages/changed-elements-react/src/api/ChangesTooltipProvider.ts @@ -9,6 +9,7 @@ import { HitDetail, IModelApp, type ToolTipProvider } from "@itwin/core-frontend import type { ChangedElementEntry } from "./ChangedElementEntryCache.js"; import { VersionCompare } from "./VersionCompare.js"; import { VersionCompareManager } from "./VersionCompareManager.js"; +import { ExtendedTypeOfChange } from "../widgets/EnhancedElementsInspector.js"; /** * Appends the proper localized string that matches the given type of change @@ -21,7 +22,7 @@ import { VersionCompareManager } from "./VersionCompareManager.js"; const appendChangeType = ( message: string, type: number, - toc: TypeOfChange, + toc: number, localeStr: string, ) => { if ((type & toc) !== 0) { @@ -67,7 +68,13 @@ const appendChangeTypes = (message: string, typeOfChange: number) => { TypeOfChange.Hidden, "hiddenProperty", ); - return message.substr(0, message.length - 2); + message = appendChangeType( + message, + typeOfChange, + ExtendedTypeOfChange.Driven, + "driven", + ) + return message.substring(0, message.length - 2); }; /** diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 3dbe9323..55d97109 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -18,7 +18,7 @@ import { ChangesTooltipProvider } from "./ChangesTooltipProvider.js"; import { VersionCompareUtils, VersionCompareVerboseMessages } from "./VerboseMessages.js"; import { VersionCompare, type VersionCompareFeatureTracking, type VersionCompareOptions } from "./VersionCompare.js"; import { VisualizationHandler } from "./VisualizationHandler.js"; -import { transformToAPIChangedElements } from "../utils/utils.js"; +import { extractDrivenByInstances, extractDrivesInstances, transformToAPIChangedElements } from "../utils/utils.js"; const LOGGER_CATEGORY = "Version-Compare"; @@ -465,6 +465,9 @@ export class VersionCompareManager { this.filterSpatial, this.loadingProgressEvent, ); + // Add source of changes for driven and domain specific element changes + this.changedElementsManager.setElementToDrivenElementMap(extractDrivenByInstances(processorResults.changedInstances)); + this.changedElementsManager.setElementDrivesElementMap(extractDrivesInstances(processorResults.changedInstances)); const changedElementEntries = this.changedElementsManager.entryCache.getAll(); // We have parent Ids available if any entries contain undefined parent data diff --git a/packages/changed-elements-react/src/utils/utils.ts b/packages/changed-elements-react/src/utils/utils.ts index 256b00a2..41dfac2c 100644 --- a/packages/changed-elements-react/src/utils/utils.ts +++ b/packages/changed-elements-react/src/utils/utils.ts @@ -152,3 +152,34 @@ export const transformToAPIChangedElements = (instances: ChangedECInstance[]): C return ce; }; + +/** + * Returns a map of ECInstanceId:ECClassId of the element that is driven by another element + * e.g. Target -> Source + * @param instances + * @returns + */ +export const extractDrivenByInstances = (instances: ChangedECInstance[]): Map => { + const elementDrivenByElementMap = new Map(); + instances.forEach((elem) => { + if (elem.$comparison?.drivenBy) { + elementDrivenByElementMap.set(`${elem.ECInstanceId}`, elem.$comparison.drivenBy); + } + }); + return elementDrivenByElementMap; +} + +/** + * Returns a map of ECInstanceId:ECClassId of the element that drives another element + * @param instances + * @returns + */ +export const extractDrivesInstances = (instances: ChangedECInstance[]): Map => { + const elementDrivesElementMap = new Map(); + instances.forEach((elem) => { + if (elem.$comparison?.drives) { + elementDrivesElementMap.set(`${elem.ECInstanceId}`, elem.$comparison.drives); + } + }); + return elementDrivesElementMap; +} diff --git a/packages/changed-elements-react/src/widgets/ChangedElementsInspector.scss b/packages/changed-elements-react/src/widgets/ChangedElementsInspector.scss index cf28101c..5408ebe1 100644 --- a/packages/changed-elements-react/src/widgets/ChangedElementsInspector.scss +++ b/packages/changed-elements-react/src/widgets/ChangedElementsInspector.scss @@ -311,6 +311,11 @@ border-color: RGB(0, 139, 225); } + &-driven { + @extend .change-square; + border-color: RGB(185, 139, 225); + } + &-indirect { @extend .change-square; border-color: RGB(0, 139, 225); diff --git a/packages/changed-elements-react/src/widgets/ElementNodeComponent.tsx b/packages/changed-elements-react/src/widgets/ElementNodeComponent.tsx index a7a60282..812ee30b 100644 --- a/packages/changed-elements-react/src/widgets/ElementNodeComponent.tsx +++ b/packages/changed-elements-react/src/widgets/ElementNodeComponent.tsx @@ -14,6 +14,7 @@ import { getTypeOfChangeTooltip } from "../api/ChangesTooltipProvider.js"; import { VersionCompare } from "../api/VersionCompare.js"; import "./ChangedElementsInspector.scss"; +import { ExtendedTypeOfChange } from "./EnhancedElementsInspector.js"; export interface ElementListNodeProps { id: string; @@ -69,6 +70,10 @@ export class ElementNodeComponent extends React.Component return ""; } + if (((this.props.type ?? 0) & ExtendedTypeOfChange.Driven) !== 0) { + return "change-square-driven"; + } + switch (this.props.opcode) { case DbOpcode.Insert: return "change-square-added"; @@ -96,6 +101,9 @@ export class ElementNodeComponent extends React.Component /** Tooltip for change square */ private _getChangeSquareTooltip = () => { if (this.props.isModel) { + if (((this.props.type ?? 0) & ExtendedTypeOfChange.Driven) == this.props.type) { + return IModelApp.localization.getLocalizedString("VersionCompare:typeOfChange.modelHasDrivenChanges"); + } return IModelApp.localization.getLocalizedString("VersionCompare:typeOfChange.modelHasChanges"); } @@ -113,6 +121,10 @@ export class ElementNodeComponent extends React.Component return ""; } + if (((this.props.type ?? 0) & ExtendedTypeOfChange.Driven) !== 0) { + return IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.driven"); + } + switch (this.props.opcode) { case DbOpcode.Insert: return IModelApp.localization.getLocalizedString("VersionCompare:typeOfChange.added"); diff --git a/packages/changed-elements-react/src/widgets/ElementsList.tsx b/packages/changed-elements-react/src/widgets/ElementsList.tsx index fab55a12..b85aa8b6 100644 --- a/packages/changed-elements-react/src/widgets/ElementsList.tsx +++ b/packages/changed-elements-react/src/widgets/ElementsList.tsx @@ -141,7 +141,7 @@ export const ElementsList = forwardRef( label={item.label} isModel={item.extendedData?.isModel ?? false} opcode={item.extendedData?.element?.opcode} - type={item.extendedData?.element?.type ?? 0} + type={item.extendedData?.element?.type ?? item.extendedData?.modelChanges?.typeOfChange ?? 0} wantTypeTooltip={true} hasChildren={(0, props.hasChildren)(item)} loadingChildren={item.extendedData?.loadingChildren ?? false} diff --git a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx index 1fe27226..1461c747 100644 --- a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx +++ b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx @@ -31,6 +31,11 @@ import { ElementsList } from "./ElementsList.js"; import "./ChangedElementsInspector.scss"; import { TextEx } from "../NamedVersionSelector/TextEx.js"; +// Need a copy for the frontend until we have a common package +export enum ExtendedTypeOfChange { + Driven = 64, +} + export interface ChangedElementsInspectorProps { manager: VersionCompareManager; onFilterChange?: (options: FilterOptions) => void; @@ -138,7 +143,8 @@ const typeOfChangeAll = (): number => { TypeOfChange.Hidden | TypeOfChange.Indirect | TypeOfChange.Placement | - TypeOfChange.Property + TypeOfChange.Property | + ExtendedTypeOfChange.Driven ); }; @@ -353,6 +359,7 @@ function ChangeTypeFilterHeader(props: FilterHeaderProps): ReactElement { {makeContextMenuItem("geometry", TypeOfChange.Geometry)} {makeContextMenuItem("placement", TypeOfChange.Placement)} {makeContextMenuItem("property", TypeOfChange.Property | TypeOfChange.Indirect)} + {makeContextMenuItem("driven", ExtendedTypeOfChange.Driven)} {makeContextMenuItem("hiddenProperty", TypeOfChange.Hidden)} {props.wantPropertyFiltering &&
} { @@ -799,8 +806,15 @@ export class ChangedElementsListComponent extends Component this._filterEntryWithGivenOptions(entry, options) : this._filterEntryWithOptions; const modelIds = new Set(nodes.map((value) => value.id)); + const allEntries = this.props.dataProvider.getEntriesWithModelIds(modelIds, (_) => true); const entries = this.props.dataProvider.getEntriesWithModelIds(modelIds, filter); const visualizationManager = this.props.manager.visualization?.getSingleViewVisualizationManager(); + + // TODO: Driven elements should be treated appropriately for special highlighting + const drivenElements = this.props.manager.changedElementsManager.getDrivenElements(allEntries); + const filteredDrivenElements = drivenElements.filter(filter); + entries.push(...filteredDrivenElements); + await visualizationManager?.setFocusedElements(entries); }; @@ -834,6 +848,10 @@ export class ChangedElementsListComponent extends Component this._filterEntryWithGivenOptions(entry, options) : this._filterEntryWithOptions; + // TODO: Driven elements should be treated appropriately for special highlighting + const drivenElements = this.props.manager.changedElementsManager.getDrivenElements(entries); + entries.push(...drivenElements); + // Visualize the filtered elements and focus const visualizationManager = this.props.manager.visualization?.getSingleViewVisualizationManager(); await visualizationManager?.setFocusedElements(entries.filter(filterFunc)); diff --git a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts index 97c1c6c1..9f5db52b 100644 --- a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangedElementsGroupHelper.ts @@ -19,6 +19,7 @@ import { import { AuthClient, ChangesetGroupResult } from "./RPC/ChangesetGroupRPCInterface"; import { ComparisonProcessor } from "./OpenSiteComparisonHandler"; +// Need a copy for the frontend until we have a common package export enum ExtendedTypeOfChange { Driven = 64, } @@ -124,6 +125,13 @@ export class ChangesetGroup { const instances = Array.from(ecChangeUnifier.instances); + // Remove geometry streams, no need to return them + for (const instance of instances) { + if (instance["GeometryStream"]) { + instance["GeometryStream"] = "Changed"; + } + } + // Use any passed processor to process the instances const comparisonProcessor = this._processingOpts?.processor; if (comparisonProcessor) { diff --git a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts index 16288afa..6f6fdf5c 100644 --- a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts +++ b/packages/test-app-backend/src/OpenSiteComparisonHandler.ts @@ -6,6 +6,7 @@ import { ChangedECInstance, ElementDrivesElement, IModelDb } from "@itwin/core-b import { Id64String } from "@itwin/core-bentley"; import { ChangedElements, QueryBinder, TypeOfChange } from "@itwin/core-common"; import { ExtendedTypeOfChange } from "./ChangedElementsGroupHelper"; +import { getTypeOfChange } from "./TypeOfChange"; export interface InstanceKey { className: string; @@ -117,21 +118,9 @@ export class OpenSiteProcessor implements ComparisonProcessor { return relClassIds; } + /** TODO: Should become a separate utility function / not dependent on this "comparison processor" */ private extractTypeOfChange(instance: ChangedECInstance): number { - let typeOfChange = 0; - - // TODO: This is incomplete / wrong, fix - for (const prop in instance) { - if (prop.includes("Geometry")) { - typeOfChange |= TypeOfChange.Geometry; - } else if (prop.includes("Origin") || prop.includes("BBox")) { - typeOfChange |= TypeOfChange.Placement; - } else if (!prop.includes("$meta") && !prop.includes("ECClassId") && !prop.includes("ECInstanceId") && !prop.includes("SourceECInstanceId") && !prop.includes("TargetECInstanceId")) { - typeOfChange |= TypeOfChange.Property; - } - } - - return typeOfChange; + return getTypeOfChange(Object.keys(instance)); } /** @@ -140,7 +129,8 @@ export class OpenSiteProcessor implements ComparisonProcessor { * @param instances */ public async processChangedInstances(db: IModelDb, instances: ChangedECInstance[]): Promise { - const driveMap = new Map(); + const driveForwardMap = new Map(); + const driveBackwardMap = new Map(); const drivenElements = new Set(); // Find all class ids that inherit from ElementDrivesElement @@ -151,8 +141,24 @@ export class OpenSiteProcessor implements ComparisonProcessor { if (instance.ECClassId && elementDrivesElementClasses.has(instance.ECClassId)) { const source = instance.SourceECInstanceId; const target = instance.TargetECInstanceId; + // TODO: Do we care about class ids here + // const sourceClassId = instance.SourceECClassId; + // const targetClassId = instance.TargetECClassId; drivenElements.add(target); - driveMap.set(source, target); + const driveBackwardEntry = driveBackwardMap.get(`${target}`); + if (driveBackwardEntry) { + driveBackwardEntry.push(`${source}`); + } else { + driveBackwardMap.set(`${target}`, [`${source}`]); + } + + const driveForwardEntry = driveForwardMap.get(`${source}`); + if (driveForwardEntry) { + driveForwardEntry.push(`${target}`); + } + else { + driveForwardMap.set(`${source}`, [`${target}`]); + } } } @@ -162,15 +168,20 @@ export class OpenSiteProcessor implements ComparisonProcessor { // Enrich data with type of change for (const instance of instances) { instance["$comparison"] = {}; - if (this._drivenInstances.includes(instance)) { - instance["$comparison"].type |= ExtendedTypeOfChange.Driven | TypeOfChange.Indirect | this.extractTypeOfChange(instance); + if (instance.$meta?.op === "Updated") { + instance["$comparison"].type |= this.extractTypeOfChange(instance); + } + const backwards = driveBackwardMap.get(`${instance.ECInstanceId}`); + if (backwards) { + instance["$comparison"].type = ExtendedTypeOfChange.Driven; + instance["$comparison"].drivenBy = backwards; if (instance.$meta) { instance.$meta.op = "Updated"; } - } else { - if (instance.$meta?.op === "Updated") { - instance["$comparison"].type |= this.extractTypeOfChange(instance); - } + } + const forwards = driveForwardMap.get(`${instance.ECInstanceId}`); + if (forwards) { + instance["$comparison"].drives = forwards; } } diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts index 88d65c29..0dd6492b 100644 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts @@ -1,7 +1,7 @@ /* eslint-disable prefer-rest-params */ /* eslint-disable prefer-spread */ import { ChangedECInstance } from "@itwin/core-backend"; -import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex, ChangedElements } from "@itwin/core-common"; +import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex } from "@itwin/core-common"; export interface ChangesetGroupResult { changedInstances: ChangedECInstance[]; @@ -13,7 +13,6 @@ export abstract class ChangesetGroupRPCInterface extends RpcInterface { return RpcManager.getClientForInterface(this); } - // TODO: This should not return any ChangedElements specific, perhaps just some new interface with a ChangedInstance array public async getChangesetGroup( iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, diff --git a/packages/test-app-backend/src/TypeOfChange.ts b/packages/test-app-backend/src/TypeOfChange.ts new file mode 100644 index 00000000..197649d2 --- /dev/null +++ b/packages/test-app-backend/src/TypeOfChange.ts @@ -0,0 +1,93 @@ +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Bentley Systems, Incorporated. All rights reserved. +* See LICENSE.md in the project root for license terms and full copyright notice. +*--------------------------------------------------------------------------------------------*/ +import { TypeOfChange } from "@itwin/core-common"; + +const geometricProperties: string[] = ["Category", "InSpatialIndex", "GeometryStream"]; +const placementProperties: string[] = ["Origin", "Yaw", "Pitch", "Roll", "BBoxLow", "BBoxHigh"]; + +// Properties that should always be hidden, but may not appear in query for hidden properties +const alwaysHiddenProperties: string[] = []; + +// Don't consider these as changed properties for the change summary or type of change +const ignoredProperties: string[] = [ + "$meta", + "ECClassId", + "ECInstanceId", + "LastMod", + "Element", + "Model", + "Origin", + ...geometricProperties, + ...placementProperties, +]; + +// Properties which should show up in the change summary, but that we don't want to show every sub-level change that was made. +// E.g., If "MyValue" should appear in the final output, but "MyValue.X", "MyValue.Y", etc. should not. +const propertiesWithIgnoredSubproperties: string[] = ["Geometry"]; + +export const isContainedInArray = (value: string, array: string[]) => { + return array.find((arrValue) => arrValue === value) !== undefined; +}; + +const isGeometricProperty = (prop: string): boolean => { + return isContainedInArray(prop, geometricProperties); +}; + +const isPlacementProperty = (prop: string): boolean => { + return isContainedInArray(prop, placementProperties); +}; + +export const isAlwaysHiddenProperty = (prop: string): boolean => { + return isContainedInArray(prop, alwaysHiddenProperties); +}; + +const isParentProperty = (prop: string): boolean => { + return prop === "Parent"; +}; + +const isModelProperty = (prop: string): boolean => { + return prop === "Model"; +}; + +export const isIgnoredProperty = (prop: string) => { + return isContainedInArray(prop, ignoredProperties); +}; + +export const isPropertyWithIgnoredSubproperties = (prop: string) => { + return isContainedInArray(prop, propertiesWithIgnoredSubproperties); +}; + +/** + * Uses changed properties found to determine type of change. + * + * Relies on the PropertyPathTraverser to determine if a property is hidden. + * + * TODO: Consider if method should be moved to PropertyPathTraverser or otherwise refactored to exclude the need for PropertyPathTraverser. + */ +// eslint-disable-next-line @typescript-eslint/naming-convention +export const getTypeOfChange = (properties: string[]) => { + let type = 0; + // TODO: Make faster + for (const prop of properties) { + if (isModelProperty(prop)) { + // TODO: handle model id + // type |= ChangeType.Mask_Model; + } else if (isGeometricProperty(prop)) { + type |= TypeOfChange.Geometry; + } else if (isPlacementProperty(prop)) { + type |= TypeOfChange.Placement; + } else if (isParentProperty(prop)) { + type |= TypeOfChange.Parent; + // TODO: Relocate hidden property check so that PropertyPathTraverser doesn't need to be passed in + } else if (!isIgnoredProperty(prop)) { + if (isAlwaysHiddenProperty(prop)) { + type |= TypeOfChange.Hidden; + } else { + type |= TypeOfChange.Property; + } + } + } + return type; +}; From 59e47d1b78343aa5c1604b4dc773f1a64a677d6f Mon Sep 17 00:00:00 2001 From: Diego Pinate Date: Fri, 23 May 2025 16:13:46 -0400 Subject: [PATCH 25/42] Initial handling for selecting driven elements from widget --- .../src/api/VersionCompareVisualization.ts | 42 ++++++++++++++++ .../src/widgets/EnhancedElementsInspector.tsx | 50 +++++++++++++++++-- .../src/OpenSiteComparisonHandler.ts | 2 + 3 files changed, 90 insertions(+), 4 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts index d298d44a..7d7cd8d7 100644 --- a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts +++ b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts @@ -599,6 +599,48 @@ export class VersionCompareVisualizationManager { viewport.synchWithView(); }; + /** + * Zooms to multiple entries + * @param iModel + * @param entries + * @returns + */ + private _zoomToElements = async (iModel: IModelConnection, elementIds: Id64String[]) => { + const viewport = IModelApp.viewManager.selectedView; + if (viewport === undefined) { + return; + } + + // Get the 3d view state to adjust for + const viewState: ViewState3d = viewport.view as ViewState3d; + // Find the range of the combined elements + const range = await this._findElementsVolume(iModel, viewState, elementIds); + if (range === undefined) { + return; + } + // Do zoom operation with a 10% margin + viewport.view.lookAtVolume(range, viewport.viewRect.aspect, { + marginPercent: new MarginPercent(0.1, 0.1, 0.1, 0.1), + }); + viewport.synchWithView(); + }; + + /** + * Zooms to the merged volume of many elements + * @param elementIds + */ + public zoomToElements = async (elementIds: Id64String[]) => { + const currentIModel = this._viewport.iModel; + // TODO: Appropriately zoom to target and current + const targetIModel = this._targetIModel; + await this._zoomToElements( + currentIModel, + elementIds + ); + + VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.changedElementsTreeElementClicked); + } + /** Handles zooming to element and selecting elements */ public zoomToEntry = async (entry: ChangedElementEntry) => { const currentIModel = this._viewport.iModel; diff --git a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx index 1461c747..5b46dcc3 100644 --- a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx +++ b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx @@ -1236,11 +1236,21 @@ export class ChangedElementsListComponent extends Component { + iModel.selectionSet.emptyAll(); + iModel.selectionSet.add(entry.id); Presentation.selection .replaceSelectionWithScope("ChangedElementsWidget", iModel, entry.id, "element") .catch(() => { }); }; + private _selectEntries = (iModel: IModelConnection, entries: ChangedElementEntry[]): void => { + iModel.selectionSet.emptyAll(); + iModel.selectionSet.add(entries.map(entry => entry.id)); + Presentation.selection + .replaceSelectionWithScope("ChangedElementsWidget", iModel, entries.map(entry => entry.id), "assembly") + .catch(() => { }); + }; + /** * Selects the given node element in both iModels if possible. * @param item Tree Node Item to select element for. @@ -1259,6 +1269,41 @@ export class ChangedElementsListComponent extends Component { + const currentIModel = this.props.manager.currentIModel; + const element: ChangedElementEntry | undefined = item.extendedData?.element; + if (element === undefined || currentIModel === undefined) { + return; + } + + const drivenEntries = this.props.manager.changedElementsManager.entryCache.getEntries(new Set([...drivenElementIds, element.id])); + this._selectEntries(currentIModel, drivenEntries); + }; + + /** + * Handles selection logic for a changed element tree node + * @param item + */ + private _handleElementSelection = async (item: TreeNodeItem) => { + const instanceId = item.id; + const drivenElements = this.props.manager.changedElementsManager.elementDrivesElement.get(instanceId); + const visualizationManager = this.props.manager.visualization?.getSingleViewVisualizationManager(); + if (drivenElements !== undefined && drivenElements.length > 0) { + // Handle selection and zoom + this._handleDrivenElementsSelection(item, drivenElements); + visualizationManager?.zoomToElements(drivenElements) + } else { + // Handle zooming to specific element + this._selectNode(item); + await visualizationManager?.zoomToEntry(item.extendedData?.element); + } + }; + /** * On click, select the element and zoom to it. * @param item Tree Node that was clicked. @@ -1273,10 +1318,7 @@ export class ChangedElementsListComponent extends Component Date: Mon, 14 Jul 2025 16:08:53 -0400 Subject: [PATCH 26/42] Generalize Rpc interface naming and helpers. Track relationships that caused driven changes. Make relationships definable by frontend application instead of hard-coding it in the backend. --- .../src/api/VersionCompare.ts | 25 ++- .../src/api/VersionCompareManager.ts | 6 +- .../src/api/VersionCompareVisualization.ts | 2 +- .../changed-elements-react/src/utils/utils.ts | 9 +- .../common/versionCompareV2WidgetUtils.ts | 2 +- ...Helper.ts => ChangedInstancesProcessor.ts} | 72 ++++---- ...omparisonHandler.ts => ChangesEnricher.ts} | 167 ++++++++++-------- .../src/RPC/ChangesRpcImpl.ts | 25 +++ .../src/RPC/ChangesRpcInterface.ts | 40 +++++ .../src/RPC/ChangesetGroupRPCImpl.ts | 24 --- .../src/RPC/ChangesetGroupRPCInterface.ts | 24 --- packages/test-app-backend/src/main.ts | 8 +- .../src/App/ITwinJsApp/ITwinJsApp.tsx | 17 +- 13 files changed, 241 insertions(+), 180 deletions(-) rename packages/test-app-backend/src/{ChangedElementsGroupHelper.ts => ChangedInstancesProcessor.ts} (83%) rename packages/test-app-backend/src/{OpenSiteComparisonHandler.ts => ChangesEnricher.ts} (52%) create mode 100644 packages/test-app-backend/src/RPC/ChangesRpcImpl.ts create mode 100644 packages/test-app-backend/src/RPC/ChangesRpcInterface.ts delete mode 100644 packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts delete mode 100644 packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts diff --git a/packages/changed-elements-react/src/api/VersionCompare.ts b/packages/changed-elements-react/src/api/VersionCompare.ts index addf96bc..3ef1fe5d 100644 --- a/packages/changed-elements-react/src/api/VersionCompare.ts +++ b/packages/changed-elements-react/src/api/VersionCompare.ts @@ -37,6 +37,13 @@ interface IVersionCompareClientFactory { createChangedElementsClient: () => ChangedElementsClientBase; } +/** + * Expected output of a changeset processor function. + */ +export interface ChangesProviderOutput { + changedInstances: ChangedECInstance[]; +} + export interface VersionCompareOptions { /** * Base URL for iTwin Platform Changed Elements API. @@ -94,22 +101,23 @@ export interface VersionCompareOptions { createVisualizationHandler: (manager: VersionCompareManager) => VisualizationHandler; /** - * If provided, this function will be called to process the changeset data instead of using changed elements API + * If provided, this function will be called to obtain the changeset data instead of using changed elements API + * This allows a consumer application to use its own changeset processing logic. * @param startChangeset Start changeset to compare (oldest) * @param endChangeset End changeset to compare (newest) * @param iModelConnection iModel connection to use - * @returns + * @returns a promise that should resolve to an object containing an array of ChangedECInstance */ - changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise<{ changedInstances: ChangedECInstance[] }>; + changesProvider?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise; } /** Maintains all version compare related data for the applications. */ export class VersionCompare { private static _manager: VersionCompareManager | undefined; private static _getAccessToken?: () => Promise; - private static _changesetProcessor?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise<{ changedInstances: ChangedECInstance[] }>; - public static get changesetProcessor() { - return VersionCompare._changesetProcessor; + private static _changesProvider?: (startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => Promise<{ changedInstances: ChangedECInstance[] }>; + public static get changesProvider() { + return VersionCompare._changesProvider; } public static get logCategory(): string { return "VersionCompare"; @@ -150,8 +158,9 @@ export class VersionCompare { public static initialize(options: VersionCompareOptions): void { // Initialize manager VersionCompare._manager = new VersionCompareManager(options); - VersionCompare._changesetProcessor = options.changesetProcessor; - // get the access token + + // Store options + VersionCompare._changesProvider = options.changesProvider; VersionCompare._getAccessToken = options.getAccessToken ?? IModelApp.getAccessToken; if (options.changedElementsApiBaseUrl) { diff --git a/packages/changed-elements-react/src/api/VersionCompareManager.ts b/packages/changed-elements-react/src/api/VersionCompareManager.ts index 55d97109..dbb227c5 100644 --- a/packages/changed-elements-react/src/api/VersionCompareManager.ts +++ b/packages/changed-elements-react/src/api/VersionCompareManager.ts @@ -78,7 +78,7 @@ export class VersionCompareManager { } public get filterSpatial(): boolean { - return this.options.filterSpatial ?? this.options.changesetProcessor === undefined; + return this.options.filterSpatial ?? this.options.changesProvider === undefined; } public get skipParentChildRelationships(): boolean { @@ -398,7 +398,7 @@ export class VersionCompareManager { this._skipParentChildRelationships = true; const startTime = new Date(); try { - const changesetProcessor = VersionCompare.changesetProcessor; + const changesetProcessor = VersionCompare.changesProvider; if (!changesetProcessor) { throw new Error("Cannot do direct comparison without a changeset processor"); } @@ -483,7 +483,7 @@ export class VersionCompareManager { this.loadingProgressEvent.raiseEvent( IModelApp.localization.getLocalizedString("VersionCompare:versionCompare.msg_findingAssemblies"), ); - await this.changedElementsManager.entryCache.initialLoad(changedElementEntries.map((entry) => entry.id), true); + await this.changedElementsManager.entryCache.initialLoad(changedElementEntries.map((entry) => entry.id)); //, true); // Reset the select tool to allow external iModels to be located await IModelApp.toolAdmin.startDefaultTool(); diff --git a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts index 7d7cd8d7..bec906bd 100644 --- a/packages/changed-elements-react/src/api/VersionCompareVisualization.ts +++ b/packages/changed-elements-react/src/api/VersionCompareVisualization.ts @@ -632,7 +632,7 @@ export class VersionCompareVisualizationManager { public zoomToElements = async (elementIds: Id64String[]) => { const currentIModel = this._viewport.iModel; // TODO: Appropriately zoom to target and current - const targetIModel = this._targetIModel; + // const targetIModel = this._targetIModel; await this._zoomToElements( currentIModel, elementIds diff --git a/packages/changed-elements-react/src/utils/utils.ts b/packages/changed-elements-react/src/utils/utils.ts index 41dfac2c..2ebe47bc 100644 --- a/packages/changed-elements-react/src/utils/utils.ts +++ b/packages/changed-elements-react/src/utils/utils.ts @@ -131,6 +131,7 @@ const stringToOpcode = (operation: SqliteChangeOp | string): DbOpcode => { /** * Transforms ChangedECInstance array to ChangedElements object + * TODO: This needs to be refactored and potentially passed by the consuming application * @param changedElements * @returns */ @@ -156,6 +157,7 @@ export const transformToAPIChangedElements = (instances: ChangedECInstance[]): C /** * Returns a map of ECInstanceId:ECClassId of the element that is driven by another element * e.g. Target -> Source + * TODO: This needs to be refactored and passed by the consuming application * @param instances * @returns */ @@ -163,7 +165,8 @@ export const extractDrivenByInstances = (instances: ChangedECInstance[]): Map(); instances.forEach((elem) => { if (elem.$comparison?.drivenBy) { - elementDrivenByElementMap.set(`${elem.ECInstanceId}`, elem.$comparison.drivenBy); + const ids = elem.$comparison.drivenBy.map((idWithRelationship: any) => idWithRelationship.id); + elementDrivenByElementMap.set(`${elem.ECInstanceId}`, ids); } }); return elementDrivenByElementMap; @@ -171,6 +174,7 @@ export const extractDrivenByInstances = (instances: ChangedECInstance[]): Map(); instances.forEach((elem) => { if (elem.$comparison?.drives) { - elementDrivesElementMap.set(`${elem.ECInstanceId}`, elem.$comparison.drives); + const ids = elem.$comparison.drives.map((idWithRelationship: any) => idWithRelationship.id); + elementDrivesElementMap.set(`${elem.ECInstanceId}`, ids); } }); return elementDrivesElementMap; diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts index c5262722..15812772 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/common/versionCompareV2WidgetUtils.ts @@ -48,7 +48,7 @@ export const runManagerStartComparisonV2 = async (args: ManagerStartComparisonV2 try { const targetVersion = await updateTargetVersion(args.iModelConnection, args.targetVersion, args.iModelsClient); - if (VersionCompare.changesetProcessor) { + if (VersionCompare.changesProvider) { await manager.startDirectComparison(args.iModelConnection, args.currentVersion, targetVersion); return; } diff --git a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts b/packages/test-app-backend/src/ChangedInstancesProcessor.ts similarity index 83% rename from packages/test-app-backend/src/ChangedElementsGroupHelper.ts rename to packages/test-app-backend/src/ChangedInstancesProcessor.ts index 9f5db52b..0886a926 100644 --- a/packages/test-app-backend/src/ChangedElementsGroupHelper.ts +++ b/packages/test-app-backend/src/ChangedInstancesProcessor.ts @@ -12,14 +12,16 @@ import { SqliteChangesetReader, } from "@itwin/core-backend"; import { + AuthorizationClient, ChangesetFileProps, ChangesetIdWithIndex, IModelRpcProps, } from "@itwin/core-common"; -import { AuthClient, ChangesetGroupResult } from "./RPC/ChangesetGroupRPCInterface"; -import { ComparisonProcessor } from "./OpenSiteComparisonHandler"; +import { ChangedInstancesResult } from "./RPC/ChangesRpcInterface"; +import { ChangesEnricher } from "./ChangesEnricher"; // Need a copy for the frontend until we have a common package +// TODO: Eliminate the need for using type of change for this functionality in favor of something else export enum ExtendedTypeOfChange { Driven = 64, } @@ -28,10 +30,10 @@ export enum ExtendedTypeOfChange { * Options for processing handlers for domain-specific logic */ export interface ProcessingOptions { - processor: ComparisonProcessor; + enricher: ChangesEnricher; } -export class ChangesetGroup { +export class ChangedInstancesProcessor { /** * * @param _processingOpts Any special processing options @@ -44,7 +46,7 @@ export class ChangesetGroup { iModelId: string, authToken: string, ): Promise { - const authClient: AuthClient = { + const authClient: AuthorizationClient = { getAccessToken: function (): Promise { return Promise.resolve(authToken); }, @@ -69,30 +71,6 @@ export class ChangesetGroup { } } - public async runGroupComparison( - iModelToken: IModelRpcProps, - startChangesetIdWithIndex: ChangesetIdWithIndex, - endChangesetIdWithIndex: ChangesetIdWithIndex, - authToken: string, - ): Promise { - const iModelId = iModelToken.iModelId!; - - const changesetPaths = await this._downloadChangesetFiles( - startChangesetIdWithIndex, - endChangesetIdWithIndex, - iModelId, - authToken, - ); - - const db = IModelDb.findByKey(iModelToken.key); - const changedECInstances = await this._getGroupedChangesetChanges( - changesetPaths, - db, - ); - - return { changedInstances: changedECInstances }; - } - /** * Get all changes from the range of changesets, grouped together as if they were a single changeset. * The type of change is automatically resolved by the grouping (e.g., updated + deleted = deleted). @@ -133,11 +111,45 @@ export class ChangesetGroup { } // Use any passed processor to process the instances - const comparisonProcessor = this._processingOpts?.processor; + const comparisonProcessor = this._processingOpts?.enricher; if (comparisonProcessor) { return await comparisonProcessor.processChangedInstances(db, instances); } return instances; } + + /** + * Returns the changed ec instances from the range of changesets. + * This results in downloading all changeset files in the range and processing them. + * @param iModelToken + * @param startChangesetIdWithIndex + * @param endChangesetIdWithIndex + * @param authToken + * @returns + */ + public async getChangedInstances( + iModelToken: IModelRpcProps, + startChangesetIdWithIndex: ChangesetIdWithIndex, + endChangesetIdWithIndex: ChangesetIdWithIndex, + authToken: string, + ): Promise { + const iModelId = iModelToken.iModelId!; + + const changesetPaths = await this._downloadChangesetFiles( + startChangesetIdWithIndex, + endChangesetIdWithIndex, + iModelId, + authToken, + ); + + const db = IModelDb.findByKey(iModelToken.key); + const changedECInstances = await this._getGroupedChangesetChanges( + changesetPaths, + db, + ); + + return { changedInstances: changedECInstances }; + } + } diff --git a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts b/packages/test-app-backend/src/ChangesEnricher.ts similarity index 52% rename from packages/test-app-backend/src/OpenSiteComparisonHandler.ts rename to packages/test-app-backend/src/ChangesEnricher.ts index 1338bab4..3b579ecc 100644 --- a/packages/test-app-backend/src/OpenSiteComparisonHandler.ts +++ b/packages/test-app-backend/src/ChangesEnricher.ts @@ -2,22 +2,18 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -import { ChangedECInstance, ElementDrivesElement, IModelDb } from "@itwin/core-backend"; +import { ChangedECInstance, IModelDb } from "@itwin/core-backend"; import { Id64String } from "@itwin/core-bentley"; -import { ChangedElements, QueryBinder, TypeOfChange } from "@itwin/core-common"; -import { ExtendedTypeOfChange } from "./ChangedElementsGroupHelper"; +import { QueryBinder, TypeOfChange } from "@itwin/core-common"; +import { ExtendedTypeOfChange } from "./ChangedInstancesProcessor"; import { getTypeOfChange } from "./TypeOfChange"; +import { RelationshipClassWithDirection } from "./RPC/ChangesRpcInterface"; export interface InstanceKey { className: string; id: string; } -export interface RelationshipClassWithDirection { - className: string; - reverse: boolean; -} - /** * Query the class id based on a class name * @param db @@ -47,28 +43,6 @@ const getInheritedClassIdsOfMany = async (db: IModelDb, classIds: string[], reve return results.map((row) => row[0]); }; -/** - * Removes changed elements in the given indices from the changed elements - * @param changedElements - * @param indices - */ -const removeChangedElementsIndices = (changedElements: ChangedElements, indices: number[]) => { - // Remove indices in reverse order to avoid index shifting - const indicesArray = indices.sort((a, b) => b - a); - for (const index of indicesArray) { - changedElements.elements.splice(index, 1); - changedElements.type.splice(index, 1); - changedElements.opcodes.splice(index, 1); - changedElements.classIds.splice(index, 1); - changedElements.parentClassIds?.splice(index, 1); - changedElements.parentIds?.splice(index, 1); - changedElements.modelIds?.splice(index, 1); - changedElements.newChecksums?.splice(index, 1); - changedElements.oldChecksums?.splice(index, 1); - changedElements.properties?.splice(index, 1); - } -}; - /** * Returns all inherited classes of a given class recursively * @param db @@ -81,26 +55,42 @@ const getInheritedClassIds = async (db: IModelDb, className: string, reverse?: b return new Set([classId, ...inheritedClassIds]); }; -export interface ComparisonProcessor { +export interface ChangesEnricher { /** Called after all changes are put together with partial unifier */ processChangedInstances: (db: IModelDb, instances: ChangedECInstance[]) => Promise; } /** - * Processor for OpenSite specific changes - * 1. Marks elements that are driven by other elements as driven - * 2. Marks those driven elements as Updates instead of Delete + Insert - * 3. Marks the spatial containment of the driven elements as driven based on the OpenSite schema + * Options for the RelatedChangesInspector */ -export class OpenSiteProcessor implements ComparisonProcessor { - private _drivenInstances: ChangedECInstance[] = []; - private _nonDrivenInstances: ChangedECInstance[] = []; - - private getDrivenRelationshipClassNamesForDomain(): RelationshipClassWithDirection[] { - return [ - { className: ElementDrivesElement.className, reverse: false }, - { className: "SpatialOrganizerHoldsSpatialElements", reverse: false }, - ]; +export interface RelatedChangesInspectorOptions { + relationships?: RelationshipClassWithDirection[]; +} + +interface IdWithRelationship { + id: Id64String; + relationship: RelationshipClassWithDirection; +} + +interface RelatedClassIds { + relationship: RelationshipClassWithDirection; + relatedClassIds: Id64String[]; +} + +/** + * Processor for enriching ChangedECInstances with additional information + * This processor does the following: + * 1. Finds all relationships that may be relevant to the consumer + * 2. Marks those related elements as Updates instead of Delete + Insert + */ +export class RelatedChangesEnricher implements ChangesEnricher { + private _relationships: RelationshipClassWithDirection[] = []; + + public constructor(opts?: RelatedChangesInspectorOptions) { + // If relationships are provided, they can be used to filter driven elements + if (opts?.relationships) { + this._relationships = opts.relationships; + } } /** @@ -108,14 +98,19 @@ export class OpenSiteProcessor implements ComparisonProcessor { * @param db * @returns */ - private async getDrivenTargetClassIds(db: IModelDb): Promise> { - const drivenClassNames = this.getDrivenRelationshipClassNamesForDomain(); - const relClassIds = new Set(); + private async getDrivenTargetClassIds(db: IModelDb): Promise { + const drivenClassNames = this._relationships; + const relatedClassIds: RelatedClassIds[] = []; for (const relClass of drivenClassNames) { + const relClassIds = new Set(); const currentClassIds = await getInheritedClassIds(db, relClass.className, relClass.reverse); currentClassIds.forEach((classId) => relClassIds.add(classId)); + relatedClassIds.push({ + relationship: relClass, + relatedClassIds: Array.from(relClassIds), + }); } - return relClassIds; + return relatedClassIds; } /** TODO: Should become a separate utility function / not dependent on this "comparison processor" */ @@ -124,48 +119,65 @@ export class OpenSiteProcessor implements ComparisonProcessor { } /** - * Finds all relevant driven class elements + * Return the relevant related class ids to the instance + * @param relatedClassIds + * @param instance + * @returns + */ + private getRelatedClassIdsToInstance(relatedClassIds: RelatedClassIds[], instance: ChangedECInstance): RelatedClassIds | undefined { + for (const relatedClass of relatedClassIds) { + if (relatedClass.relatedClassIds.includes(instance.ECClassId!)) { + return relatedClass; + } + } + return undefined; + } + + /** + * Enriches the ChangedECInstances with additional information regarding relationships that drive changes. * @param db * @param instances */ public async processChangedInstances(db: IModelDb, instances: ChangedECInstance[]): Promise { - const driveForwardMap = new Map(); - const driveBackwardMap = new Map(); + const driveForwardMap = new Map(); + const driveBackwardMap = new Map(); const drivenElements = new Set(); // Find all class ids that inherit from ElementDrivesElement - const elementDrivesElementClasses = await this.getDrivenTargetClassIds(db); + const relatedClassIds = await this.getDrivenTargetClassIds(db); - // Find driven elements + // Find relevant relationships that the consumer is interested in for (const instance of instances) { - if (instance.ECClassId && elementDrivesElementClasses.has(instance.ECClassId)) { - const source = instance.SourceECInstanceId; - const target = instance.TargetECInstanceId; - // TODO: Do we care about class ids here - // const sourceClassId = instance.SourceECClassId; - // const targetClassId = instance.TargetECClassId; - drivenElements.add(target); - const driveBackwardEntry = driveBackwardMap.get(`${target}`); - if (driveBackwardEntry) { - driveBackwardEntry.push(`${source}`); - } else { - driveBackwardMap.set(`${target}`, [`${source}`]); - } + const relatedClass = this.getRelatedClassIdsToInstance(relatedClassIds, instance); + if (!relatedClass) { + // Skip if no related class is found + continue; + } - const driveForwardEntry = driveForwardMap.get(`${source}`); - if (driveForwardEntry) { - driveForwardEntry.push(`${target}`); - } - else { - driveForwardMap.set(`${source}`, [`${target}`]); - } + // If the instance is a relationship, we need to find the source and target elements + const source = instance.SourceECInstanceId; + const target = instance.TargetECInstanceId; + // TODO: Do we care about class ids here + // const sourceClassId = instance.SourceECClassId; + // const targetClassId = instance.TargetECClassId; + drivenElements.add(target); + const driveBackwardEntry = driveBackwardMap.get(`${target}`); + if (driveBackwardEntry) { + driveBackwardEntry.push({ id: source, relationship: relatedClass.relationship }); + } else { + driveBackwardMap.set(`${target}`, [{ id: source, relationship: relatedClass.relationship }]); } - } - this._drivenInstances = instances.filter((instance) => drivenElements.has(`${instance.ECInstanceId}`)); - this._nonDrivenInstances = instances.filter((instance) => !drivenElements.has(`${instance.ECInstanceId}`)); + const driveForwardEntry = driveForwardMap.get(`${source}`); + if (driveForwardEntry) { + driveForwardEntry.push({ id: target, relationship: relatedClass.relationship }); + } + else { + driveForwardMap.set(`${source}`, [{ id: target, relationship: relatedClass.relationship }]); + } + } - // Enrich data with type of change + // Enrich data for (const instance of instances) { instance["$comparison"] = {}; if (instance.$meta?.op === "Updated") { @@ -175,6 +187,7 @@ export class OpenSiteProcessor implements ComparisonProcessor { if (backwards) { instance["$comparison"].type = ExtendedTypeOfChange.Driven; instance["$comparison"].drivenBy = backwards; + // TODO: This opcode transformation should happen in the app, not in this interface if (instance.$meta) { instance.$meta.op = "Updated"; } diff --git a/packages/test-app-backend/src/RPC/ChangesRpcImpl.ts b/packages/test-app-backend/src/RPC/ChangesRpcImpl.ts new file mode 100644 index 00000000..843dda98 --- /dev/null +++ b/packages/test-app-backend/src/RPC/ChangesRpcImpl.ts @@ -0,0 +1,25 @@ +import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; +import { ChangedInstancesResult, ChangesRpcInterface, RelationshipClassWithDirection } from "./ChangesRpcInterface"; +import { ChangedInstancesProcessor } from "../ChangedInstancesProcessor"; +import { RelatedChangesEnricher } from "../ChangesEnricher"; + +/** + * RPC implementation for changes querying + */ +export class ChangesRpcImpl extends RpcInterface implements ChangesRpcInterface { + /** + * Returns changes between two changesets. + * @param iModelToken + * @param startChangeset + * @param endChangeset + * @param relationships + * @param authToken + * @returns + */ + public async getChangedInstances(iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, relationships: RelationshipClassWithDirection[], authToken: string): Promise { + // Create instance + const changesetGroup = new ChangedInstancesProcessor({ enricher: new RelatedChangesEnricher({ relationships })}); + // Run changeset group comparison + return changesetGroup.getChangedInstances(iModelToken, startChangeset, endChangeset, authToken); + } +} diff --git a/packages/test-app-backend/src/RPC/ChangesRpcInterface.ts b/packages/test-app-backend/src/RPC/ChangesRpcInterface.ts new file mode 100644 index 00000000..43ce57b3 --- /dev/null +++ b/packages/test-app-backend/src/RPC/ChangesRpcInterface.ts @@ -0,0 +1,40 @@ +/* eslint-disable prefer-rest-params */ +/* eslint-disable prefer-spread */ +import { ChangedECInstance } from "@itwin/core-backend"; +import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex } from "@itwin/core-common"; + +/** + * Interface for the result of a changeset group RPC call. + */ +export interface ChangedInstancesResult { + changedInstances: ChangedECInstance[]; +} + +/** + * Interface for providing relationship class names and their direction for categorizing changes driven by relationships. + */ +export interface RelationshipClassWithDirection { + className: string; + reverse: boolean; +} + +/** + * RPC interface for querying changes between two changesets. + */ +export abstract class ChangesRpcInterface extends RpcInterface { + public static readonly interfaceName = "ChangesRpcInterface"; // The immutable name of the interface + public static interfaceVersion = "0.0.1"; // The API version of the interface + public static getClient() { + return RpcManager.getClientForInterface(this); + } + + public async getChangedInstances( + iModelToken: IModelRpcProps, + startChangeset: ChangesetIdWithIndex, + endChangeset: ChangesetIdWithIndex, + relationships: RelationshipClassWithDirection[], + authToken: string, + ): Promise { + return this.forward(arguments); + } +} diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts deleted file mode 100644 index bda6ff72..00000000 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCImpl.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ChangesetIdWithIndex, IModelRpcProps, RpcInterface } from "@itwin/core-common"; -import { ChangesetGroupResult, ChangesetGroupRPCInterface } from "./ChangesetGroupRPCInterface"; -import { ChangesetGroup } from "../ChangedElementsGroupHelper"; -import { OpenSiteProcessor } from "../OpenSiteComparisonHandler"; - -/** - * RPC implementation for changes querying - */ -export class ChangesetGroupRPCImpl extends RpcInterface implements ChangesetGroupRPCInterface { - /** - * Returns changes between two changesets. - * @param iModelToken - * @param startChangeset - * @param endChangeset - * @param authToken - * @returns - */ - public async getChangesetGroup(iModelToken: IModelRpcProps, startChangeset: ChangesetIdWithIndex, endChangeset: ChangesetIdWithIndex, authToken: string): Promise { - // Create instance - const changesetGroup = new ChangesetGroup({ processor: new OpenSiteProcessor()}); - // Run changeset group comparison - return changesetGroup.runGroupComparison(iModelToken, startChangeset, endChangeset, authToken); - } -} diff --git a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts b/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts deleted file mode 100644 index 0dd6492b..00000000 --- a/packages/test-app-backend/src/RPC/ChangesetGroupRPCInterface.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable prefer-rest-params */ -/* eslint-disable prefer-spread */ -import { ChangedECInstance } from "@itwin/core-backend"; -import { RpcInterface, RpcManager, IModelRpcProps, ChangesetIdWithIndex } from "@itwin/core-common"; - -export interface ChangesetGroupResult { - changedInstances: ChangedECInstance[]; -} -export abstract class ChangesetGroupRPCInterface extends RpcInterface { - public static readonly interfaceName = "ChangesetGroupRBCInterface"; // The immutable name of the interface - public static interfaceVersion = "0.0.1"; // The API version of the interface - public static getClient() { - return RpcManager.getClientForInterface(this); - } - - public async getChangesetGroup( - iModelToken: IModelRpcProps, - startChangeset: ChangesetIdWithIndex, - endChangeset: ChangesetIdWithIndex, - authToken: string, - ): Promise { - return this.forward(arguments); - } -} diff --git a/packages/test-app-backend/src/main.ts b/packages/test-app-backend/src/main.ts index 23f2da01..9620f979 100644 --- a/packages/test-app-backend/src/main.ts +++ b/packages/test-app-backend/src/main.ts @@ -12,8 +12,8 @@ import { IModelsClient } from "@itwin/imodels-client-authoring"; import { Presentation } from "@itwin/presentation-backend"; import { PresentationRpcInterface } from "@itwin/presentation-common"; import { config } from "dotenv-flow"; -import { ChangesetGroupRPCInterface } from "./RPC/ChangesetGroupRPCInterface"; -import { ChangesetGroupRPCImpl } from "./RPC/ChangesetGroupRPCImpl"; +import { ChangesRpcInterface } from "./RPC/ChangesRpcInterface"; +import { ChangesRpcImpl } from "./RPC/ChangesRpcImpl"; config({ path: "../test-app-frontend" }); @@ -29,10 +29,10 @@ void (async () => { ), }); Presentation.initialize(); - RpcManager.registerImpl(ChangesetGroupRPCInterface, ChangesetGroupRPCImpl); + RpcManager.registerImpl(ChangesRpcInterface, ChangesRpcImpl); const rpcConfig = BentleyCloudRpcManager.initializeImpl( { info: { title: "test-app-backend", version: "v1.0" } }, - [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesetGroupRPCInterface], + [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesRpcInterface], ); const app = express(); const server = new IModelJsExpressServer(rpcConfig.protocol); diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index b248d9da..e2e4fb12 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -31,7 +31,7 @@ import { useToaster } from "@itwin/itwinui-react"; import { PresentationRpcInterface } from "@itwin/presentation-common"; import { Presentation } from "@itwin/presentation-frontend"; import { useEffect, useMemo, useState, type ReactElement } from "react"; -import { ChangesetGroupRPCInterface } from "../../../../test-app-backend/src/RPC/ChangesetGroupRPCInterface.js" +import { ChangesRpcInterface, RelationshipClassWithDirection } from "../../../../test-app-backend/src/RPC/ChangesRpcInterface.js" import { applyUrlPrefix, localBackendPort, runExperimental, usingLocalBackend } from "../../environment.js"; import { LoadingScreen } from "../common/LoadingScreen.js"; import { AppUiVisualizationHandler } from "./AppUi/AppUiVisualizationHandler.js"; @@ -157,7 +157,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli BentleyCloudRpcManager.initializeClient( rpcParams, - [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesetGroupRPCInterface], + [IModelReadRpcInterface, IModelTileRpcInterface, PresentationRpcInterface, ChangesRpcInterface], ); await Promise.all([ @@ -167,9 +167,14 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli ]); - const changesetProcessor = async (startChangedset: ChangesetIdWithIndex, endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { - const client = ChangesetGroupRPCInterface.getClient(); - return client.getChangesetGroup(iModelConnection.getRpcProps(), startChangedset, endChangedset, await authorizationClient.getAccessToken()); + const changesProvider = async (startChangedset: ChangesetIdWithIndex, endChangedset: ChangesetIdWithIndex, iModelConnection: IModelConnection) => { + const client = ChangesRpcInterface.getClient(); + // Relationships we want for categorizing changes driven by relationships + const relationships: RelationshipClassWithDirection[] = [ + { className: "ElementDrivesElement", reverse: false }, + { className: "SpatialOrganizerHoldsSpatialElements", reverse: false }, + ]; + return client.getChangedInstances(iModelConnection.getRpcProps(), startChangedset, endChangedset, relationships, await authorizationClient.getAccessToken()); } VersionCompare.initialize({ @@ -182,7 +187,7 @@ export async function initializeITwinJsApp(authorizationClient: AuthorizationCli { frontstageIds: [MainFrontstageProvider.name] }, ), featureTracking: featureTrackingTesterFunctions, - changesetProcessor, + changesProvider: changesProvider, }); ReducerRegistryInstance.registerReducer("versionCompareState", VersionCompareReducer); From fc7d7083122bf42b9f041d21459aba0edd9d932e Mon Sep 17 00:00:00 2001 From: Diego Pinate Date: Tue, 15 Jul 2025 13:45:10 -0400 Subject: [PATCH 27/42] Fix visualization after merge conflicts --- .../src/api/VersionCompareTiles.ts | 3 ++- .../src/widgets/EnhancedElementsInspector.tsx | 24 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/changed-elements-react/src/api/VersionCompareTiles.ts b/packages/changed-elements-react/src/api/VersionCompareTiles.ts index eab1b229..0294908a 100644 --- a/packages/changed-elements-react/src/api/VersionCompareTiles.ts +++ b/packages/changed-elements-react/src/api/VersionCompareTiles.ts @@ -408,7 +408,8 @@ export class Provider // Check if user is emphasizing some elements, and if so, only override said elements if (this._internalAlwaysDrawn.size === 0 || this._internalAlwaysDrawn.has(elem.id)) { // TODO: Appropriate type of change enum - const appearance = (elem.type & 64) !== 0 + const isDriven = (elem.type & 64) !== 0; // 64 is the "driven" bit + const appearance = isDriven ? driven : elem.indirect ? updatedIndirectly diff --git a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx index 25723606..5e974773 100644 --- a/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx +++ b/packages/changed-elements-react/src/widgets/EnhancedElementsInspector.tsx @@ -856,6 +856,16 @@ export class ChangedElementsListComponent extends Component